summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build_cmake.yml8
-rw-r--r--CMakeLists.txt3
-rw-r--r--Doxyfile3
-rw-r--r--addon/doxmlparser/CMakeLists.txt24
-rw-r--r--addon/doxmlparser/Doxyfile334
-rw-r--r--addon/doxmlparser/Doxyfile.impl334
-rw-r--r--addon/doxmlparser/LICENSE339
-rw-r--r--addon/doxmlparser/README.md10
-rw-r--r--addon/doxmlparser/doxmlparser/__init__.py2
-rw-r--r--addon/doxmlparser/doxmlparser/compound.py22358
-rw-r--r--addon/doxmlparser/doxmlparser/index.py1621
-rw-r--r--addon/doxmlparser/examples/CMakeLists.txt2
-rw-r--r--addon/doxmlparser/examples/dump/dump.py31
-rw-r--r--addon/doxmlparser/examples/metrics/CMakeLists.txt18
-rw-r--r--addon/doxmlparser/examples/metrics/main.cpp271
-rw-r--r--addon/doxmlparser/examples/metrics/metrics.py225
-rw-r--r--addon/doxmlparser/include/doxmlintf.h1141
-rw-r--r--addon/doxmlparser/requirements.txt2
-rw-r--r--addon/doxmlparser/setup.py19
-rw-r--r--addon/doxmlparser/src/CMakeLists.txt18
-rw-r--r--addon/doxmlparser/src/basehandler.cpp3
-rw-r--r--addon/doxmlparser/src/basehandler.h325
-rw-r--r--addon/doxmlparser/src/baseiterator.h50
-rw-r--r--addon/doxmlparser/src/compoundhandler.cpp655
-rw-r--r--addon/doxmlparser/src/compoundhandler.h237
-rw-r--r--addon/doxmlparser/src/debug.cpp24
-rw-r--r--addon/doxmlparser/src/debug.h7
-rw-r--r--addon/doxmlparser/src/dochandler.cpp2240
-rw-r--r--addon/doxmlparser/src/dochandler.h1352
-rw-r--r--addon/doxmlparser/src/graphhandler.cpp216
-rw-r--r--addon/doxmlparser/src/graphhandler.h154
-rw-r--r--addon/doxmlparser/src/linkedtexthandler.cpp133
-rw-r--r--addon/doxmlparser/src/linkedtexthandler.h54
-rw-r--r--addon/doxmlparser/src/loamhandler.cpp77
-rw-r--r--addon/doxmlparser/src/loamhandler.h52
-rw-r--r--addon/doxmlparser/src/mainhandler.cpp301
-rw-r--r--addon/doxmlparser/src/mainhandler.h82
-rw-r--r--addon/doxmlparser/src/memberhandler.cpp600
-rw-r--r--addon/doxmlparser/src/memberhandler.h252
-rw-r--r--addon/doxmlparser/src/paramhandler.cpp158
-rw-r--r--addon/doxmlparser/src/paramhandler.h103
-rw-r--r--addon/doxmlparser/src/sectionhandler.cpp170
-rw-r--r--addon/doxmlparser/src/sectionhandler.h102
-rw-r--r--addon/doxmlparser/src/stringimpl.h38
-rw-r--r--addon/doxmlparser/test/CMakeLists.txt18
-rw-r--r--addon/doxmlparser/test/main.cpp776
-rw-r--r--addon/doxyapp/CMakeLists.txt1
-rw-r--r--addon/doxyparse/CMakeLists.txt1
-rw-r--r--addon/doxysearch/CMakeLists.txt4
-rw-r--r--addon/doxysearch/doxyindexer.cpp123
-rwxr-xr-xaddon/doxywizard/doxywizard.cpp4
-rw-r--r--addon/doxywizard/expert.cpp16
-rw-r--r--addon/doxywizard/inputstrlist.cpp6
-rwxr-xr-xcmake/FindJavacc.cmake12
-rw-r--r--cmake/FindgenerateDS.cmake19
-rw-r--r--doc/customize.doc144
-rw-r--r--doc/preprocessing.doc4
-rw-r--r--doc/starting.doc3
-rw-r--r--doc/trouble.doc3
-rw-r--r--doc/xmlcmds.doc2
-rw-r--r--libxml/CMakeLists.txt19
-rw-r--r--libxml/xml.h (renamed from src/xml.h)18
-rw-r--r--libxml/xml.l (renamed from src/xml.l)20
-rw-r--r--qtools/CMakeLists.txt3
-rw-r--r--qtools/qcstringlist.cpp1
-rw-r--r--qtools/qdatetime.cpp1455
-rw-r--r--qtools/qdatetime.h217
-rw-r--r--qtools/qdir.cpp6
-rw-r--r--qtools/qdir.h12
-rw-r--r--qtools/qdir_unix.cpp4
-rw-r--r--qtools/qfileinfo.cpp3
-rw-r--r--qtools/qfileinfo.h8
-rw-r--r--qtools/qfileinfo_unix.cpp39
-rw-r--r--qtools/qfileinfo_win32.cpp51
-rw-r--r--qtools/qmap.cpp254
-rw-r--r--qtools/qmap_p.h607
-rw-r--r--qtools/qxml.cpp6061
-rw-r--r--qtools/qxml.h671
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/bufstr.h24
-rw-r--r--src/code.l200
-rw-r--r--src/config.xml17
-rw-r--r--src/constexp.h13
-rw-r--r--src/constexp.l6
-rw-r--r--src/constexp.y43
-rw-r--r--src/constexp_p.h18
-rw-r--r--src/context.cpp6
-rw-r--r--src/cppvalue.cpp33
-rw-r--r--src/cppvalue.h30
-rw-r--r--src/debug.cpp3
-rw-r--r--src/debug.h3
-rw-r--r--src/docparser.cpp17
-rw-r--r--src/dotgroupcollaboration.cpp1
-rw-r--r--src/doxygen.cpp59
-rw-r--r--src/doxygen.h2
-rw-r--r--src/groupdef.cpp11
-rw-r--r--src/index.cpp7
-rw-r--r--src/layout.cpp5
-rw-r--r--src/message.cpp8
-rw-r--r--src/message.h1
-rw-r--r--src/pre.l7
-rw-r--r--src/rtfgen.cpp12
-rw-r--r--src/scanner.l2
-rw-r--r--src/tagreader.cpp3
-rw-r--r--src/util.cpp58
-rw-r--r--src/vhdldocgen.cpp5
-rw-r--r--templates/html/search.js6
107 files changed, 25233 insertions, 20105 deletions
diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml
index 6071771..9708ae1 100644
--- a/.github/workflows/build_cmake.yml
+++ b/.github/workflows/build_cmake.yml
@@ -15,28 +15,28 @@ jobs:
os: ubuntu-18.04,
build_type: "Release", cc: "gcc", cxx: "g++",
build_gen: "Unix Makefiles",
- cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES -Dbuild_xmlparser=YES"
+ cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES -Dbuild_xmlparser=YES -Duse_sqlite3=ON"
}
- {
name: "Ubuntu Latest GCC Debug",
os: ubuntu-18.04,
build_type: "Debug", cc: "gcc", cxx: "g++",
build_gen: "Unix Makefiles",
- cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES -Dbuild_xmlparser=YES"
+ cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES -Dbuild_xmlparser=YES -Duse_sqlite3=ON"
}
- {
name: "Ubuntu Latest Clang Release",
os: ubuntu-20.04,
build_type: "Release", cc: "clang", cxx: "clang++",
build_gen: "Unix Makefiles",
- cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
+ cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO -Duse_sqlite3=ON"
}
- {
name: "Ubuntu Latest Clang Debug",
os: ubuntu-20.04,
build_type: "Debug", cc: "clang", cxx: "clang++",
build_gen: "Unix Makefiles",
- cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
+ cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO -Duse_sqlite3=ON"
}
- {
name: "macOS Latest Release",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 06b9696..7f4a904 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,7 @@ 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_parse "Parses source code and dumps the dependencies between the code elements." OFF)
-option(build_xmlparser "Example showing how to parse doxygen's XML output." OFF)
+option(build_xmlparser "Automatically update the XML parser modules when updating the schema files." OFF)
option(build_search "Build external search tools (doxysearch and doxyindexer)" OFF)
option(build_doc "Build user manual (HTML and PDF)" OFF)
option(build_doc_chm "Build user manual (CHM)" OFF)
@@ -173,6 +173,7 @@ add_subdirectory(libmd5)
add_subdirectory(liblodepng)
add_subdirectory(libmscgen)
add_subdirectory(libversion)
+add_subdirectory(libxml)
add_subdirectory(qtools)
add_subdirectory(vhdlparser)
add_subdirectory(src)
diff --git a/Doxyfile b/Doxyfile
index 44eb5b5..9707769 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -141,7 +141,6 @@ VERBATIM_HEADERS = YES
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
-COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
@@ -328,5 +327,5 @@ DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = NO
-DOT_MAX_FOLD = 17
+DOT_WRAP_THRESHOLD = 17
DOT_UML_DETAILS = NO
diff --git a/addon/doxmlparser/CMakeLists.txt b/addon/doxmlparser/CMakeLists.txt
index 8456d2a..6ef5568 100644
--- a/addon/doxmlparser/CMakeLists.txt
+++ b/addon/doxmlparser/CMakeLists.txt
@@ -1,4 +1,22 @@
+find_package(generateDS)
+if (GENERATEDS_FOUND)
+ add_custom_command(
+ COMMENT "Updating index.py from index.xsd..."
+ COMMAND ${GENERATEDS_EXECUTABLE} --no-dates --no-versions -f -o ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/index.py ${PROJECT_SOURCE_DIR}/templates/xml/index.xsd
+ DEPENDS ${PROJECT_SOURCE_DIR}/templates/xml/index.xsd
+ OUTPUT ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/index.py
+ )
+ add_custom_command(
+ COMMENT "Updating compound.py from compound.xsd..."
+ COMMAND ${GENERATEDS_EXECUTABLE} --no-dates --no-versions -f -o ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/compound.py ${PROJECT_SOURCE_DIR}/templates/xml/compound.xsd
+ DEPENDS ${PROJECT_SOURCE_DIR}/templates/xml/compound.xsd
+ OUTPUT ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/compound.py
+ )
+ add_custom_target(
+ update_doxmlparser_files ALL
+ DEPENDS ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/index.py
+ DEPENDS ${PROJECT_SOURCE_DIR}/addon/doxmlparser/doxmlparser/compound.py
+ COMMENT "Updating doxmlparser module..."
+ )
+endif()
-add_subdirectory(src)
-add_subdirectory(examples)
-add_subdirectory(test)
diff --git a/addon/doxmlparser/Doxyfile b/addon/doxmlparser/Doxyfile
deleted file mode 100644
index 18359a0..0000000
--- a/addon/doxmlparser/Doxyfile
+++ /dev/null
@@ -1,334 +0,0 @@
-# Doxyfile 1.8.17
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING = UTF-8
-PROJECT_NAME = doxmlparser
-PROJECT_NUMBER =
-PROJECT_BRIEF =
-PROJECT_LOGO =
-OUTPUT_DIRECTORY = doc
-CREATE_SUBDIRS = NO
-ALLOW_UNICODE_NAMES = NO
-OUTPUT_LANGUAGE = English
-OUTPUT_TEXT_DIRECTION = None
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = NO
-JAVADOC_BANNER = NO
-QT_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-OPTIMIZE_FOR_FORTRAN = NO
-OPTIMIZE_OUTPUT_VHDL = NO
-OPTIMIZE_OUTPUT_SLICE = NO
-EXTENSION_MAPPING =
-MARKDOWN_SUPPORT = YES
-TOC_INCLUDE_HEADINGS = 5
-AUTOLINK_SUPPORT = YES
-BUILTIN_STL_SUPPORT = NO
-CPP_CLI_SUPPORT = NO
-SIP_SUPPORT = NO
-IDL_PROPERTY_SUPPORT = YES
-DISTRIBUTE_GROUP_DOC = NO
-GROUP_NESTED_COMPOUNDS = NO
-SUBGROUPING = YES
-INLINE_GROUPED_CLASSES = NO
-INLINE_SIMPLE_STRUCTS = NO
-TYPEDEF_HIDES_STRUCT = NO
-LOOKUP_CACHE_SIZE = 0
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_PRIV_VIRTUAL = NO
-EXTRACT_PACKAGE = NO
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-EXTRACT_ANON_NSPACES = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-HIDE_SCOPE_NAMES = NO
-HIDE_COMPOUND_REFERENCE= NO
-SHOW_INCLUDE_FILES = YES
-SHOW_GROUPED_MEMB_INC = NO
-FORCE_LOCAL_INCLUDES = NO
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-SORT_MEMBERS_CTORS_1ST = NO
-SORT_GROUP_NAMES = NO
-SORT_BY_SCOPE_NAME = NO
-STRICT_PROTO_MATCHING = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_FILES = YES
-SHOW_NAMESPACES = YES
-FILE_VERSION_FILTER =
-LAYOUT_FILE =
-CITE_BIB_FILES =
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_AS_ERROR = NO
-WARN_FORMAT =
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = include
-INPUT_ENCODING = UTF-8
-FILE_PATTERNS = *.h
-RECURSIVE = NO
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXCLUDE_SYMBOLS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS =
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-FILTER_SOURCE_PATTERNS =
-USE_MDFILE_AS_MAINPAGE =
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = YES
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-REFERENCES_LINK_SOURCE = YES
-SOURCE_TOOLTIPS = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT =
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_EXTRA_STYLESHEET =
-HTML_EXTRA_FILES =
-HTML_COLORSTYLE_HUE = 220
-HTML_COLORSTYLE_SAT = 100
-HTML_COLORSTYLE_GAMMA = 80
-HTML_TIMESTAMP = NO
-HTML_DYNAMIC_MENUS = YES
-HTML_DYNAMIC_SECTIONS = NO
-HTML_INDEX_NUM_ENTRIES = 100
-GENERATE_DOCSET = NO
-DOCSET_FEEDNAME = "Doxygen generated docs"
-DOCSET_BUNDLE_ID = org.doxygen.Project
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-DOCSET_PUBLISHER_NAME = Publisher
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-CHM_INDEX_ENCODING =
-BINARY_TOC = NO
-TOC_EXPAND = NO
-GENERATE_QHP = NO
-QCH_FILE =
-QHP_NAMESPACE = org.doxygen.Project
-QHP_VIRTUAL_FOLDER = doc
-QHP_CUST_FILTER_NAME =
-QHP_CUST_FILTER_ATTRS =
-QHP_SECT_FILTER_ATTRS =
-QHG_LOCATION =
-GENERATE_ECLIPSEHELP = NO
-ECLIPSE_DOC_ID = org.doxygen.Project
-DISABLE_INDEX = NO
-GENERATE_TREEVIEW = NO
-ENUM_VALUES_PER_LINE = 4
-TREEVIEW_WIDTH = 250
-EXT_LINKS_IN_WINDOW = NO
-FORMULA_FONTSIZE = 10
-FORMULA_TRANSPARENT = YES
-USE_MATHJAX = NO
-MATHJAX_FORMAT = HTML-CSS
-MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
-MATHJAX_EXTENSIONS =
-MATHJAX_CODEFILE =
-SEARCHENGINE = NO
-SERVER_BASED_SEARCH = NO
-EXTERNAL_SEARCH = NO
-SEARCHENGINE_URL =
-SEARCHDATA_FILE = searchdata.xml
-EXTERNAL_SEARCH_ID =
-EXTRA_SEARCH_MAPPINGS =
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = NO
-LATEX_OUTPUT =
-LATEX_CMD_NAME =
-MAKEINDEX_CMD_NAME = makeindex
-LATEX_MAKEINDEX_CMD = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-LATEX_FOOTER =
-LATEX_EXTRA_STYLESHEET =
-LATEX_EXTRA_FILES =
-PDF_HYPERLINKS = NO
-USE_PDFLATEX = NO
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-LATEX_SOURCE_CODE = NO
-LATEX_BIB_STYLE = plain
-LATEX_TIMESTAMP = NO
-LATEX_EMOJI_DIRECTORY =
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT =
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-RTF_SOURCE_CODE = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT =
-MAN_EXTENSION =
-MAN_SUBDIR =
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = YES
-XML_OUTPUT = xml
-XML_PROGRAMLISTING = YES
-XML_NS_MEMB_FILE_SCOPE = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-GENERATE_DOCBOOK = NO
-DOCBOOK_OUTPUT = docbook
-DOCBOOK_PROGRAMLISTING = NO
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-TAGFILES = ../../qtools_docs/qtools.tag=../../../../qtools_docs/html
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-EXTERNAL_PAGES = YES
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = NO
-DIA_PATH =
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = NO
-DOT_NUM_THREADS = 0
-DOT_FONTNAME = Helvetica
-DOT_FONTSIZE = 10
-DOT_FONTPATH =
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-UML_LIMIT_NUM_FIELDS = 10
-TEMPLATE_RELATIONS = YES
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DOT_IMAGE_FORMAT = png
-INTERACTIVE_SVG = NO
-DOT_PATH =
-DOTFILE_DIRS =
-MSCFILE_DIRS =
-DIAFILE_DIRS =
-PLANTUML_JAR_PATH =
-PLANTUML_CFG_FILE =
-PLANTUML_INCLUDE_PATH =
-DOT_GRAPH_MAX_NODES = 50
-MAX_DOT_GRAPH_DEPTH = 0
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
diff --git a/addon/doxmlparser/Doxyfile.impl b/addon/doxmlparser/Doxyfile.impl
deleted file mode 100644
index 9bfc85e..0000000
--- a/addon/doxmlparser/Doxyfile.impl
+++ /dev/null
@@ -1,334 +0,0 @@
-# Doxyfile 1.8.17
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING = UTF-8
-PROJECT_NAME = doxmlparser
-PROJECT_NUMBER =
-PROJECT_BRIEF =
-PROJECT_LOGO =
-OUTPUT_DIRECTORY = doc_impl
-CREATE_SUBDIRS = NO
-ALLOW_UNICODE_NAMES = NO
-OUTPUT_LANGUAGE = English
-OUTPUT_TEXT_DIRECTION = None
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = NO
-JAVADOC_BANNER = NO
-QT_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-OPTIMIZE_FOR_FORTRAN = NO
-OPTIMIZE_OUTPUT_VHDL = NO
-OPTIMIZE_OUTPUT_SLICE = NO
-EXTENSION_MAPPING =
-MARKDOWN_SUPPORT = YES
-TOC_INCLUDE_HEADINGS = 5
-AUTOLINK_SUPPORT = YES
-BUILTIN_STL_SUPPORT = NO
-CPP_CLI_SUPPORT = NO
-SIP_SUPPORT = NO
-IDL_PROPERTY_SUPPORT = YES
-DISTRIBUTE_GROUP_DOC = NO
-GROUP_NESTED_COMPOUNDS = NO
-SUBGROUPING = YES
-INLINE_GROUPED_CLASSES = NO
-INLINE_SIMPLE_STRUCTS = NO
-TYPEDEF_HIDES_STRUCT = NO
-LOOKUP_CACHE_SIZE = 0
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_PRIV_VIRTUAL = NO
-EXTRACT_PACKAGE = NO
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-EXTRACT_ANON_NSPACES = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-HIDE_SCOPE_NAMES = NO
-HIDE_COMPOUND_REFERENCE= NO
-SHOW_INCLUDE_FILES = YES
-SHOW_GROUPED_MEMB_INC = NO
-FORCE_LOCAL_INCLUDES = NO
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-SORT_MEMBERS_CTORS_1ST = NO
-SORT_GROUP_NAMES = NO
-SORT_BY_SCOPE_NAME = NO
-STRICT_PROTO_MATCHING = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_FILES = YES
-SHOW_NAMESPACES = YES
-FILE_VERSION_FILTER =
-LAYOUT_FILE =
-CITE_BIB_FILES =
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_AS_ERROR = NO
-WARN_FORMAT =
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = src
-INPUT_ENCODING = UTF-8
-FILE_PATTERNS =
-RECURSIVE = NO
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXCLUDE_SYMBOLS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS =
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-FILTER_SOURCE_PATTERNS =
-USE_MDFILE_AS_MAINPAGE =
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-REFERENCES_LINK_SOURCE = YES
-SOURCE_TOOLTIPS = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT =
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_EXTRA_STYLESHEET =
-HTML_EXTRA_FILES =
-HTML_COLORSTYLE_HUE = 220
-HTML_COLORSTYLE_SAT = 100
-HTML_COLORSTYLE_GAMMA = 80
-HTML_TIMESTAMP = NO
-HTML_DYNAMIC_MENUS = YES
-HTML_DYNAMIC_SECTIONS = NO
-HTML_INDEX_NUM_ENTRIES = 100
-GENERATE_DOCSET = NO
-DOCSET_FEEDNAME = "Doxygen generated docs"
-DOCSET_BUNDLE_ID = org.doxygen.Project
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-DOCSET_PUBLISHER_NAME = Publisher
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-CHM_INDEX_ENCODING =
-BINARY_TOC = NO
-TOC_EXPAND = NO
-GENERATE_QHP = NO
-QCH_FILE =
-QHP_NAMESPACE = org.doxygen.Project
-QHP_VIRTUAL_FOLDER = doc
-QHP_CUST_FILTER_NAME =
-QHP_CUST_FILTER_ATTRS =
-QHP_SECT_FILTER_ATTRS =
-QHG_LOCATION =
-GENERATE_ECLIPSEHELP = NO
-ECLIPSE_DOC_ID = org.doxygen.Project
-DISABLE_INDEX = NO
-GENERATE_TREEVIEW = NO
-ENUM_VALUES_PER_LINE = 4
-TREEVIEW_WIDTH = 250
-EXT_LINKS_IN_WINDOW = NO
-FORMULA_FONTSIZE = 10
-FORMULA_TRANSPARENT = YES
-USE_MATHJAX = NO
-MATHJAX_FORMAT = HTML-CSS
-MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/
-MATHJAX_EXTENSIONS =
-MATHJAX_CODEFILE =
-SEARCHENGINE = NO
-SERVER_BASED_SEARCH = NO
-EXTERNAL_SEARCH = NO
-SEARCHENGINE_URL =
-SEARCHDATA_FILE = searchdata.xml
-EXTERNAL_SEARCH_ID =
-EXTRA_SEARCH_MAPPINGS =
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = NO
-LATEX_OUTPUT =
-LATEX_CMD_NAME =
-MAKEINDEX_CMD_NAME = makeindex
-LATEX_MAKEINDEX_CMD = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-LATEX_FOOTER =
-LATEX_EXTRA_STYLESHEET =
-LATEX_EXTRA_FILES =
-PDF_HYPERLINKS = NO
-USE_PDFLATEX = NO
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-LATEX_SOURCE_CODE = NO
-LATEX_BIB_STYLE = plain
-LATEX_TIMESTAMP = NO
-LATEX_EMOJI_DIRECTORY =
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT =
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-RTF_SOURCE_CODE = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT =
-MAN_EXTENSION =
-MAN_SUBDIR =
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = YES
-XML_OUTPUT = xml
-XML_PROGRAMLISTING = YES
-XML_NS_MEMB_FILE_SCOPE = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-GENERATE_DOCBOOK = NO
-DOCBOOK_OUTPUT = docbook
-DOCBOOK_PROGRAMLISTING = NO
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = YES
-EXPAND_ONLY_PREDEF = YES
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED = DEFINE_CLS_IMPL
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-TAGFILES = ../../qtools_docs/qtools.tag=../../../../qtools_docs/html
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-EXTERNAL_PAGES = YES
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = NO
-DIA_PATH =
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = YES
-DOT_NUM_THREADS = 0
-DOT_FONTNAME = Helvetica
-DOT_FONTSIZE = 10
-DOT_FONTPATH =
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-UML_LIMIT_NUM_FIELDS = 10
-TEMPLATE_RELATIONS = YES
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DOT_IMAGE_FORMAT = png
-INTERACTIVE_SVG = NO
-DOT_PATH =
-DOTFILE_DIRS =
-MSCFILE_DIRS =
-DIAFILE_DIRS =
-PLANTUML_JAR_PATH =
-PLANTUML_CFG_FILE =
-PLANTUML_INCLUDE_PATH =
-DOT_GRAPH_MAX_NODES = 50
-MAX_DOT_GRAPH_DEPTH = 0
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
diff --git a/addon/doxmlparser/LICENSE b/addon/doxmlparser/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/addon/doxmlparser/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/addon/doxmlparser/README.md b/addon/doxmlparser/README.md
new file mode 100644
index 0000000..ced4018
--- /dev/null
+++ b/addon/doxmlparser/README.md
@@ -0,0 +1,10 @@
+Doxmlparser
+===========
+
+This is a python package to make it easier to parse the XML output produced by doxygen.
+
+The API is generated from the index.xsd and compound.xsd XML schema files using
+Dave Kuhlman's generateDS https://www.davekuhlman.org/generateDS.html
+
+See the examples directory to get an idea how to use the python module
+
diff --git a/addon/doxmlparser/doxmlparser/__init__.py b/addon/doxmlparser/doxmlparser/__init__.py
new file mode 100644
index 0000000..31a275f
--- /dev/null
+++ b/addon/doxmlparser/doxmlparser/__init__.py
@@ -0,0 +1,2 @@
+from .index import *
+from .compound import *
diff --git a/addon/doxmlparser/doxmlparser/compound.py b/addon/doxmlparser/doxmlparser/compound.py
new file mode 100644
index 0000000..d15e04e
--- /dev/null
+++ b/addon/doxmlparser/doxmlparser/compound.py
@@ -0,0 +1,22358 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#
+# Generated by generateDS.py.
+# Python 3.9.0 (default, Oct 27 2020, 14:15:17) [Clang 12.0.0 (clang-1200.0.32.21)]
+#
+# Command line options:
+# ('--no-dates', '')
+# ('--no-versions', '')
+# ('-f', '')
+# ('-o', '/Users/dimitri/doxygen.git/addon/doxmlparser/doxmlparser/compound.py')
+#
+# Command line arguments:
+# /Users/dimitri/doxygen.git/templates/xml/compound.xsd
+#
+# Command line:
+# /usr/local/bin/generateDS --no-dates --no-versions -f -o "/Users/dimitri/doxygen.git/addon/doxmlparser/doxmlparser/compound.py" /Users/dimitri/doxygen.git/templates/xml/compound.xsd
+#
+# Current working directory (os.getcwd()):
+# doxmlparser
+#
+
+import sys
+try:
+ ModulenotfoundExp_ = ModuleNotFoundError
+except NameError:
+ ModulenotfoundExp_ = ImportError
+from six.moves import zip_longest
+import os
+import re as re_
+import base64
+import datetime as datetime_
+import decimal as decimal_
+try:
+ from lxml import etree as etree_
+except ModulenotfoundExp_ :
+ from xml.etree import ElementTree as etree_
+
+
+Validate_simpletypes_ = True
+SaveElementTreeNode = True
+if sys.version_info.major == 2:
+ BaseStrType_ = basestring
+else:
+ BaseStrType_ = str
+
+
+def parsexml_(infile, parser=None, **kwargs):
+ if parser is None:
+ # Use the lxml ElementTree compatible parser so that, e.g.,
+ # we ignore comments.
+ try:
+ parser = etree_.ETCompatXMLParser()
+ except AttributeError:
+ # fallback to xml.etree
+ parser = etree_.XMLParser()
+ try:
+ if isinstance(infile, os.PathLike):
+ infile = os.path.join(infile)
+ except AttributeError:
+ pass
+ doc = etree_.parse(infile, parser=parser, **kwargs)
+ return doc
+
+def parsexmlstring_(instring, parser=None, **kwargs):
+ if parser is None:
+ # Use the lxml ElementTree compatible parser so that, e.g.,
+ # we ignore comments.
+ try:
+ parser = etree_.ETCompatXMLParser()
+ except AttributeError:
+ # fallback to xml.etree
+ parser = etree_.XMLParser()
+ element = etree_.fromstring(instring, parser=parser, **kwargs)
+ return element
+
+#
+# Namespace prefix definition table (and other attributes, too)
+#
+# The module generatedsnamespaces, if it is importable, must contain
+# a dictionary named GeneratedsNamespaceDefs. This Python dictionary
+# should map element type names (strings) to XML schema namespace prefix
+# definitions. The export method for any class for which there is
+# a namespace prefix definition, will export that definition in the
+# XML representation of that element. See the export method of
+# any generated element type class for an example of the use of this
+# table.
+# A sample table is:
+#
+# # File: generatedsnamespaces.py
+#
+# GenerateDSNamespaceDefs = {
+# "ElementtypeA": "http://www.xxx.com/namespaceA",
+# "ElementtypeB": "http://www.xxx.com/namespaceB",
+# }
+#
+# Additionally, the generatedsnamespaces module can contain a python
+# dictionary named GenerateDSNamespaceTypePrefixes that associates element
+# types with the namespace prefixes that are to be added to the
+# "xsi:type" attribute value. See the exportAttributes method of
+# any generated element type and the generation of "xsi:type" for an
+# example of the use of this table.
+# An example table:
+#
+# # File: generatedsnamespaces.py
+#
+# GenerateDSNamespaceTypePrefixes = {
+# "ElementtypeC": "aaa:",
+# "ElementtypeD": "bbb:",
+# }
+#
+
+try:
+ from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_
+except ModulenotfoundExp_ :
+ GenerateDSNamespaceDefs_ = {}
+try:
+ from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_
+except ModulenotfoundExp_ :
+ GenerateDSNamespaceTypePrefixes_ = {}
+
+#
+# You can replace the following class definition by defining an
+# importable module named "generatedscollector" containing a class
+# named "GdsCollector". See the default class definition below for
+# clues about the possible content of that class.
+#
+try:
+ from generatedscollector import GdsCollector as GdsCollector_
+except ModulenotfoundExp_ :
+
+ class GdsCollector_(object):
+
+ def __init__(self, messages=None):
+ if messages is None:
+ self.messages = []
+ else:
+ self.messages = messages
+
+ def add_message(self, msg):
+ self.messages.append(msg)
+
+ def get_messages(self):
+ return self.messages
+
+ def clear_messages(self):
+ self.messages = []
+
+ def print_messages(self):
+ for msg in self.messages:
+ print("Warning: {}".format(msg))
+
+ def write_messages(self, outstream):
+ for msg in self.messages:
+ outstream.write("Warning: {}\n".format(msg))
+
+
+#
+# The super-class for enum types
+#
+
+try:
+ from enum import Enum
+except ModulenotfoundExp_ :
+ Enum = object
+
+#
+# The root super-class for element type classes
+#
+# Calls to the methods in these classes are generated by generateDS.py.
+# You can replace these methods by re-implementing the following class
+# in a module named generatedssuper.py.
+
+try:
+ from generatedssuper import GeneratedsSuper
+except ModulenotfoundExp_ as exp:
+
+ class GeneratedsSuper(object):
+ __hash__ = object.__hash__
+ tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$')
+ class _FixedOffsetTZ(datetime_.tzinfo):
+ def __init__(self, offset, name):
+ self.__offset = datetime_.timedelta(minutes=offset)
+ self.__name = name
+ def utcoffset(self, dt):
+ return self.__offset
+ def tzname(self, dt):
+ return self.__name
+ def dst(self, dt):
+ return None
+ def gds_format_string(self, input_data, input_name=''):
+ return input_data
+ def gds_parse_string(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_validate_string(self, input_data, node=None, input_name=''):
+ if not input_data:
+ return ''
+ else:
+ return input_data
+ def gds_format_base64(self, input_data, input_name=''):
+ return base64.b64encode(input_data)
+ def gds_validate_base64(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_integer(self, input_data, input_name=''):
+ return '%d' % input_data
+ def gds_parse_integer(self, input_data, node=None, input_name=''):
+ try:
+ ival = int(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires integer value: %s' % exp)
+ return ival
+ def gds_validate_integer(self, input_data, node=None, input_name=''):
+ try:
+ value = int(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires integer value')
+ return value
+ def gds_format_integer_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_integer_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ int(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of integer values')
+ return values
+ def gds_format_float(self, input_data, input_name=''):
+ return ('%.15f' % input_data).rstrip('0')
+ def gds_parse_float(self, input_data, node=None, input_name=''):
+ try:
+ fval_ = float(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires float or double value: %s' % exp)
+ return fval_
+ def gds_validate_float(self, input_data, node=None, input_name=''):
+ try:
+ value = float(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires float value')
+ return value
+ def gds_format_float_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_float_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ float(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of float values')
+ return values
+ def gds_format_decimal(self, input_data, input_name=''):
+ return_value = '%s' % input_data
+ if '.' in return_value:
+ return_value = return_value.rstrip('0')
+ if return_value.endswith('.'):
+ return_value = return_value.rstrip('.')
+ return return_value
+ def gds_parse_decimal(self, input_data, node=None, input_name=''):
+ try:
+ decimal_value = decimal_.Decimal(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires decimal value')
+ return decimal_value
+ def gds_validate_decimal(self, input_data, node=None, input_name=''):
+ try:
+ value = decimal_.Decimal(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires decimal value')
+ return value
+ def gds_format_decimal_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return ' '.join([self.gds_format_decimal(item) for item in input_data])
+ def gds_validate_decimal_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ decimal_.Decimal(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of decimal values')
+ return values
+ def gds_format_double(self, input_data, input_name=''):
+ return '%s' % input_data
+ def gds_parse_double(self, input_data, node=None, input_name=''):
+ try:
+ fval_ = float(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires double or float value: %s' % exp)
+ return fval_
+ def gds_validate_double(self, input_data, node=None, input_name=''):
+ try:
+ value = float(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires double or float value')
+ return value
+ def gds_format_double_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_double_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ float(value)
+ except (TypeError, ValueError):
+ raise_parse_error(
+ node, 'Requires sequence of double or float values')
+ return values
+ def gds_format_boolean(self, input_data, input_name=''):
+ return ('%s' % input_data).lower()
+ def gds_parse_boolean(self, input_data, node=None, input_name=''):
+ if input_data in ('true', '1'):
+ bval = True
+ elif input_data in ('false', '0'):
+ bval = False
+ else:
+ raise_parse_error(node, 'Requires boolean value')
+ return bval
+ def gds_validate_boolean(self, input_data, node=None, input_name=''):
+ if input_data not in (True, 1, False, 0, ):
+ raise_parse_error(
+ node,
+ 'Requires boolean value '
+ '(one of True, 1, False, 0)')
+ return input_data
+ def gds_format_boolean_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_boolean_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ if value not in (True, 1, False, 0, ):
+ raise_parse_error(
+ node,
+ 'Requires sequence of boolean values '
+ '(one of True, 1, False, 0)')
+ return values
+ def gds_validate_datetime(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_datetime(self, input_data, input_name=''):
+ if input_data.microsecond == 0:
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ )
+ else:
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
+ )
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
+ return _svalue
+ @classmethod
+ def gds_parse_datetime(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ time_parts = input_data.split('.')
+ if len(time_parts) > 1:
+ micro_seconds = int(float('0.' + time_parts[1]) * 1000000)
+ input_data = '%s.%s' % (
+ time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), )
+ dt = datetime_.datetime.strptime(
+ input_data, '%Y-%m-%dT%H:%M:%S.%f')
+ else:
+ dt = datetime_.datetime.strptime(
+ input_data, '%Y-%m-%dT%H:%M:%S')
+ dt = dt.replace(tzinfo=tz)
+ return dt
+ def gds_validate_date(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_date(self, input_data, input_name=''):
+ _svalue = '%04d-%02d-%02d' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ )
+ try:
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(
+ hours, minutes)
+ except AttributeError:
+ pass
+ return _svalue
+ @classmethod
+ def gds_parse_date(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d')
+ dt = dt.replace(tzinfo=tz)
+ return dt.date()
+ def gds_validate_time(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_time(self, input_data, input_name=''):
+ if input_data.microsecond == 0:
+ _svalue = '%02d:%02d:%02d' % (
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ )
+ else:
+ _svalue = '%02d:%02d:%02d.%s' % (
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
+ )
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
+ return _svalue
+ def gds_validate_simple_patterns(self, patterns, target):
+ # pat is a list of lists of strings/patterns.
+ # The target value must match at least one of the patterns
+ # in order for the test to succeed.
+ found1 = True
+ for patterns1 in patterns:
+ found2 = False
+ for patterns2 in patterns1:
+ mo = re_.search(patterns2, target)
+ if mo is not None and len(mo.group(0)) == len(target):
+ found2 = True
+ break
+ if not found2:
+ found1 = False
+ break
+ return found1
+ @classmethod
+ def gds_parse_time(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ if len(input_data.split('.')) > 1:
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f')
+ else:
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S')
+ dt = dt.replace(tzinfo=tz)
+ return dt.time()
+ def gds_check_cardinality_(
+ self, value, input_name,
+ min_occurs=0, max_occurs=1, required=None):
+ if value is None:
+ length = 0
+ elif isinstance(value, list):
+ length = len(value)
+ else:
+ length = 1
+ if required is not None :
+ if required and length < 1:
+ self.gds_collector_.add_message(
+ "Required value {}{} is missing".format(
+ input_name, self.gds_get_node_lineno_()))
+ if length < min_occurs:
+ self.gds_collector_.add_message(
+ "Number of values for {}{} is below "
+ "the minimum allowed, "
+ "expected at least {}, found {}".format(
+ input_name, self.gds_get_node_lineno_(),
+ min_occurs, length))
+ elif length > max_occurs:
+ self.gds_collector_.add_message(
+ "Number of values for {}{} is above "
+ "the maximum allowed, "
+ "expected at most {}, found {}".format(
+ input_name, self.gds_get_node_lineno_(),
+ max_occurs, length))
+ def gds_validate_builtin_ST_(
+ self, validator, value, input_name,
+ min_occurs=None, max_occurs=None, required=None):
+ if value is not None:
+ try:
+ validator(value, input_name=input_name)
+ except GDSParseError as parse_error:
+ self.gds_collector_.add_message(str(parse_error))
+ def gds_validate_defined_ST_(
+ self, validator, value, input_name,
+ min_occurs=None, max_occurs=None, required=None):
+ if value is not None:
+ try:
+ validator(value)
+ except GDSParseError as parse_error:
+ self.gds_collector_.add_message(str(parse_error))
+ def gds_str_lower(self, instring):
+ return instring.lower()
+ def get_path_(self, node):
+ path_list = []
+ self.get_path_list_(node, path_list)
+ path_list.reverse()
+ path = '/'.join(path_list)
+ return path
+ Tag_strip_pattern_ = re_.compile(r'\{.*\}')
+ def get_path_list_(self, node, path_list):
+ if node is None:
+ return
+ tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag)
+ if tag:
+ path_list.append(tag)
+ self.get_path_list_(node.getparent(), path_list)
+ def get_class_obj_(self, node, default_class=None):
+ class_obj1 = default_class
+ if 'xsi' in node.nsmap:
+ classname = node.get('{%s}type' % node.nsmap['xsi'])
+ if classname is not None:
+ names = classname.split(':')
+ if len(names) == 2:
+ classname = names[1]
+ class_obj2 = globals().get(classname)
+ if class_obj2 is not None:
+ class_obj1 = class_obj2
+ return class_obj1
+ def gds_build_any(self, node, type_name=None):
+ # provide default value in case option --disable-xml is used.
+ content = ""
+ content = etree_.tostring(node, encoding="unicode")
+ return content
+ @classmethod
+ def gds_reverse_node_mapping(cls, mapping):
+ return dict(((v, k) for k, v in mapping.items()))
+ @staticmethod
+ def gds_encode(instring):
+ if sys.version_info.major == 2:
+ if ExternalEncoding:
+ encoding = ExternalEncoding
+ else:
+ encoding = 'utf-8'
+ return instring.encode(encoding)
+ else:
+ return instring
+ @staticmethod
+ def convert_unicode(instring):
+ if isinstance(instring, str):
+ result = quote_xml(instring)
+ elif sys.version_info.major == 2 and isinstance(instring, unicode):
+ result = quote_xml(instring).encode('utf8')
+ else:
+ result = GeneratedsSuper.gds_encode(str(instring))
+ return result
+ def __eq__(self, other):
+ def excl_select_objs_(obj):
+ return (obj[0] != 'parent_object_' and
+ obj[0] != 'gds_collector_')
+ if type(self) != type(other):
+ return False
+ return all(x == y for x, y in zip_longest(
+ filter(excl_select_objs_, self.__dict__.items()),
+ filter(excl_select_objs_, other.__dict__.items())))
+ def __ne__(self, other):
+ return not self.__eq__(other)
+ # Django ETL transform hooks.
+ def gds_djo_etl_transform(self):
+ pass
+ def gds_djo_etl_transform_db_obj(self, dbobj):
+ pass
+ # SQLAlchemy ETL transform hooks.
+ def gds_sqa_etl_transform(self):
+ return 0, None
+ def gds_sqa_etl_transform_db_obj(self, dbobj):
+ pass
+ def gds_get_node_lineno_(self):
+ if (hasattr(self, "gds_elementtree_node_") and
+ self.gds_elementtree_node_ is not None):
+ return ' near line {}'.format(
+ self.gds_elementtree_node_.sourceline)
+ else:
+ return ""
+
+
+ def getSubclassFromModule_(module, class_):
+ '''Get the subclass of a class from a specific module.'''
+ name = class_.__name__ + 'Sub'
+ if hasattr(module, name):
+ return getattr(module, name)
+ else:
+ return None
+
+
+#
+# If you have installed IPython you can uncomment and use the following.
+# IPython is available from http://ipython.scipy.org/.
+#
+
+## from IPython.Shell import IPShellEmbed
+## args = ''
+## ipshell = IPShellEmbed(args,
+## banner = 'Dropping into IPython',
+## exit_msg = 'Leaving Interpreter, back to program.')
+
+# Then use the following line where and when you want to drop into the
+# IPython shell:
+# ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit')
+
+#
+# Globals
+#
+
+ExternalEncoding = ''
+# Set this to false in order to deactivate during export, the use of
+# name space prefixes captured from the input document.
+UseCapturedNS_ = True
+CapturedNsmap_ = {}
+Tag_pattern_ = re_.compile(r'({.*})?(.*)')
+String_cleanup_pat_ = re_.compile(r"[\n\r\s]+")
+Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)')
+CDATA_pattern_ = re_.compile(r"<!\[CDATA\[.*?\]\]>", re_.DOTALL)
+
+# Change this to redirect the generated superclass module to use a
+# specific subclass module.
+CurrentSubclassModule_ = None
+
+#
+# Support/utility functions.
+#
+
+
+def showIndent(outfile, level, pretty_print=True):
+ if pretty_print:
+ for idx in range(level):
+ outfile.write(' ')
+
+
+def quote_xml(inStr):
+ "Escape markup chars, but do not modify CDATA sections."
+ if not inStr:
+ return ''
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
+ s2 = ''
+ pos = 0
+ matchobjects = CDATA_pattern_.finditer(s1)
+ for mo in matchobjects:
+ s3 = s1[pos:mo.start()]
+ s2 += quote_xml_aux(s3)
+ s2 += s1[mo.start():mo.end()]
+ pos = mo.end()
+ s3 = s1[pos:]
+ s2 += quote_xml_aux(s3)
+ return s2
+
+
+def quote_xml_aux(inStr):
+ s1 = inStr.replace('&', '&amp;')
+ s1 = s1.replace('<', '&lt;')
+ s1 = s1.replace('>', '&gt;')
+ return s1
+
+
+def quote_attrib(inStr):
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
+ s1 = s1.replace('&', '&amp;')
+ s1 = s1.replace('<', '&lt;')
+ s1 = s1.replace('>', '&gt;')
+ if '"' in s1:
+ if "'" in s1:
+ s1 = '"%s"' % s1.replace('"', "&quot;")
+ else:
+ s1 = "'%s'" % s1
+ else:
+ s1 = '"%s"' % s1
+ return s1
+
+
+def quote_python(inStr):
+ s1 = inStr
+ if s1.find("'") == -1:
+ if s1.find('\n') == -1:
+ return "'%s'" % s1
+ else:
+ return "'''%s'''" % s1
+ else:
+ if s1.find('"') != -1:
+ s1 = s1.replace('"', '\\"')
+ if s1.find('\n') == -1:
+ return '"%s"' % s1
+ else:
+ return '"""%s"""' % s1
+
+
+def get_all_text_(node):
+ if node.text is not None:
+ text = node.text
+ else:
+ text = ''
+ for child in node:
+ if child.tail is not None:
+ text += child.tail
+ return text
+
+
+def find_attr_value_(attr_name, node):
+ attrs = node.attrib
+ attr_parts = attr_name.split(':')
+ value = None
+ if len(attr_parts) == 1:
+ value = attrs.get(attr_name)
+ elif len(attr_parts) == 2:
+ prefix, name = attr_parts
+ if prefix == 'xml':
+ namespace = 'http://www.w3.org/XML/1998/namespace'
+ else:
+ namespace = node.nsmap.get(prefix)
+ if namespace is not None:
+ value = attrs.get('{%s}%s' % (namespace, name, ))
+ return value
+
+
+def encode_str_2_3(instr):
+ return instr
+
+
+class GDSParseError(Exception):
+ pass
+
+
+def raise_parse_error(node, msg):
+ if node is not None:
+ msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, )
+ raise GDSParseError(msg)
+
+
+class MixedContainer:
+ # Constants for category:
+ CategoryNone = 0
+ CategoryText = 1
+ CategorySimple = 2
+ CategoryComplex = 3
+ # Constants for content_type:
+ TypeNone = 0
+ TypeText = 1
+ TypeString = 2
+ TypeInteger = 3
+ TypeFloat = 4
+ TypeDecimal = 5
+ TypeDouble = 6
+ TypeBoolean = 7
+ TypeBase64 = 8
+ def __init__(self, category, content_type, name, value):
+ self.category = category
+ self.content_type = content_type
+ self.name = name
+ self.value = value
+ def getCategory(self):
+ return self.category
+ def getContenttype(self, content_type):
+ return self.content_type
+ def getValue(self):
+ return self.value
+ def getName(self):
+ return self.name
+ def export(self, outfile, level, name, namespace,
+ pretty_print=True):
+ if self.category == MixedContainer.CategoryText:
+ # Prevent exporting empty content as empty lines.
+ if self.value.strip():
+ outfile.write(self.value)
+ elif self.category == MixedContainer.CategorySimple:
+ self.exportSimple(outfile, level, name)
+ else: # category == MixedContainer.CategoryComplex
+ self.value.export(
+ outfile, level, namespace, name_=name,
+ pretty_print=pretty_print)
+ def exportSimple(self, outfile, level, name):
+ if self.content_type == MixedContainer.TypeString:
+ outfile.write('<%s>%s</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeInteger or \
+ self.content_type == MixedContainer.TypeBoolean:
+ outfile.write('<%s>%d</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeFloat or \
+ self.content_type == MixedContainer.TypeDecimal:
+ outfile.write('<%s>%f</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeDouble:
+ outfile.write('<%s>%g</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeBase64:
+ outfile.write('<%s>%s</%s>' % (
+ self.name,
+ base64.b64encode(self.value),
+ self.name))
+ def to_etree(self, element, mapping_=None, nsmap_=None):
+ if self.category == MixedContainer.CategoryText:
+ # Prevent exporting empty content as empty lines.
+ if self.value.strip():
+ if len(element) > 0:
+ if element[-1].tail is None:
+ element[-1].tail = self.value
+ else:
+ element[-1].tail += self.value
+ else:
+ if element.text is None:
+ element.text = self.value
+ else:
+ element.text += self.value
+ elif self.category == MixedContainer.CategorySimple:
+ subelement = etree_.SubElement(
+ element, '%s' % self.name)
+ subelement.text = self.to_etree_simple()
+ else: # category == MixedContainer.CategoryComplex
+ self.value.to_etree(element)
+ def to_etree_simple(self, mapping_=None, nsmap_=None):
+ if self.content_type == MixedContainer.TypeString:
+ text = self.value
+ elif (self.content_type == MixedContainer.TypeInteger or
+ self.content_type == MixedContainer.TypeBoolean):
+ text = '%d' % self.value
+ elif (self.content_type == MixedContainer.TypeFloat or
+ self.content_type == MixedContainer.TypeDecimal):
+ text = '%f' % self.value
+ elif self.content_type == MixedContainer.TypeDouble:
+ text = '%g' % self.value
+ elif self.content_type == MixedContainer.TypeBase64:
+ text = '%s' % base64.b64encode(self.value)
+ return text
+ def exportLiteral(self, outfile, level, name):
+ if self.category == MixedContainer.CategoryText:
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
+ self.category, self.content_type,
+ self.name, self.value))
+ elif self.category == MixedContainer.CategorySimple:
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
+ self.category, self.content_type,
+ self.name, self.value))
+ else: # category == MixedContainer.CategoryComplex
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s",\n' % (
+ self.category, self.content_type, self.name,))
+ self.value.exportLiteral(outfile, level + 1)
+ showIndent(outfile, level)
+ outfile.write(')\n')
+
+
+class MemberSpec_(object):
+ def __init__(self, name='', data_type='', container=0,
+ optional=0, child_attrs=None, choice=None):
+ self.name = name
+ self.data_type = data_type
+ self.container = container
+ self.child_attrs = child_attrs
+ self.choice = choice
+ self.optional = optional
+ def set_name(self, name): self.name = name
+ def get_name(self): return self.name
+ def set_data_type(self, data_type): self.data_type = data_type
+ def get_data_type_chain(self): return self.data_type
+ def get_data_type(self):
+ if isinstance(self.data_type, list):
+ if len(self.data_type) > 0:
+ return self.data_type[-1]
+ else:
+ return 'xs:string'
+ else:
+ return self.data_type
+ def set_container(self, container): self.container = container
+ def get_container(self): return self.container
+ def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs
+ def get_child_attrs(self): return self.child_attrs
+ def set_choice(self, choice): self.choice = choice
+ def get_choice(self): return self.choice
+ def set_optional(self, optional): self.optional = optional
+ def get_optional(self): return self.optional
+
+
+def _cast(typ, value):
+ if typ is None or value is None:
+ return value
+ return typ(value)
+
+#
+# Data representation classes.
+#
+
+
+class DoxAccessor(str, Enum):
+ RETAIN='retain'
+ COPY='copy'
+ ASSIGN='assign'
+ WEAK='weak'
+ STRONG='strong'
+ UNRETAINED='unretained'
+
+
+class DoxAlign(str, Enum):
+ LEFT='left'
+ RIGHT='right'
+ CENTER='center'
+
+
+class DoxBool(str, Enum):
+ YES='yes'
+ NO='no'
+
+
+class DoxCompoundKind(str, Enum):
+ CLASS='class'
+ STRUCT='struct'
+ UNION='union'
+ INTERFACE='interface'
+ PROTOCOL='protocol'
+ CATEGORY='category'
+ EXCEPTION='exception'
+ SERVICE='service'
+ SINGLETON='singleton'
+ MODULE='module'
+ TYPE='type'
+ FILE='file'
+ NAMESPACE='namespace'
+ GROUP='group'
+ PAGE='page'
+ EXAMPLE='example'
+ DIR='dir'
+
+
+class DoxGraphRelation(str, Enum):
+ INCLUDE='include'
+ USAGE='usage'
+ TEMPLATEINSTANCE='template-instance'
+ PUBLICINHERITANCE='public-inheritance'
+ PROTECTEDINHERITANCE='protected-inheritance'
+ PRIVATEINHERITANCE='private-inheritance'
+ TYPECONSTRAINT='type-constraint'
+
+
+class DoxHighlightClass(str, Enum):
+ COMMENT='comment'
+ NORMAL='normal'
+ PREPROCESSOR='preprocessor'
+ KEYWORD='keyword'
+ KEYWORDTYPE='keywordtype'
+ KEYWORDFLOW='keywordflow'
+ STRINGLITERAL='stringliteral'
+ CHARLITERAL='charliteral'
+ VHDLKEYWORD='vhdlkeyword'
+ VHDLLOGIC='vhdllogic'
+ VHDLCHAR='vhdlchar'
+ VHDLDIGIT='vhdldigit'
+
+
+class DoxImageKind(str, Enum):
+ HTML='html'
+ LATEX='latex'
+ DOCBOOK='docbook'
+ RTF='rtf'
+
+
+class DoxLanguage(str, Enum):
+ UNKNOWN='Unknown'
+ IDL='IDL'
+ JAVA='Java'
+ C='C#'
+ D='D'
+ PHP='PHP'
+ OBJECTIVEC='Objective-C'
+ C_1='C++'
+ JAVA_SCRIPT='JavaScript'
+ PYTHON='Python'
+ FORTRAN='Fortran'
+ VHDL='VHDL'
+ XML='XML'
+ SQL='SQL'
+ MARKDOWN='Markdown'
+
+
+class DoxMemberKind(str, Enum):
+ DEFINE='define'
+ PROPERTY='property'
+ EVENT='event'
+ VARIABLE='variable'
+ TYPEDEF='typedef'
+ ENUM='enum'
+ FUNCTION='function'
+ SIGNAL='signal'
+ PROTOTYPE='prototype'
+ FRIEND='friend'
+ DCOP='dcop'
+ SLOT='slot'
+ INTERFACE='interface'
+ SERVICE='service'
+
+
+class DoxParamDir(str, Enum):
+ IN='in'
+ OUT='out'
+ INOUT='inout'
+
+
+class DoxParamListKind(str, Enum):
+ PARAM='param'
+ RETVAL='retval'
+ EXCEPTION='exception'
+ TEMPLATEPARAM='templateparam'
+
+
+class DoxProtectionKind(str, Enum):
+ PUBLIC='public'
+ PROTECTED='protected'
+ PRIVATE='private'
+ PACKAGE='package'
+
+
+class DoxRefKind(str, Enum):
+ COMPOUND='compound'
+ MEMBER='member'
+
+
+class DoxRefQualifierKind(str, Enum):
+ LVALUE='lvalue'
+ RVALUE='rvalue'
+
+
+class DoxSectionKind(str, Enum):
+ USERDEFINED='user-defined'
+ PUBLICTYPE='public-type'
+ PUBLICFUNC='public-func'
+ PUBLICATTRIB='public-attrib'
+ PUBLICSLOT='public-slot'
+ SIGNAL='signal'
+ DCOPFUNC='dcop-func'
+ PROPERTY='property'
+ EVENT='event'
+ PUBLICSTATICFUNC='public-static-func'
+ PUBLICSTATICATTRIB='public-static-attrib'
+ PROTECTEDTYPE='protected-type'
+ PROTECTEDFUNC='protected-func'
+ PROTECTEDATTRIB='protected-attrib'
+ PROTECTEDSLOT='protected-slot'
+ PROTECTEDSTATICFUNC='protected-static-func'
+ PROTECTEDSTATICATTRIB='protected-static-attrib'
+ PACKAGETYPE='package-type'
+ PACKAGEFUNC='package-func'
+ PACKAGEATTRIB='package-attrib'
+ PACKAGESTATICFUNC='package-static-func'
+ PACKAGESTATICATTRIB='package-static-attrib'
+ PRIVATETYPE='private-type'
+ PRIVATEFUNC='private-func'
+ PRIVATEATTRIB='private-attrib'
+ PRIVATESLOT='private-slot'
+ PRIVATESTATICFUNC='private-static-func'
+ PRIVATESTATICATTRIB='private-static-attrib'
+ FRIEND='friend'
+ RELATED='related'
+ DEFINE='define'
+ PROTOTYPE='prototype'
+ TYPEDEF='typedef'
+ ENUM='enum'
+ FUNC='func'
+ VAR='var'
+
+
+class DoxSimpleSectKind(str, Enum):
+ SEE='see'
+ RETURN='return'
+ AUTHOR='author'
+ AUTHORS='authors'
+ VERSION='version'
+ SINCE='since'
+ DATE='date'
+ NOTE='note'
+ WARNING='warning'
+ PRE='pre'
+ POST='post'
+ COPYRIGHT='copyright'
+ INVARIANT='invariant'
+ REMARK='remark'
+ ATTENTION='attention'
+ PAR='par'
+ RCS='rcs'
+
+
+class DoxVerticalAlign(str, Enum):
+ BOTTOM='bottom'
+ TOP='top'
+ MIDDLE='middle'
+
+
+class DoxVirtualKind(str, Enum):
+ NONVIRTUAL='non-virtual'
+ VIRTUAL='virtual'
+ PUREVIRTUAL='pure-virtual'
+
+
+class DoxygenType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, version=None, lang=None, compounddef=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.version = _cast(None, version)
+ self.version_nsprefix_ = None
+ self.lang = _cast(None, lang)
+ self.lang_nsprefix_ = None
+ if compounddef is None:
+ self.compounddef = []
+ else:
+ self.compounddef = compounddef
+ self.compounddef_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, DoxygenType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if DoxygenType.subclass:
+ return DoxygenType.subclass(*args_, **kwargs_)
+ else:
+ return DoxygenType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_compounddef(self):
+ return self.compounddef
+ def set_compounddef(self, compounddef):
+ self.compounddef = compounddef
+ def add_compounddef(self, value):
+ self.compounddef.append(value)
+ def insert_compounddef_at(self, index, value):
+ self.compounddef.insert(index, value)
+ def replace_compounddef_at(self, index, value):
+ self.compounddef[index] = value
+ def get_version(self):
+ return self.version
+ def set_version(self, version):
+ self.version = version
+ def get_lang(self):
+ return self.lang
+ def set_lang(self, lang):
+ self.lang = lang
+ def validate_DoxVersionNumber(self, value):
+ # Validate type DoxVersionNumber, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ if not self.gds_validate_simple_patterns(
+ self.validate_DoxVersionNumber_patterns_, value):
+ self.gds_collector_.add_message('Value "%s" does not match xsd pattern restrictions: %s' % (encode_str_2_3(value), self.validate_DoxVersionNumber_patterns_, ))
+ validate_DoxVersionNumber_patterns_ = [['^(\\d+\\.\\d+.*)$']]
+ def hasContent_(self):
+ if (
+ self.compounddef
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('DoxygenType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'DoxygenType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='DoxygenType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='DoxygenType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='DoxygenType'):
+ if self.version is not None and 'version' not in already_processed:
+ already_processed.add('version')
+ outfile.write(' version=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.version), input_name='version')), ))
+ if self.lang is not None and 'lang' not in already_processed:
+ already_processed.add('lang')
+ outfile.write(' xml:lang=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.lang), input_name='lang')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for compounddef_ in self.compounddef:
+ namespaceprefix_ = self.compounddef_nsprefix_ + ':' if (UseCapturedNS_ and self.compounddef_nsprefix_) else ''
+ compounddef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='compounddef', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('version', node)
+ if value is not None and 'version' not in already_processed:
+ already_processed.add('version')
+ self.version = value
+ self.validate_DoxVersionNumber(self.version) # validate type DoxVersionNumber
+ value = find_attr_value_('lang', node)
+ if value is not None and 'lang' not in already_processed:
+ already_processed.add('lang')
+ self.lang = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'compounddef':
+ obj_ = compounddefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.compounddef.append(obj_)
+ obj_.original_tagname_ = 'compounddef'
+# end class DoxygenType
+
+
+class compounddefType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, kind=None, language=None, prot=None, final=None, inline=None, sealed=None, abstract=None, compoundname=None, title=None, basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, tableofcontents=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.language = _cast(None, language)
+ self.language_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.final = _cast(None, final)
+ self.final_nsprefix_ = None
+ self.inline = _cast(None, inline)
+ self.inline_nsprefix_ = None
+ self.sealed = _cast(None, sealed)
+ self.sealed_nsprefix_ = None
+ self.abstract = _cast(None, abstract)
+ self.abstract_nsprefix_ = None
+ self.compoundname = compoundname
+ self.compoundname_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if basecompoundref is None:
+ self.basecompoundref = []
+ else:
+ self.basecompoundref = basecompoundref
+ self.basecompoundref_nsprefix_ = None
+ if derivedcompoundref is None:
+ self.derivedcompoundref = []
+ else:
+ self.derivedcompoundref = derivedcompoundref
+ self.derivedcompoundref_nsprefix_ = None
+ if includes is None:
+ self.includes = []
+ else:
+ self.includes = includes
+ self.includes_nsprefix_ = None
+ if includedby is None:
+ self.includedby = []
+ else:
+ self.includedby = includedby
+ self.includedby_nsprefix_ = None
+ self.incdepgraph = incdepgraph
+ self.incdepgraph_nsprefix_ = None
+ self.invincdepgraph = invincdepgraph
+ self.invincdepgraph_nsprefix_ = None
+ if innerdir is None:
+ self.innerdir = []
+ else:
+ self.innerdir = innerdir
+ self.innerdir_nsprefix_ = None
+ if innerfile is None:
+ self.innerfile = []
+ else:
+ self.innerfile = innerfile
+ self.innerfile_nsprefix_ = None
+ if innerclass is None:
+ self.innerclass = []
+ else:
+ self.innerclass = innerclass
+ self.innerclass_nsprefix_ = None
+ if innernamespace is None:
+ self.innernamespace = []
+ else:
+ self.innernamespace = innernamespace
+ self.innernamespace_nsprefix_ = None
+ if innerpage is None:
+ self.innerpage = []
+ else:
+ self.innerpage = innerpage
+ self.innerpage_nsprefix_ = None
+ if innergroup is None:
+ self.innergroup = []
+ else:
+ self.innergroup = innergroup
+ self.innergroup_nsprefix_ = None
+ self.templateparamlist = templateparamlist
+ self.templateparamlist_nsprefix_ = None
+ if sectiondef is None:
+ self.sectiondef = []
+ else:
+ self.sectiondef = sectiondef
+ self.sectiondef_nsprefix_ = None
+ self.tableofcontents = tableofcontents
+ self.tableofcontents_nsprefix_ = None
+ self.briefdescription = briefdescription
+ self.briefdescription_nsprefix_ = None
+ self.detaileddescription = detaileddescription
+ self.detaileddescription_nsprefix_ = None
+ self.inheritancegraph = inheritancegraph
+ self.inheritancegraph_nsprefix_ = None
+ self.collaborationgraph = collaborationgraph
+ self.collaborationgraph_nsprefix_ = None
+ self.programlisting = programlisting
+ self.programlisting_nsprefix_ = None
+ self.location = location
+ self.location_nsprefix_ = None
+ self.listofallmembers = listofallmembers
+ self.listofallmembers_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, compounddefType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if compounddefType.subclass:
+ return compounddefType.subclass(*args_, **kwargs_)
+ else:
+ return compounddefType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_compoundname(self):
+ return self.compoundname
+ def set_compoundname(self, compoundname):
+ self.compoundname = compoundname
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_basecompoundref(self):
+ return self.basecompoundref
+ def set_basecompoundref(self, basecompoundref):
+ self.basecompoundref = basecompoundref
+ def add_basecompoundref(self, value):
+ self.basecompoundref.append(value)
+ def insert_basecompoundref_at(self, index, value):
+ self.basecompoundref.insert(index, value)
+ def replace_basecompoundref_at(self, index, value):
+ self.basecompoundref[index] = value
+ def get_derivedcompoundref(self):
+ return self.derivedcompoundref
+ def set_derivedcompoundref(self, derivedcompoundref):
+ self.derivedcompoundref = derivedcompoundref
+ def add_derivedcompoundref(self, value):
+ self.derivedcompoundref.append(value)
+ def insert_derivedcompoundref_at(self, index, value):
+ self.derivedcompoundref.insert(index, value)
+ def replace_derivedcompoundref_at(self, index, value):
+ self.derivedcompoundref[index] = value
+ def get_includes(self):
+ return self.includes
+ def set_includes(self, includes):
+ self.includes = includes
+ def add_includes(self, value):
+ self.includes.append(value)
+ def insert_includes_at(self, index, value):
+ self.includes.insert(index, value)
+ def replace_includes_at(self, index, value):
+ self.includes[index] = value
+ def get_includedby(self):
+ return self.includedby
+ def set_includedby(self, includedby):
+ self.includedby = includedby
+ def add_includedby(self, value):
+ self.includedby.append(value)
+ def insert_includedby_at(self, index, value):
+ self.includedby.insert(index, value)
+ def replace_includedby_at(self, index, value):
+ self.includedby[index] = value
+ def get_incdepgraph(self):
+ return self.incdepgraph
+ def set_incdepgraph(self, incdepgraph):
+ self.incdepgraph = incdepgraph
+ def get_invincdepgraph(self):
+ return self.invincdepgraph
+ def set_invincdepgraph(self, invincdepgraph):
+ self.invincdepgraph = invincdepgraph
+ def get_innerdir(self):
+ return self.innerdir
+ def set_innerdir(self, innerdir):
+ self.innerdir = innerdir
+ def add_innerdir(self, value):
+ self.innerdir.append(value)
+ def insert_innerdir_at(self, index, value):
+ self.innerdir.insert(index, value)
+ def replace_innerdir_at(self, index, value):
+ self.innerdir[index] = value
+ def get_innerfile(self):
+ return self.innerfile
+ def set_innerfile(self, innerfile):
+ self.innerfile = innerfile
+ def add_innerfile(self, value):
+ self.innerfile.append(value)
+ def insert_innerfile_at(self, index, value):
+ self.innerfile.insert(index, value)
+ def replace_innerfile_at(self, index, value):
+ self.innerfile[index] = value
+ def get_innerclass(self):
+ return self.innerclass
+ def set_innerclass(self, innerclass):
+ self.innerclass = innerclass
+ def add_innerclass(self, value):
+ self.innerclass.append(value)
+ def insert_innerclass_at(self, index, value):
+ self.innerclass.insert(index, value)
+ def replace_innerclass_at(self, index, value):
+ self.innerclass[index] = value
+ def get_innernamespace(self):
+ return self.innernamespace
+ def set_innernamespace(self, innernamespace):
+ self.innernamespace = innernamespace
+ def add_innernamespace(self, value):
+ self.innernamespace.append(value)
+ def insert_innernamespace_at(self, index, value):
+ self.innernamespace.insert(index, value)
+ def replace_innernamespace_at(self, index, value):
+ self.innernamespace[index] = value
+ def get_innerpage(self):
+ return self.innerpage
+ def set_innerpage(self, innerpage):
+ self.innerpage = innerpage
+ def add_innerpage(self, value):
+ self.innerpage.append(value)
+ def insert_innerpage_at(self, index, value):
+ self.innerpage.insert(index, value)
+ def replace_innerpage_at(self, index, value):
+ self.innerpage[index] = value
+ def get_innergroup(self):
+ return self.innergroup
+ def set_innergroup(self, innergroup):
+ self.innergroup = innergroup
+ def add_innergroup(self, value):
+ self.innergroup.append(value)
+ def insert_innergroup_at(self, index, value):
+ self.innergroup.insert(index, value)
+ def replace_innergroup_at(self, index, value):
+ self.innergroup[index] = value
+ def get_templateparamlist(self):
+ return self.templateparamlist
+ def set_templateparamlist(self, templateparamlist):
+ self.templateparamlist = templateparamlist
+ def get_sectiondef(self):
+ return self.sectiondef
+ def set_sectiondef(self, sectiondef):
+ self.sectiondef = sectiondef
+ def add_sectiondef(self, value):
+ self.sectiondef.append(value)
+ def insert_sectiondef_at(self, index, value):
+ self.sectiondef.insert(index, value)
+ def replace_sectiondef_at(self, index, value):
+ self.sectiondef[index] = value
+ def get_tableofcontents(self):
+ return self.tableofcontents
+ def set_tableofcontents(self, tableofcontents):
+ self.tableofcontents = tableofcontents
+ def get_briefdescription(self):
+ return self.briefdescription
+ def set_briefdescription(self, briefdescription):
+ self.briefdescription = briefdescription
+ def get_detaileddescription(self):
+ return self.detaileddescription
+ def set_detaileddescription(self, detaileddescription):
+ self.detaileddescription = detaileddescription
+ def get_inheritancegraph(self):
+ return self.inheritancegraph
+ def set_inheritancegraph(self, inheritancegraph):
+ self.inheritancegraph = inheritancegraph
+ def get_collaborationgraph(self):
+ return self.collaborationgraph
+ def set_collaborationgraph(self, collaborationgraph):
+ self.collaborationgraph = collaborationgraph
+ def get_programlisting(self):
+ return self.programlisting
+ def set_programlisting(self, programlisting):
+ self.programlisting = programlisting
+ def get_location(self):
+ return self.location
+ def set_location(self, location):
+ self.location = location
+ def get_listofallmembers(self):
+ return self.listofallmembers
+ def set_listofallmembers(self, listofallmembers):
+ self.listofallmembers = listofallmembers
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def get_language(self):
+ return self.language
+ def set_language(self, language):
+ self.language = language
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_final(self):
+ return self.final
+ def set_final(self, final):
+ self.final = final
+ def get_inline(self):
+ return self.inline
+ def set_inline(self, inline):
+ self.inline = inline
+ def get_sealed(self):
+ return self.sealed
+ def set_sealed(self, sealed):
+ self.sealed = sealed
+ def get_abstract(self):
+ return self.abstract
+ def set_abstract(self, abstract):
+ self.abstract = abstract
+ def validate_DoxCompoundKind(self, value):
+ # Validate type DoxCompoundKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['class', 'struct', 'union', 'interface', 'protocol', 'category', 'exception', 'service', 'singleton', 'module', 'type', 'file', 'namespace', 'group', 'page', 'example', 'dir']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxCompoundKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxLanguage(self, value):
+ # Validate type DoxLanguage, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['Unknown', 'IDL', 'Java', 'C#', 'D', 'PHP', 'Objective-C', 'C++', 'JavaScript', 'Python', 'Fortran', 'VHDL', 'XML', 'SQL', 'Markdown']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxLanguage' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.compoundname is not None or
+ self.title is not None or
+ self.basecompoundref or
+ self.derivedcompoundref or
+ self.includes or
+ self.includedby or
+ self.incdepgraph is not None or
+ self.invincdepgraph is not None or
+ self.innerdir or
+ self.innerfile or
+ self.innerclass or
+ self.innernamespace or
+ self.innerpage or
+ self.innergroup or
+ self.templateparamlist is not None or
+ self.sectiondef or
+ self.tableofcontents is not None or
+ self.briefdescription is not None or
+ self.detaileddescription is not None or
+ self.inheritancegraph is not None or
+ self.collaborationgraph is not None or
+ self.programlisting is not None or
+ self.location is not None or
+ self.listofallmembers is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compounddefType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('compounddefType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'compounddefType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='compounddefType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='compounddefType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='compounddefType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ if self.language is not None and 'language' not in already_processed:
+ already_processed.add('language')
+ outfile.write(' language=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.language), input_name='language')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ if self.final is not None and 'final' not in already_processed:
+ already_processed.add('final')
+ outfile.write(' final=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.final), input_name='final')), ))
+ if self.inline is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), ))
+ if self.sealed is not None and 'sealed' not in already_processed:
+ already_processed.add('sealed')
+ outfile.write(' sealed=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.sealed), input_name='sealed')), ))
+ if self.abstract is not None and 'abstract' not in already_processed:
+ already_processed.add('abstract')
+ outfile.write(' abstract=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.abstract), input_name='abstract')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compounddefType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.compoundname is not None:
+ namespaceprefix_ = self.compoundname_nsprefix_ + ':' if (UseCapturedNS_ and self.compoundname_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%scompoundname>%s</%scompoundname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.compoundname), input_name='compoundname')), namespaceprefix_ , eol_))
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for basecompoundref_ in self.basecompoundref:
+ namespaceprefix_ = self.basecompoundref_nsprefix_ + ':' if (UseCapturedNS_ and self.basecompoundref_nsprefix_) else ''
+ basecompoundref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='basecompoundref', pretty_print=pretty_print)
+ for derivedcompoundref_ in self.derivedcompoundref:
+ namespaceprefix_ = self.derivedcompoundref_nsprefix_ + ':' if (UseCapturedNS_ and self.derivedcompoundref_nsprefix_) else ''
+ derivedcompoundref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='derivedcompoundref', pretty_print=pretty_print)
+ for includes_ in self.includes:
+ namespaceprefix_ = self.includes_nsprefix_ + ':' if (UseCapturedNS_ and self.includes_nsprefix_) else ''
+ includes_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='includes', pretty_print=pretty_print)
+ for includedby_ in self.includedby:
+ namespaceprefix_ = self.includedby_nsprefix_ + ':' if (UseCapturedNS_ and self.includedby_nsprefix_) else ''
+ includedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='includedby', pretty_print=pretty_print)
+ if self.incdepgraph is not None:
+ namespaceprefix_ = self.incdepgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.incdepgraph_nsprefix_) else ''
+ self.incdepgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='incdepgraph', pretty_print=pretty_print)
+ if self.invincdepgraph is not None:
+ namespaceprefix_ = self.invincdepgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.invincdepgraph_nsprefix_) else ''
+ self.invincdepgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='invincdepgraph', pretty_print=pretty_print)
+ for innerdir_ in self.innerdir:
+ namespaceprefix_ = self.innerdir_nsprefix_ + ':' if (UseCapturedNS_ and self.innerdir_nsprefix_) else ''
+ innerdir_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerdir', pretty_print=pretty_print)
+ for innerfile_ in self.innerfile:
+ namespaceprefix_ = self.innerfile_nsprefix_ + ':' if (UseCapturedNS_ and self.innerfile_nsprefix_) else ''
+ innerfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerfile', pretty_print=pretty_print)
+ for innerclass_ in self.innerclass:
+ namespaceprefix_ = self.innerclass_nsprefix_ + ':' if (UseCapturedNS_ and self.innerclass_nsprefix_) else ''
+ innerclass_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerclass', pretty_print=pretty_print)
+ for innernamespace_ in self.innernamespace:
+ namespaceprefix_ = self.innernamespace_nsprefix_ + ':' if (UseCapturedNS_ and self.innernamespace_nsprefix_) else ''
+ innernamespace_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innernamespace', pretty_print=pretty_print)
+ for innerpage_ in self.innerpage:
+ namespaceprefix_ = self.innerpage_nsprefix_ + ':' if (UseCapturedNS_ and self.innerpage_nsprefix_) else ''
+ innerpage_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innerpage', pretty_print=pretty_print)
+ for innergroup_ in self.innergroup:
+ namespaceprefix_ = self.innergroup_nsprefix_ + ':' if (UseCapturedNS_ and self.innergroup_nsprefix_) else ''
+ innergroup_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='innergroup', pretty_print=pretty_print)
+ if self.templateparamlist is not None:
+ namespaceprefix_ = self.templateparamlist_nsprefix_ + ':' if (UseCapturedNS_ and self.templateparamlist_nsprefix_) else ''
+ self.templateparamlist.export(outfile, level, namespaceprefix_, namespacedef_='', name_='templateparamlist', pretty_print=pretty_print)
+ for sectiondef_ in self.sectiondef:
+ namespaceprefix_ = self.sectiondef_nsprefix_ + ':' if (UseCapturedNS_ and self.sectiondef_nsprefix_) else ''
+ sectiondef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sectiondef', pretty_print=pretty_print)
+ if self.tableofcontents is not None:
+ namespaceprefix_ = self.tableofcontents_nsprefix_ + ':' if (UseCapturedNS_ and self.tableofcontents_nsprefix_) else ''
+ self.tableofcontents.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tableofcontents', pretty_print=pretty_print)
+ if self.briefdescription is not None:
+ namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else ''
+ self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print)
+ if self.detaileddescription is not None:
+ namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else ''
+ self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print)
+ if self.inheritancegraph is not None:
+ namespaceprefix_ = self.inheritancegraph_nsprefix_ + ':' if (UseCapturedNS_ and self.inheritancegraph_nsprefix_) else ''
+ self.inheritancegraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='inheritancegraph', pretty_print=pretty_print)
+ if self.collaborationgraph is not None:
+ namespaceprefix_ = self.collaborationgraph_nsprefix_ + ':' if (UseCapturedNS_ and self.collaborationgraph_nsprefix_) else ''
+ self.collaborationgraph.export(outfile, level, namespaceprefix_, namespacedef_='', name_='collaborationgraph', pretty_print=pretty_print)
+ if self.programlisting is not None:
+ namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else ''
+ self.programlisting.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print)
+ if self.location is not None:
+ namespaceprefix_ = self.location_nsprefix_ + ':' if (UseCapturedNS_ and self.location_nsprefix_) else ''
+ self.location.export(outfile, level, namespaceprefix_, namespacedef_='', name_='location', pretty_print=pretty_print)
+ if self.listofallmembers is not None:
+ namespaceprefix_ = self.listofallmembers_nsprefix_ + ':' if (UseCapturedNS_ and self.listofallmembers_nsprefix_) else ''
+ self.listofallmembers.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listofallmembers', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_DoxCompoundKind(self.kind) # validate type DoxCompoundKind
+ value = find_attr_value_('language', node)
+ if value is not None and 'language' not in already_processed:
+ already_processed.add('language')
+ self.language = value
+ self.validate_DoxLanguage(self.language) # validate type DoxLanguage
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ value = find_attr_value_('final', node)
+ if value is not None and 'final' not in already_processed:
+ already_processed.add('final')
+ self.final = value
+ self.validate_DoxBool(self.final) # validate type DoxBool
+ value = find_attr_value_('inline', node)
+ if value is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ self.inline = value
+ self.validate_DoxBool(self.inline) # validate type DoxBool
+ value = find_attr_value_('sealed', node)
+ if value is not None and 'sealed' not in already_processed:
+ already_processed.add('sealed')
+ self.sealed = value
+ self.validate_DoxBool(self.sealed) # validate type DoxBool
+ value = find_attr_value_('abstract', node)
+ if value is not None and 'abstract' not in already_processed:
+ already_processed.add('abstract')
+ self.abstract = value
+ self.validate_DoxBool(self.abstract) # validate type DoxBool
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'compoundname':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'compoundname')
+ value_ = self.gds_validate_string(value_, node, 'compoundname')
+ self.compoundname = value_
+ self.compoundname_nsprefix_ = child_.prefix
+ elif nodeName_ == 'title':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'title')
+ value_ = self.gds_validate_string(value_, node, 'title')
+ self.title = value_
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'basecompoundref':
+ obj_ = compoundRefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.basecompoundref.append(obj_)
+ obj_.original_tagname_ = 'basecompoundref'
+ elif nodeName_ == 'derivedcompoundref':
+ obj_ = compoundRefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.derivedcompoundref.append(obj_)
+ obj_.original_tagname_ = 'derivedcompoundref'
+ elif nodeName_ == 'includes':
+ obj_ = incType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.includes.append(obj_)
+ obj_.original_tagname_ = 'includes'
+ elif nodeName_ == 'includedby':
+ obj_ = incType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.includedby.append(obj_)
+ obj_.original_tagname_ = 'includedby'
+ elif nodeName_ == 'incdepgraph':
+ obj_ = graphType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.incdepgraph = obj_
+ obj_.original_tagname_ = 'incdepgraph'
+ elif nodeName_ == 'invincdepgraph':
+ obj_ = graphType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.invincdepgraph = obj_
+ obj_.original_tagname_ = 'invincdepgraph'
+ elif nodeName_ == 'innerdir':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innerdir.append(obj_)
+ obj_.original_tagname_ = 'innerdir'
+ elif nodeName_ == 'innerfile':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innerfile.append(obj_)
+ obj_.original_tagname_ = 'innerfile'
+ elif nodeName_ == 'innerclass':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innerclass.append(obj_)
+ obj_.original_tagname_ = 'innerclass'
+ elif nodeName_ == 'innernamespace':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innernamespace.append(obj_)
+ obj_.original_tagname_ = 'innernamespace'
+ elif nodeName_ == 'innerpage':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innerpage.append(obj_)
+ obj_.original_tagname_ = 'innerpage'
+ elif nodeName_ == 'innergroup':
+ obj_ = refType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.innergroup.append(obj_)
+ obj_.original_tagname_ = 'innergroup'
+ elif nodeName_ == 'templateparamlist':
+ obj_ = templateparamlistType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.templateparamlist = obj_
+ obj_.original_tagname_ = 'templateparamlist'
+ elif nodeName_ == 'sectiondef':
+ obj_ = sectiondefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.sectiondef.append(obj_)
+ obj_.original_tagname_ = 'sectiondef'
+ elif nodeName_ == 'tableofcontents':
+ obj_ = tableofcontentsType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.tableofcontents = obj_
+ obj_.original_tagname_ = 'tableofcontents'
+ elif nodeName_ == 'briefdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.briefdescription = obj_
+ obj_.original_tagname_ = 'briefdescription'
+ elif nodeName_ == 'detaileddescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.detaileddescription = obj_
+ obj_.original_tagname_ = 'detaileddescription'
+ elif nodeName_ == 'inheritancegraph':
+ obj_ = graphType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.inheritancegraph = obj_
+ obj_.original_tagname_ = 'inheritancegraph'
+ elif nodeName_ == 'collaborationgraph':
+ obj_ = graphType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.collaborationgraph = obj_
+ obj_.original_tagname_ = 'collaborationgraph'
+ elif nodeName_ == 'programlisting':
+ obj_ = listingType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.programlisting = obj_
+ obj_.original_tagname_ = 'programlisting'
+ elif nodeName_ == 'location':
+ obj_ = locationType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.location = obj_
+ obj_.original_tagname_ = 'location'
+ elif nodeName_ == 'listofallmembers':
+ obj_ = listofallmembersType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.listofallmembers = obj_
+ obj_.original_tagname_ = 'listofallmembers'
+# end class compounddefType
+
+
+class listofallmembersType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, member=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if member is None:
+ self.member = []
+ else:
+ self.member = member
+ self.member_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, listofallmembersType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if listofallmembersType.subclass:
+ return listofallmembersType.subclass(*args_, **kwargs_)
+ else:
+ return listofallmembersType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_member(self):
+ return self.member
+ def set_member(self, member):
+ self.member = member
+ def add_member(self, value):
+ self.member.append(value)
+ def insert_member_at(self, index, value):
+ self.member.insert(index, value)
+ def replace_member_at(self, index, value):
+ self.member[index] = value
+ def hasContent_(self):
+ if (
+ self.member
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listofallmembersType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('listofallmembersType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'listofallmembersType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='listofallmembersType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='listofallmembersType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='listofallmembersType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listofallmembersType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for member_ in self.member:
+ namespaceprefix_ = self.member_nsprefix_ + ':' if (UseCapturedNS_ and self.member_nsprefix_) else ''
+ member_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='member', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'member':
+ obj_ = memberRefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.member.append(obj_)
+ obj_.original_tagname_ = 'member'
+# end class listofallmembersType
+
+
+class memberRefType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, prot=None, virt=None, ambiguityscope=None, scope=None, name=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.virt = _cast(None, virt)
+ self.virt_nsprefix_ = None
+ self.ambiguityscope = _cast(None, ambiguityscope)
+ self.ambiguityscope_nsprefix_ = None
+ self.scope = scope
+ self.scope_nsprefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, memberRefType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if memberRefType.subclass:
+ return memberRefType.subclass(*args_, **kwargs_)
+ else:
+ return memberRefType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_scope(self):
+ return self.scope
+ def set_scope(self, scope):
+ self.scope = scope
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_virt(self):
+ return self.virt
+ def set_virt(self, virt):
+ self.virt = virt
+ def get_ambiguityscope(self):
+ return self.ambiguityscope
+ def set_ambiguityscope(self, ambiguityscope):
+ self.ambiguityscope = ambiguityscope
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxVirtualKind(self, value):
+ # Validate type DoxVirtualKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['non-virtual', 'virtual', 'pure-virtual']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.scope is not None or
+ self.name is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberRefType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('memberRefType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'memberRefType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='memberRefType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='memberRefType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='memberRefType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ if self.virt is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), ))
+ if self.ambiguityscope is not None and 'ambiguityscope' not in already_processed:
+ already_processed.add('ambiguityscope')
+ outfile.write(' ambiguityscope=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.ambiguityscope), input_name='ambiguityscope')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberRefType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.scope is not None:
+ namespaceprefix_ = self.scope_nsprefix_ + ':' if (UseCapturedNS_ and self.scope_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sscope>%s</%sscope>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.scope), input_name='scope')), namespaceprefix_ , eol_))
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ value = find_attr_value_('virt', node)
+ if value is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ self.virt = value
+ self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind
+ value = find_attr_value_('ambiguityscope', node)
+ if value is not None and 'ambiguityscope' not in already_processed:
+ already_processed.add('ambiguityscope')
+ self.ambiguityscope = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'scope':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'scope')
+ value_ = self.gds_validate_string(value_, node, 'scope')
+ self.scope = value_
+ self.scope_nsprefix_ = child_.prefix
+ elif nodeName_ == 'name':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'name')
+ value_ = self.gds_validate_string(value_, node, 'name')
+ self.name = value_
+ self.name_nsprefix_ = child_.prefix
+# end class memberRefType
+
+
+class scope(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, scope)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if scope.subclass:
+ return scope.subclass(*args_, **kwargs_)
+ else:
+ return scope(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='scope', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('scope')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'scope':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='scope')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='scope', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='scope'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='scope', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class scope
+
+
+class name(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, name)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if name.subclass:
+ return name.subclass(*args_, **kwargs_)
+ else:
+ return name(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='name', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('name')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'name':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='name')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='name', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='name'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='name', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class name
+
+
+class docHtmlOnlyType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, block=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.block = _cast(None, block)
+ self.block_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docHtmlOnlyType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docHtmlOnlyType.subclass:
+ return docHtmlOnlyType.subclass(*args_, **kwargs_)
+ else:
+ return docHtmlOnlyType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_block(self):
+ return self.block
+ def set_block(self, block):
+ self.block = block
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHtmlOnlyType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docHtmlOnlyType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docHtmlOnlyType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docHtmlOnlyType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docHtmlOnlyType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docHtmlOnlyType'):
+ if self.block is not None and 'block' not in already_processed:
+ already_processed.add('block')
+ outfile.write(' block=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.block), input_name='block')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHtmlOnlyType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('block', node)
+ if value is not None and 'block' not in already_processed:
+ already_processed.add('block')
+ self.block = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class docHtmlOnlyType
+
+
+class compoundRefType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, prot=None, virt=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.virt = _cast(None, virt)
+ self.virt_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, compoundRefType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if compoundRefType.subclass:
+ return compoundRefType.subclass(*args_, **kwargs_)
+ else:
+ return compoundRefType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_virt(self):
+ return self.virt
+ def set_virt(self, virt):
+ self.virt = virt
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxVirtualKind(self, value):
+ # Validate type DoxVirtualKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['non-virtual', 'virtual', 'pure-virtual']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compoundRefType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('compoundRefType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'compoundRefType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='compoundRefType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='compoundRefType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='compoundRefType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ if self.virt is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='compoundRefType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ value = find_attr_value_('virt', node)
+ if value is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ self.virt = value
+ self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class compoundRefType
+
+
+class reimplementType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, reimplementType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if reimplementType.subclass:
+ return reimplementType.subclass(*args_, **kwargs_)
+ else:
+ return reimplementType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='reimplementType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('reimplementType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'reimplementType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='reimplementType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='reimplementType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='reimplementType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='reimplementType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class reimplementType
+
+
+class incType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, local=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.local = _cast(None, local)
+ self.local_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, incType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if incType.subclass:
+ return incType.subclass(*args_, **kwargs_)
+ else:
+ return incType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_local(self):
+ return self.local
+ def set_local(self, local):
+ self.local = local
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='incType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('incType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'incType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='incType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='incType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='incType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.local is not None and 'local' not in already_processed:
+ already_processed.add('local')
+ outfile.write(' local=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.local), input_name='local')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='incType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('local', node)
+ if value is not None and 'local' not in already_processed:
+ already_processed.add('local')
+ self.local = value
+ self.validate_DoxBool(self.local) # validate type DoxBool
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class incType
+
+
+class refType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, prot=None, inline=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.inline = _cast(None, inline)
+ self.inline_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, refType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if refType.subclass:
+ return refType.subclass(*args_, **kwargs_)
+ else:
+ return refType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_inline(self):
+ return self.inline
+ def set_inline(self, inline):
+ self.inline = inline
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('refType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'refType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='refType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='refType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='refType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ if self.inline is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ value = find_attr_value_('inline', node)
+ if value is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ self.inline = value
+ self.validate_DoxBool(self.inline) # validate type DoxBool
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class refType
+
+
+class refTextType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, kindref=None, external=None, tooltip=None, valueOf_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.kindref = _cast(None, kindref)
+ self.kindref_nsprefix_ = None
+ self.external = _cast(None, external)
+ self.external_nsprefix_ = None
+ self.tooltip = _cast(None, tooltip)
+ self.tooltip_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, refTextType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if refTextType.subclass:
+ return refTextType.subclass(*args_, **kwargs_)
+ else:
+ return refTextType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_kindref(self):
+ return self.kindref
+ def set_kindref(self, kindref):
+ self.kindref = kindref
+ def get_external(self):
+ return self.external
+ def set_external(self, external):
+ self.external = external
+ def get_tooltip(self):
+ return self.tooltip
+ def set_tooltip(self, tooltip):
+ self.tooltip = tooltip
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxRefKind(self, value):
+ # Validate type DoxRefKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['compound', 'member']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_)
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refTextType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('refTextType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'refTextType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='refTextType')
+ if self.hasContent_():
+ outfile.write('>')
+ outfile.write(self.convert_unicode(self.valueOf_))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='refTextType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='refTextType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.kindref is not None and 'kindref' not in already_processed:
+ already_processed.add('kindref')
+ outfile.write(' kindref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kindref), input_name='kindref')), ))
+ if self.external is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), ))
+ if self.tooltip is not None and 'tooltip' not in already_processed:
+ already_processed.add('tooltip')
+ outfile.write(' tooltip=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.tooltip), input_name='tooltip')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='refTextType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('kindref', node)
+ if value is not None and 'kindref' not in already_processed:
+ already_processed.add('kindref')
+ self.kindref = value
+ self.validate_DoxRefKind(self.kindref) # validate type DoxRefKind
+ value = find_attr_value_('external', node)
+ if value is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ self.external = value
+ value = find_attr_value_('tooltip', node)
+ if value is not None and 'tooltip' not in already_processed:
+ already_processed.add('tooltip')
+ self.tooltip = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class refTextType
+
+
+class sectiondefType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, kind=None, header=None, description=None, memberdef=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.header = header
+ self.header_nsprefix_ = None
+ self.description = description
+ self.description_nsprefix_ = None
+ if memberdef is None:
+ self.memberdef = []
+ else:
+ self.memberdef = memberdef
+ self.memberdef_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, sectiondefType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if sectiondefType.subclass:
+ return sectiondefType.subclass(*args_, **kwargs_)
+ else:
+ return sectiondefType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_header(self):
+ return self.header
+ def set_header(self, header):
+ self.header = header
+ def get_description(self):
+ return self.description
+ def set_description(self, description):
+ self.description = description
+ def get_memberdef(self):
+ return self.memberdef
+ def set_memberdef(self, memberdef):
+ self.memberdef = memberdef
+ def add_memberdef(self, value):
+ self.memberdef.append(value)
+ def insert_memberdef_at(self, index, value):
+ self.memberdef.insert(index, value)
+ def replace_memberdef_at(self, index, value):
+ self.memberdef[index] = value
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def validate_DoxSectionKind(self, value):
+ # Validate type DoxSectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['user-defined', 'public-type', 'public-func', 'public-attrib', 'public-slot', 'signal', 'dcop-func', 'property', 'event', 'public-static-func', 'public-static-attrib', 'protected-type', 'protected-func', 'protected-attrib', 'protected-slot', 'protected-static-func', 'protected-static-attrib', 'package-type', 'package-func', 'package-attrib', 'package-static-func', 'package-static-attrib', 'private-type', 'private-func', 'private-attrib', 'private-slot', 'private-static-func', 'private-static-attrib', 'friend', 'related', 'define', 'prototype', 'typedef', 'enum', 'func', 'var']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxSectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.header is not None or
+ self.description is not None or
+ self.memberdef
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='sectiondefType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('sectiondefType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'sectiondefType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='sectiondefType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='sectiondefType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='sectiondefType'):
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='sectiondefType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.header is not None:
+ namespaceprefix_ = self.header_nsprefix_ + ':' if (UseCapturedNS_ and self.header_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sheader>%s</%sheader>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.header), input_name='header')), namespaceprefix_ , eol_))
+ if self.description is not None:
+ namespaceprefix_ = self.description_nsprefix_ + ':' if (UseCapturedNS_ and self.description_nsprefix_) else ''
+ self.description.export(outfile, level, namespaceprefix_, namespacedef_='', name_='description', pretty_print=pretty_print)
+ for memberdef_ in self.memberdef:
+ namespaceprefix_ = self.memberdef_nsprefix_ + ':' if (UseCapturedNS_ and self.memberdef_nsprefix_) else ''
+ memberdef_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='memberdef', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_DoxSectionKind(self.kind) # validate type DoxSectionKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'header':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'header')
+ value_ = self.gds_validate_string(value_, node, 'header')
+ self.header = value_
+ self.header_nsprefix_ = child_.prefix
+ elif nodeName_ == 'description':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.description = obj_
+ obj_.original_tagname_ = 'description'
+ elif nodeName_ == 'memberdef':
+ obj_ = memberdefType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.memberdef.append(obj_)
+ obj_.original_tagname_ = 'memberdef'
+# end class sectiondefType
+
+
+class memberdefType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, kind=None, id=None, prot=None, static=None, strong=None, const=None, explicit=None, inline=None, refqual=None, virt=None, volatile=None, mutable=None, noexcept=None, constexpr=None, readable=None, writable=None, initonly=None, settable=None, privatesettable=None, protectedsettable=None, gettable=None, privategettable=None, protectedgettable=None, final=None, sealed=None, new=None, add=None, remove=None, raise_=None, optional=None, required=None, accessor=None, attribute=None, property=None, readonly=None, bound=None, removable=None, constrained=None, transient=None, maybevoid=None, maybedefault=None, maybeambiguous=None, templateparamlist=None, type_=None, definition=None, argsstring=None, name=None, read=None, write=None, bitfield=None, reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.static = _cast(None, static)
+ self.static_nsprefix_ = None
+ self.strong = _cast(None, strong)
+ self.strong_nsprefix_ = None
+ self.const = _cast(None, const)
+ self.const_nsprefix_ = None
+ self.explicit = _cast(None, explicit)
+ self.explicit_nsprefix_ = None
+ self.inline = _cast(None, inline)
+ self.inline_nsprefix_ = None
+ self.refqual = _cast(None, refqual)
+ self.refqual_nsprefix_ = None
+ self.virt = _cast(None, virt)
+ self.virt_nsprefix_ = None
+ self.volatile = _cast(None, volatile)
+ self.volatile_nsprefix_ = None
+ self.mutable = _cast(None, mutable)
+ self.mutable_nsprefix_ = None
+ self.noexcept = _cast(None, noexcept)
+ self.noexcept_nsprefix_ = None
+ self.constexpr = _cast(None, constexpr)
+ self.constexpr_nsprefix_ = None
+ self.readable = _cast(None, readable)
+ self.readable_nsprefix_ = None
+ self.writable = _cast(None, writable)
+ self.writable_nsprefix_ = None
+ self.initonly = _cast(None, initonly)
+ self.initonly_nsprefix_ = None
+ self.settable = _cast(None, settable)
+ self.settable_nsprefix_ = None
+ self.privatesettable = _cast(None, privatesettable)
+ self.privatesettable_nsprefix_ = None
+ self.protectedsettable = _cast(None, protectedsettable)
+ self.protectedsettable_nsprefix_ = None
+ self.gettable = _cast(None, gettable)
+ self.gettable_nsprefix_ = None
+ self.privategettable = _cast(None, privategettable)
+ self.privategettable_nsprefix_ = None
+ self.protectedgettable = _cast(None, protectedgettable)
+ self.protectedgettable_nsprefix_ = None
+ self.final = _cast(None, final)
+ self.final_nsprefix_ = None
+ self.sealed = _cast(None, sealed)
+ self.sealed_nsprefix_ = None
+ self.new = _cast(None, new)
+ self.new_nsprefix_ = None
+ self.add = _cast(None, add)
+ self.add_nsprefix_ = None
+ self.remove = _cast(None, remove)
+ self.remove_nsprefix_ = None
+ self.raise_ = _cast(None, raise_)
+ self.raise__nsprefix_ = None
+ self.optional = _cast(None, optional)
+ self.optional_nsprefix_ = None
+ self.required = _cast(None, required)
+ self.required_nsprefix_ = None
+ self.accessor = _cast(None, accessor)
+ self.accessor_nsprefix_ = None
+ self.attribute = _cast(None, attribute)
+ self.attribute_nsprefix_ = None
+ self.property = _cast(None, property)
+ self.property_nsprefix_ = None
+ self.readonly = _cast(None, readonly)
+ self.readonly_nsprefix_ = None
+ self.bound = _cast(None, bound)
+ self.bound_nsprefix_ = None
+ self.removable = _cast(None, removable)
+ self.removable_nsprefix_ = None
+ self.constrained = _cast(None, constrained)
+ self.constrained_nsprefix_ = None
+ self.transient = _cast(None, transient)
+ self.transient_nsprefix_ = None
+ self.maybevoid = _cast(None, maybevoid)
+ self.maybevoid_nsprefix_ = None
+ self.maybedefault = _cast(None, maybedefault)
+ self.maybedefault_nsprefix_ = None
+ self.maybeambiguous = _cast(None, maybeambiguous)
+ self.maybeambiguous_nsprefix_ = None
+ self.templateparamlist = templateparamlist
+ self.templateparamlist_nsprefix_ = None
+ self.type_ = type_
+ self.type__nsprefix_ = None
+ self.definition = definition
+ self.definition_nsprefix_ = None
+ self.argsstring = argsstring
+ self.argsstring_nsprefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ self.read = read
+ self.read_nsprefix_ = None
+ self.write = write
+ self.write_nsprefix_ = None
+ self.bitfield = bitfield
+ self.bitfield_nsprefix_ = None
+ if reimplements is None:
+ self.reimplements = []
+ else:
+ self.reimplements = reimplements
+ self.reimplements_nsprefix_ = None
+ if reimplementedby is None:
+ self.reimplementedby = []
+ else:
+ self.reimplementedby = reimplementedby
+ self.reimplementedby_nsprefix_ = None
+ if param is None:
+ self.param = []
+ else:
+ self.param = param
+ self.param_nsprefix_ = None
+ if enumvalue is None:
+ self.enumvalue = []
+ else:
+ self.enumvalue = enumvalue
+ self.enumvalue_nsprefix_ = None
+ self.initializer = initializer
+ self.initializer_nsprefix_ = None
+ self.exceptions = exceptions
+ self.exceptions_nsprefix_ = None
+ self.briefdescription = briefdescription
+ self.briefdescription_nsprefix_ = None
+ self.detaileddescription = detaileddescription
+ self.detaileddescription_nsprefix_ = None
+ self.inbodydescription = inbodydescription
+ self.inbodydescription_nsprefix_ = None
+ self.location = location
+ self.location_nsprefix_ = None
+ if references is None:
+ self.references = []
+ else:
+ self.references = references
+ self.references_nsprefix_ = None
+ if referencedby is None:
+ self.referencedby = []
+ else:
+ self.referencedby = referencedby
+ self.referencedby_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, memberdefType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if memberdefType.subclass:
+ return memberdefType.subclass(*args_, **kwargs_)
+ else:
+ return memberdefType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_templateparamlist(self):
+ return self.templateparamlist
+ def set_templateparamlist(self, templateparamlist):
+ self.templateparamlist = templateparamlist
+ def get_type(self):
+ return self.type_
+ def set_type(self, type_):
+ self.type_ = type_
+ def get_definition(self):
+ return self.definition
+ def set_definition(self, definition):
+ self.definition = definition
+ def get_argsstring(self):
+ return self.argsstring
+ def set_argsstring(self, argsstring):
+ self.argsstring = argsstring
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_read(self):
+ return self.read
+ def set_read(self, read):
+ self.read = read
+ def get_write(self):
+ return self.write
+ def set_write(self, write):
+ self.write = write
+ def get_bitfield(self):
+ return self.bitfield
+ def set_bitfield(self, bitfield):
+ self.bitfield = bitfield
+ def get_reimplements(self):
+ return self.reimplements
+ def set_reimplements(self, reimplements):
+ self.reimplements = reimplements
+ def add_reimplements(self, value):
+ self.reimplements.append(value)
+ def insert_reimplements_at(self, index, value):
+ self.reimplements.insert(index, value)
+ def replace_reimplements_at(self, index, value):
+ self.reimplements[index] = value
+ def get_reimplementedby(self):
+ return self.reimplementedby
+ def set_reimplementedby(self, reimplementedby):
+ self.reimplementedby = reimplementedby
+ def add_reimplementedby(self, value):
+ self.reimplementedby.append(value)
+ def insert_reimplementedby_at(self, index, value):
+ self.reimplementedby.insert(index, value)
+ def replace_reimplementedby_at(self, index, value):
+ self.reimplementedby[index] = value
+ def get_param(self):
+ return self.param
+ def set_param(self, param):
+ self.param = param
+ def add_param(self, value):
+ self.param.append(value)
+ def insert_param_at(self, index, value):
+ self.param.insert(index, value)
+ def replace_param_at(self, index, value):
+ self.param[index] = value
+ def get_enumvalue(self):
+ return self.enumvalue
+ def set_enumvalue(self, enumvalue):
+ self.enumvalue = enumvalue
+ def add_enumvalue(self, value):
+ self.enumvalue.append(value)
+ def insert_enumvalue_at(self, index, value):
+ self.enumvalue.insert(index, value)
+ def replace_enumvalue_at(self, index, value):
+ self.enumvalue[index] = value
+ def get_initializer(self):
+ return self.initializer
+ def set_initializer(self, initializer):
+ self.initializer = initializer
+ def get_exceptions(self):
+ return self.exceptions
+ def set_exceptions(self, exceptions):
+ self.exceptions = exceptions
+ def get_briefdescription(self):
+ return self.briefdescription
+ def set_briefdescription(self, briefdescription):
+ self.briefdescription = briefdescription
+ def get_detaileddescription(self):
+ return self.detaileddescription
+ def set_detaileddescription(self, detaileddescription):
+ self.detaileddescription = detaileddescription
+ def get_inbodydescription(self):
+ return self.inbodydescription
+ def set_inbodydescription(self, inbodydescription):
+ self.inbodydescription = inbodydescription
+ def get_location(self):
+ return self.location
+ def set_location(self, location):
+ self.location = location
+ def get_references(self):
+ return self.references
+ def set_references(self, references):
+ self.references = references
+ def add_references(self, value):
+ self.references.append(value)
+ def insert_references_at(self, index, value):
+ self.references.insert(index, value)
+ def replace_references_at(self, index, value):
+ self.references[index] = value
+ def get_referencedby(self):
+ return self.referencedby
+ def set_referencedby(self, referencedby):
+ self.referencedby = referencedby
+ def add_referencedby(self, value):
+ self.referencedby.append(value)
+ def insert_referencedby_at(self, index, value):
+ self.referencedby.insert(index, value)
+ def replace_referencedby_at(self, index, value):
+ self.referencedby[index] = value
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_static(self):
+ return self.static
+ def set_static(self, static):
+ self.static = static
+ def get_strong(self):
+ return self.strong
+ def set_strong(self, strong):
+ self.strong = strong
+ def get_const(self):
+ return self.const
+ def set_const(self, const):
+ self.const = const
+ def get_explicit(self):
+ return self.explicit
+ def set_explicit(self, explicit):
+ self.explicit = explicit
+ def get_inline(self):
+ return self.inline
+ def set_inline(self, inline):
+ self.inline = inline
+ def get_refqual(self):
+ return self.refqual
+ def set_refqual(self, refqual):
+ self.refqual = refqual
+ def get_virt(self):
+ return self.virt
+ def set_virt(self, virt):
+ self.virt = virt
+ def get_volatile(self):
+ return self.volatile
+ def set_volatile(self, volatile):
+ self.volatile = volatile
+ def get_mutable(self):
+ return self.mutable
+ def set_mutable(self, mutable):
+ self.mutable = mutable
+ def get_noexcept(self):
+ return self.noexcept
+ def set_noexcept(self, noexcept):
+ self.noexcept = noexcept
+ def get_constexpr(self):
+ return self.constexpr
+ def set_constexpr(self, constexpr):
+ self.constexpr = constexpr
+ def get_readable(self):
+ return self.readable
+ def set_readable(self, readable):
+ self.readable = readable
+ def get_writable(self):
+ return self.writable
+ def set_writable(self, writable):
+ self.writable = writable
+ def get_initonly(self):
+ return self.initonly
+ def set_initonly(self, initonly):
+ self.initonly = initonly
+ def get_settable(self):
+ return self.settable
+ def set_settable(self, settable):
+ self.settable = settable
+ def get_privatesettable(self):
+ return self.privatesettable
+ def set_privatesettable(self, privatesettable):
+ self.privatesettable = privatesettable
+ def get_protectedsettable(self):
+ return self.protectedsettable
+ def set_protectedsettable(self, protectedsettable):
+ self.protectedsettable = protectedsettable
+ def get_gettable(self):
+ return self.gettable
+ def set_gettable(self, gettable):
+ self.gettable = gettable
+ def get_privategettable(self):
+ return self.privategettable
+ def set_privategettable(self, privategettable):
+ self.privategettable = privategettable
+ def get_protectedgettable(self):
+ return self.protectedgettable
+ def set_protectedgettable(self, protectedgettable):
+ self.protectedgettable = protectedgettable
+ def get_final(self):
+ return self.final
+ def set_final(self, final):
+ self.final = final
+ def get_sealed(self):
+ return self.sealed
+ def set_sealed(self, sealed):
+ self.sealed = sealed
+ def get_new(self):
+ return self.new
+ def set_new(self, new):
+ self.new = new
+ def get_add(self):
+ return self.add
+ def set_add(self, add):
+ self.add = add
+ def get_remove(self):
+ return self.remove
+ def set_remove(self, remove):
+ self.remove = remove
+ def get_raise(self):
+ return self.raise_
+ def set_raise(self, raise_):
+ self.raise_ = raise_
+ def get_optional(self):
+ return self.optional
+ def set_optional(self, optional):
+ self.optional = optional
+ def get_required(self):
+ return self.required
+ def set_required(self, required):
+ self.required = required
+ def get_accessor(self):
+ return self.accessor
+ def set_accessor(self, accessor):
+ self.accessor = accessor
+ def get_attribute(self):
+ return self.attribute
+ def set_attribute(self, attribute):
+ self.attribute = attribute
+ def get_property(self):
+ return self.property
+ def set_property(self, property):
+ self.property = property
+ def get_readonly(self):
+ return self.readonly
+ def set_readonly(self, readonly):
+ self.readonly = readonly
+ def get_bound(self):
+ return self.bound
+ def set_bound(self, bound):
+ self.bound = bound
+ def get_removable(self):
+ return self.removable
+ def set_removable(self, removable):
+ self.removable = removable
+ def get_constrained(self):
+ return self.constrained
+ def set_constrained(self, constrained):
+ self.constrained = constrained
+ def get_transient(self):
+ return self.transient
+ def set_transient(self, transient):
+ self.transient = transient
+ def get_maybevoid(self):
+ return self.maybevoid
+ def set_maybevoid(self, maybevoid):
+ self.maybevoid = maybevoid
+ def get_maybedefault(self):
+ return self.maybedefault
+ def set_maybedefault(self, maybedefault):
+ self.maybedefault = maybedefault
+ def get_maybeambiguous(self):
+ return self.maybeambiguous
+ def set_maybeambiguous(self, maybeambiguous):
+ self.maybeambiguous = maybeambiguous
+ def validate_DoxMemberKind(self, value):
+ # Validate type DoxMemberKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['define', 'property', 'event', 'variable', 'typedef', 'enum', 'function', 'signal', 'prototype', 'friend', 'dcop', 'slot', 'interface', 'service']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxMemberKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxRefQualifierKind(self, value):
+ # Validate type DoxRefQualifierKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['lvalue', 'rvalue']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefQualifierKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxVirtualKind(self, value):
+ # Validate type DoxVirtualKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['non-virtual', 'virtual', 'pure-virtual']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVirtualKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxAccessor(self, value):
+ # Validate type DoxAccessor, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['retain', 'copy', 'assign', 'weak', 'strong', 'unretained']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxAccessor' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.templateparamlist is not None or
+ self.type_ is not None or
+ self.definition is not None or
+ self.argsstring is not None or
+ self.name is not None or
+ self.read is not None or
+ self.write is not None or
+ self.bitfield is not None or
+ self.reimplements or
+ self.reimplementedby or
+ self.param or
+ self.enumvalue or
+ self.initializer is not None or
+ self.exceptions is not None or
+ self.briefdescription is not None or
+ self.detaileddescription is not None or
+ self.inbodydescription is not None or
+ self.location is not None or
+ self.references or
+ self.referencedby
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberdefType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('memberdefType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'memberdefType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='memberdefType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='memberdefType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='memberdefType'):
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ if self.static is not None and 'static' not in already_processed:
+ already_processed.add('static')
+ outfile.write(' static=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.static), input_name='static')), ))
+ if self.strong is not None and 'strong' not in already_processed:
+ already_processed.add('strong')
+ outfile.write(' strong=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.strong), input_name='strong')), ))
+ if self.const is not None and 'const' not in already_processed:
+ already_processed.add('const')
+ outfile.write(' const=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.const), input_name='const')), ))
+ if self.explicit is not None and 'explicit' not in already_processed:
+ already_processed.add('explicit')
+ outfile.write(' explicit=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.explicit), input_name='explicit')), ))
+ if self.inline is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), ))
+ if self.refqual is not None and 'refqual' not in already_processed:
+ already_processed.add('refqual')
+ outfile.write(' refqual=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refqual), input_name='refqual')), ))
+ if self.virt is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ outfile.write(' virt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.virt), input_name='virt')), ))
+ if self.volatile is not None and 'volatile' not in already_processed:
+ already_processed.add('volatile')
+ outfile.write(' volatile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.volatile), input_name='volatile')), ))
+ if self.mutable is not None and 'mutable' not in already_processed:
+ already_processed.add('mutable')
+ outfile.write(' mutable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.mutable), input_name='mutable')), ))
+ if self.noexcept is not None and 'noexcept' not in already_processed:
+ already_processed.add('noexcept')
+ outfile.write(' noexcept=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.noexcept), input_name='noexcept')), ))
+ if self.constexpr is not None and 'constexpr' not in already_processed:
+ already_processed.add('constexpr')
+ outfile.write(' constexpr=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.constexpr), input_name='constexpr')), ))
+ if self.readable is not None and 'readable' not in already_processed:
+ already_processed.add('readable')
+ outfile.write(' readable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.readable), input_name='readable')), ))
+ if self.writable is not None and 'writable' not in already_processed:
+ already_processed.add('writable')
+ outfile.write(' writable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.writable), input_name='writable')), ))
+ if self.initonly is not None and 'initonly' not in already_processed:
+ already_processed.add('initonly')
+ outfile.write(' initonly=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.initonly), input_name='initonly')), ))
+ if self.settable is not None and 'settable' not in already_processed:
+ already_processed.add('settable')
+ outfile.write(' settable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.settable), input_name='settable')), ))
+ if self.privatesettable is not None and 'privatesettable' not in already_processed:
+ already_processed.add('privatesettable')
+ outfile.write(' privatesettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.privatesettable), input_name='privatesettable')), ))
+ if self.protectedsettable is not None and 'protectedsettable' not in already_processed:
+ already_processed.add('protectedsettable')
+ outfile.write(' protectedsettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.protectedsettable), input_name='protectedsettable')), ))
+ if self.gettable is not None and 'gettable' not in already_processed:
+ already_processed.add('gettable')
+ outfile.write(' gettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.gettable), input_name='gettable')), ))
+ if self.privategettable is not None and 'privategettable' not in already_processed:
+ already_processed.add('privategettable')
+ outfile.write(' privategettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.privategettable), input_name='privategettable')), ))
+ if self.protectedgettable is not None and 'protectedgettable' not in already_processed:
+ already_processed.add('protectedgettable')
+ outfile.write(' protectedgettable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.protectedgettable), input_name='protectedgettable')), ))
+ if self.final is not None and 'final' not in already_processed:
+ already_processed.add('final')
+ outfile.write(' final=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.final), input_name='final')), ))
+ if self.sealed is not None and 'sealed' not in already_processed:
+ already_processed.add('sealed')
+ outfile.write(' sealed=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.sealed), input_name='sealed')), ))
+ if self.new is not None and 'new' not in already_processed:
+ already_processed.add('new')
+ outfile.write(' new=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.new), input_name='new')), ))
+ if self.add is not None and 'add' not in already_processed:
+ already_processed.add('add')
+ outfile.write(' add=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.add), input_name='add')), ))
+ if self.remove is not None and 'remove' not in already_processed:
+ already_processed.add('remove')
+ outfile.write(' remove=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.remove), input_name='remove')), ))
+ if self.raise_ is not None and 'raise_' not in already_processed:
+ already_processed.add('raise_')
+ outfile.write(' raise=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.raise_), input_name='raise')), ))
+ if self.optional is not None and 'optional' not in already_processed:
+ already_processed.add('optional')
+ outfile.write(' optional=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.optional), input_name='optional')), ))
+ if self.required is not None and 'required' not in already_processed:
+ already_processed.add('required')
+ outfile.write(' required=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.required), input_name='required')), ))
+ if self.accessor is not None and 'accessor' not in already_processed:
+ already_processed.add('accessor')
+ outfile.write(' accessor=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.accessor), input_name='accessor')), ))
+ if self.attribute is not None and 'attribute' not in already_processed:
+ already_processed.add('attribute')
+ outfile.write(' attribute=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.attribute), input_name='attribute')), ))
+ if self.property is not None and 'property' not in already_processed:
+ already_processed.add('property')
+ outfile.write(' property=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.property), input_name='property')), ))
+ if self.readonly is not None and 'readonly' not in already_processed:
+ already_processed.add('readonly')
+ outfile.write(' readonly=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.readonly), input_name='readonly')), ))
+ if self.bound is not None and 'bound' not in already_processed:
+ already_processed.add('bound')
+ outfile.write(' bound=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.bound), input_name='bound')), ))
+ if self.removable is not None and 'removable' not in already_processed:
+ already_processed.add('removable')
+ outfile.write(' removable=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.removable), input_name='removable')), ))
+ if self.constrained is not None and 'constrained' not in already_processed:
+ already_processed.add('constrained')
+ outfile.write(' constrained=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.constrained), input_name='constrained')), ))
+ if self.transient is not None and 'transient' not in already_processed:
+ already_processed.add('transient')
+ outfile.write(' transient=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.transient), input_name='transient')), ))
+ if self.maybevoid is not None and 'maybevoid' not in already_processed:
+ already_processed.add('maybevoid')
+ outfile.write(' maybevoid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybevoid), input_name='maybevoid')), ))
+ if self.maybedefault is not None and 'maybedefault' not in already_processed:
+ already_processed.add('maybedefault')
+ outfile.write(' maybedefault=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybedefault), input_name='maybedefault')), ))
+ if self.maybeambiguous is not None and 'maybeambiguous' not in already_processed:
+ already_processed.add('maybeambiguous')
+ outfile.write(' maybeambiguous=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.maybeambiguous), input_name='maybeambiguous')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='memberdefType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.templateparamlist is not None:
+ namespaceprefix_ = self.templateparamlist_nsprefix_ + ':' if (UseCapturedNS_ and self.templateparamlist_nsprefix_) else ''
+ self.templateparamlist.export(outfile, level, namespaceprefix_, namespacedef_='', name_='templateparamlist', pretty_print=pretty_print)
+ if self.type_ is not None:
+ namespaceprefix_ = self.type__nsprefix_ + ':' if (UseCapturedNS_ and self.type__nsprefix_) else ''
+ self.type_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='type', pretty_print=pretty_print)
+ if self.definition is not None:
+ namespaceprefix_ = self.definition_nsprefix_ + ':' if (UseCapturedNS_ and self.definition_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdefinition>%s</%sdefinition>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.definition), input_name='definition')), namespaceprefix_ , eol_))
+ if self.argsstring is not None:
+ namespaceprefix_ = self.argsstring_nsprefix_ + ':' if (UseCapturedNS_ and self.argsstring_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sargsstring>%s</%sargsstring>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.argsstring), input_name='argsstring')), namespaceprefix_ , eol_))
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ if self.read is not None:
+ namespaceprefix_ = self.read_nsprefix_ + ':' if (UseCapturedNS_ and self.read_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sread>%s</%sread>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.read), input_name='read')), namespaceprefix_ , eol_))
+ if self.write is not None:
+ namespaceprefix_ = self.write_nsprefix_ + ':' if (UseCapturedNS_ and self.write_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%swrite>%s</%swrite>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.write), input_name='write')), namespaceprefix_ , eol_))
+ if self.bitfield is not None:
+ namespaceprefix_ = self.bitfield_nsprefix_ + ':' if (UseCapturedNS_ and self.bitfield_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sbitfield>%s</%sbitfield>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.bitfield), input_name='bitfield')), namespaceprefix_ , eol_))
+ for reimplements_ in self.reimplements:
+ namespaceprefix_ = self.reimplements_nsprefix_ + ':' if (UseCapturedNS_ and self.reimplements_nsprefix_) else ''
+ reimplements_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='reimplements', pretty_print=pretty_print)
+ for reimplementedby_ in self.reimplementedby:
+ namespaceprefix_ = self.reimplementedby_nsprefix_ + ':' if (UseCapturedNS_ and self.reimplementedby_nsprefix_) else ''
+ reimplementedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='reimplementedby', pretty_print=pretty_print)
+ for param_ in self.param:
+ namespaceprefix_ = self.param_nsprefix_ + ':' if (UseCapturedNS_ and self.param_nsprefix_) else ''
+ param_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='param', pretty_print=pretty_print)
+ for enumvalue_ in self.enumvalue:
+ namespaceprefix_ = self.enumvalue_nsprefix_ + ':' if (UseCapturedNS_ and self.enumvalue_nsprefix_) else ''
+ enumvalue_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='enumvalue', pretty_print=pretty_print)
+ if self.initializer is not None:
+ namespaceprefix_ = self.initializer_nsprefix_ + ':' if (UseCapturedNS_ and self.initializer_nsprefix_) else ''
+ self.initializer.export(outfile, level, namespaceprefix_, namespacedef_='', name_='initializer', pretty_print=pretty_print)
+ if self.exceptions is not None:
+ namespaceprefix_ = self.exceptions_nsprefix_ + ':' if (UseCapturedNS_ and self.exceptions_nsprefix_) else ''
+ self.exceptions.export(outfile, level, namespaceprefix_, namespacedef_='', name_='exceptions', pretty_print=pretty_print)
+ if self.briefdescription is not None:
+ namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else ''
+ self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print)
+ if self.detaileddescription is not None:
+ namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else ''
+ self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print)
+ if self.inbodydescription is not None:
+ namespaceprefix_ = self.inbodydescription_nsprefix_ + ':' if (UseCapturedNS_ and self.inbodydescription_nsprefix_) else ''
+ self.inbodydescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='inbodydescription', pretty_print=pretty_print)
+ if self.location is not None:
+ namespaceprefix_ = self.location_nsprefix_ + ':' if (UseCapturedNS_ and self.location_nsprefix_) else ''
+ self.location.export(outfile, level, namespaceprefix_, namespacedef_='', name_='location', pretty_print=pretty_print)
+ for references_ in self.references:
+ namespaceprefix_ = self.references_nsprefix_ + ':' if (UseCapturedNS_ and self.references_nsprefix_) else ''
+ references_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='references', pretty_print=pretty_print)
+ for referencedby_ in self.referencedby:
+ namespaceprefix_ = self.referencedby_nsprefix_ + ':' if (UseCapturedNS_ and self.referencedby_nsprefix_) else ''
+ referencedby_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='referencedby', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_DoxMemberKind(self.kind) # validate type DoxMemberKind
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ value = find_attr_value_('static', node)
+ if value is not None and 'static' not in already_processed:
+ already_processed.add('static')
+ self.static = value
+ self.validate_DoxBool(self.static) # validate type DoxBool
+ value = find_attr_value_('strong', node)
+ if value is not None and 'strong' not in already_processed:
+ already_processed.add('strong')
+ self.strong = value
+ self.validate_DoxBool(self.strong) # validate type DoxBool
+ value = find_attr_value_('const', node)
+ if value is not None and 'const' not in already_processed:
+ already_processed.add('const')
+ self.const = value
+ self.validate_DoxBool(self.const) # validate type DoxBool
+ value = find_attr_value_('explicit', node)
+ if value is not None and 'explicit' not in already_processed:
+ already_processed.add('explicit')
+ self.explicit = value
+ self.validate_DoxBool(self.explicit) # validate type DoxBool
+ value = find_attr_value_('inline', node)
+ if value is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ self.inline = value
+ self.validate_DoxBool(self.inline) # validate type DoxBool
+ value = find_attr_value_('refqual', node)
+ if value is not None and 'refqual' not in already_processed:
+ already_processed.add('refqual')
+ self.refqual = value
+ self.validate_DoxRefQualifierKind(self.refqual) # validate type DoxRefQualifierKind
+ value = find_attr_value_('virt', node)
+ if value is not None and 'virt' not in already_processed:
+ already_processed.add('virt')
+ self.virt = value
+ self.validate_DoxVirtualKind(self.virt) # validate type DoxVirtualKind
+ value = find_attr_value_('volatile', node)
+ if value is not None and 'volatile' not in already_processed:
+ already_processed.add('volatile')
+ self.volatile = value
+ self.validate_DoxBool(self.volatile) # validate type DoxBool
+ value = find_attr_value_('mutable', node)
+ if value is not None and 'mutable' not in already_processed:
+ already_processed.add('mutable')
+ self.mutable = value
+ self.validate_DoxBool(self.mutable) # validate type DoxBool
+ value = find_attr_value_('noexcept', node)
+ if value is not None and 'noexcept' not in already_processed:
+ already_processed.add('noexcept')
+ self.noexcept = value
+ self.validate_DoxBool(self.noexcept) # validate type DoxBool
+ value = find_attr_value_('constexpr', node)
+ if value is not None and 'constexpr' not in already_processed:
+ already_processed.add('constexpr')
+ self.constexpr = value
+ self.validate_DoxBool(self.constexpr) # validate type DoxBool
+ value = find_attr_value_('readable', node)
+ if value is not None and 'readable' not in already_processed:
+ already_processed.add('readable')
+ self.readable = value
+ self.validate_DoxBool(self.readable) # validate type DoxBool
+ value = find_attr_value_('writable', node)
+ if value is not None and 'writable' not in already_processed:
+ already_processed.add('writable')
+ self.writable = value
+ self.validate_DoxBool(self.writable) # validate type DoxBool
+ value = find_attr_value_('initonly', node)
+ if value is not None and 'initonly' not in already_processed:
+ already_processed.add('initonly')
+ self.initonly = value
+ self.validate_DoxBool(self.initonly) # validate type DoxBool
+ value = find_attr_value_('settable', node)
+ if value is not None and 'settable' not in already_processed:
+ already_processed.add('settable')
+ self.settable = value
+ self.validate_DoxBool(self.settable) # validate type DoxBool
+ value = find_attr_value_('privatesettable', node)
+ if value is not None and 'privatesettable' not in already_processed:
+ already_processed.add('privatesettable')
+ self.privatesettable = value
+ self.validate_DoxBool(self.privatesettable) # validate type DoxBool
+ value = find_attr_value_('protectedsettable', node)
+ if value is not None and 'protectedsettable' not in already_processed:
+ already_processed.add('protectedsettable')
+ self.protectedsettable = value
+ self.validate_DoxBool(self.protectedsettable) # validate type DoxBool
+ value = find_attr_value_('gettable', node)
+ if value is not None and 'gettable' not in already_processed:
+ already_processed.add('gettable')
+ self.gettable = value
+ self.validate_DoxBool(self.gettable) # validate type DoxBool
+ value = find_attr_value_('privategettable', node)
+ if value is not None and 'privategettable' not in already_processed:
+ already_processed.add('privategettable')
+ self.privategettable = value
+ self.validate_DoxBool(self.privategettable) # validate type DoxBool
+ value = find_attr_value_('protectedgettable', node)
+ if value is not None and 'protectedgettable' not in already_processed:
+ already_processed.add('protectedgettable')
+ self.protectedgettable = value
+ self.validate_DoxBool(self.protectedgettable) # validate type DoxBool
+ value = find_attr_value_('final', node)
+ if value is not None and 'final' not in already_processed:
+ already_processed.add('final')
+ self.final = value
+ self.validate_DoxBool(self.final) # validate type DoxBool
+ value = find_attr_value_('sealed', node)
+ if value is not None and 'sealed' not in already_processed:
+ already_processed.add('sealed')
+ self.sealed = value
+ self.validate_DoxBool(self.sealed) # validate type DoxBool
+ value = find_attr_value_('new', node)
+ if value is not None and 'new' not in already_processed:
+ already_processed.add('new')
+ self.new = value
+ self.validate_DoxBool(self.new) # validate type DoxBool
+ value = find_attr_value_('add', node)
+ if value is not None and 'add' not in already_processed:
+ already_processed.add('add')
+ self.add = value
+ self.validate_DoxBool(self.add) # validate type DoxBool
+ value = find_attr_value_('remove', node)
+ if value is not None and 'remove' not in already_processed:
+ already_processed.add('remove')
+ self.remove = value
+ self.validate_DoxBool(self.remove) # validate type DoxBool
+ value = find_attr_value_('raise', node)
+ if value is not None and 'raise' not in already_processed:
+ already_processed.add('raise')
+ self.raise_ = value
+ self.validate_DoxBool(self.raise_) # validate type DoxBool
+ value = find_attr_value_('optional', node)
+ if value is not None and 'optional' not in already_processed:
+ already_processed.add('optional')
+ self.optional = value
+ self.validate_DoxBool(self.optional) # validate type DoxBool
+ value = find_attr_value_('required', node)
+ if value is not None and 'required' not in already_processed:
+ already_processed.add('required')
+ self.required = value
+ self.validate_DoxBool(self.required) # validate type DoxBool
+ value = find_attr_value_('accessor', node)
+ if value is not None and 'accessor' not in already_processed:
+ already_processed.add('accessor')
+ self.accessor = value
+ self.validate_DoxAccessor(self.accessor) # validate type DoxAccessor
+ value = find_attr_value_('attribute', node)
+ if value is not None and 'attribute' not in already_processed:
+ already_processed.add('attribute')
+ self.attribute = value
+ self.validate_DoxBool(self.attribute) # validate type DoxBool
+ value = find_attr_value_('property', node)
+ if value is not None and 'property' not in already_processed:
+ already_processed.add('property')
+ self.property = value
+ self.validate_DoxBool(self.property) # validate type DoxBool
+ value = find_attr_value_('readonly', node)
+ if value is not None and 'readonly' not in already_processed:
+ already_processed.add('readonly')
+ self.readonly = value
+ self.validate_DoxBool(self.readonly) # validate type DoxBool
+ value = find_attr_value_('bound', node)
+ if value is not None and 'bound' not in already_processed:
+ already_processed.add('bound')
+ self.bound = value
+ self.validate_DoxBool(self.bound) # validate type DoxBool
+ value = find_attr_value_('removable', node)
+ if value is not None and 'removable' not in already_processed:
+ already_processed.add('removable')
+ self.removable = value
+ self.validate_DoxBool(self.removable) # validate type DoxBool
+ value = find_attr_value_('constrained', node)
+ if value is not None and 'constrained' not in already_processed:
+ already_processed.add('constrained')
+ self.constrained = value
+ self.validate_DoxBool(self.constrained) # validate type DoxBool
+ value = find_attr_value_('transient', node)
+ if value is not None and 'transient' not in already_processed:
+ already_processed.add('transient')
+ self.transient = value
+ self.validate_DoxBool(self.transient) # validate type DoxBool
+ value = find_attr_value_('maybevoid', node)
+ if value is not None and 'maybevoid' not in already_processed:
+ already_processed.add('maybevoid')
+ self.maybevoid = value
+ self.validate_DoxBool(self.maybevoid) # validate type DoxBool
+ value = find_attr_value_('maybedefault', node)
+ if value is not None and 'maybedefault' not in already_processed:
+ already_processed.add('maybedefault')
+ self.maybedefault = value
+ self.validate_DoxBool(self.maybedefault) # validate type DoxBool
+ value = find_attr_value_('maybeambiguous', node)
+ if value is not None and 'maybeambiguous' not in already_processed:
+ already_processed.add('maybeambiguous')
+ self.maybeambiguous = value
+ self.validate_DoxBool(self.maybeambiguous) # validate type DoxBool
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'templateparamlist':
+ obj_ = templateparamlistType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.templateparamlist = obj_
+ obj_.original_tagname_ = 'templateparamlist'
+ elif nodeName_ == 'type':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.type_ = obj_
+ obj_.original_tagname_ = 'type'
+ elif nodeName_ == 'definition':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'definition')
+ value_ = self.gds_validate_string(value_, node, 'definition')
+ self.definition = value_
+ self.definition_nsprefix_ = child_.prefix
+ elif nodeName_ == 'argsstring':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'argsstring')
+ value_ = self.gds_validate_string(value_, node, 'argsstring')
+ self.argsstring = value_
+ self.argsstring_nsprefix_ = child_.prefix
+ elif nodeName_ == 'name':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'name')
+ value_ = self.gds_validate_string(value_, node, 'name')
+ self.name = value_
+ self.name_nsprefix_ = child_.prefix
+ elif nodeName_ == 'read':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'read')
+ value_ = self.gds_validate_string(value_, node, 'read')
+ self.read = value_
+ self.read_nsprefix_ = child_.prefix
+ elif nodeName_ == 'write':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'write')
+ value_ = self.gds_validate_string(value_, node, 'write')
+ self.write = value_
+ self.write_nsprefix_ = child_.prefix
+ elif nodeName_ == 'bitfield':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'bitfield')
+ value_ = self.gds_validate_string(value_, node, 'bitfield')
+ self.bitfield = value_
+ self.bitfield_nsprefix_ = child_.prefix
+ elif nodeName_ == 'reimplements':
+ obj_ = reimplementType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.reimplements.append(obj_)
+ obj_.original_tagname_ = 'reimplements'
+ elif nodeName_ == 'reimplementedby':
+ obj_ = reimplementType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.reimplementedby.append(obj_)
+ obj_.original_tagname_ = 'reimplementedby'
+ elif nodeName_ == 'param':
+ obj_ = paramType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.param.append(obj_)
+ obj_.original_tagname_ = 'param'
+ elif nodeName_ == 'enumvalue':
+ obj_ = enumvalueType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.enumvalue.append(obj_)
+ obj_.original_tagname_ = 'enumvalue'
+ elif nodeName_ == 'initializer':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.initializer = obj_
+ obj_.original_tagname_ = 'initializer'
+ elif nodeName_ == 'exceptions':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.exceptions = obj_
+ obj_.original_tagname_ = 'exceptions'
+ elif nodeName_ == 'briefdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.briefdescription = obj_
+ obj_.original_tagname_ = 'briefdescription'
+ elif nodeName_ == 'detaileddescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.detaileddescription = obj_
+ obj_.original_tagname_ = 'detaileddescription'
+ elif nodeName_ == 'inbodydescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.inbodydescription = obj_
+ obj_.original_tagname_ = 'inbodydescription'
+ elif nodeName_ == 'location':
+ obj_ = locationType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.location = obj_
+ obj_.original_tagname_ = 'location'
+ elif nodeName_ == 'references':
+ obj_ = referenceType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.references.append(obj_)
+ obj_.original_tagname_ = 'references'
+ elif nodeName_ == 'referencedby':
+ obj_ = referenceType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.referencedby.append(obj_)
+ obj_.original_tagname_ = 'referencedby'
+# end class memberdefType
+
+
+class definition(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, definition)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if definition.subclass:
+ return definition.subclass(*args_, **kwargs_)
+ else:
+ return definition(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='definition', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('definition')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'definition':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='definition')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='definition', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='definition'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='definition', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class definition
+
+
+class argsstring(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, argsstring)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if argsstring.subclass:
+ return argsstring.subclass(*args_, **kwargs_)
+ else:
+ return argsstring(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='argsstring', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('argsstring')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'argsstring':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='argsstring')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='argsstring', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='argsstring'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='argsstring', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class argsstring
+
+
+class read(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, read)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if read.subclass:
+ return read.subclass(*args_, **kwargs_)
+ else:
+ return read(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='read', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('read')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'read':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='read')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='read', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='read'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='read', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class read
+
+
+class write(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, write)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if write.subclass:
+ return write.subclass(*args_, **kwargs_)
+ else:
+ return write(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='write', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('write')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'write':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='write')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='write', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='write'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='write', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class write
+
+
+class bitfield(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, bitfield)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if bitfield.subclass:
+ return bitfield.subclass(*args_, **kwargs_)
+ else:
+ return bitfield(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='bitfield', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('bitfield')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'bitfield':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='bitfield')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='bitfield', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='bitfield'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='bitfield', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class bitfield
+
+
+class descriptionType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, title=None, para=None, internal=None, sect1=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if internal is None:
+ self.internal = []
+ else:
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ if sect1 is None:
+ self.sect1 = []
+ else:
+ self.sect1 = sect1
+ self.sect1_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, descriptionType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if descriptionType.subclass:
+ return descriptionType.subclass(*args_, **kwargs_)
+ else:
+ return descriptionType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def add_internal(self, value):
+ self.internal.append(value)
+ def insert_internal_at(self, index, value):
+ self.internal.insert(index, value)
+ def replace_internal_at(self, index, value):
+ self.internal[index] = value
+ def get_sect1(self):
+ return self.sect1
+ def set_sect1(self, sect1):
+ self.sect1 = sect1
+ def add_sect1(self, value):
+ self.sect1.append(value)
+ def insert_sect1_at(self, index, value):
+ self.sect1.insert(index, value)
+ def replace_sect1_at(self, index, value):
+ self.sect1[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para or
+ self.internal or
+ self.sect1 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='descriptionType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('descriptionType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'descriptionType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='descriptionType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='descriptionType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='descriptionType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='descriptionType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for internal_ in self.internal:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ for sect1_ in self.sect1:
+ namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else ''
+ sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'title')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'title')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'title', valuestr_)
+ self.content_.append(obj_)
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'internal':
+ obj_ = docInternalType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'internal', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_internal'):
+ self.add_internal(obj_.value)
+ elif hasattr(self, 'set_internal'):
+ self.set_internal(obj_.value)
+ elif nodeName_ == 'sect1':
+ obj_ = docSect1Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect1', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect1'):
+ self.add_sect1(obj_.value)
+ elif hasattr(self, 'set_sect1'):
+ self.set_sect1(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class descriptionType
+
+
+class enumvalueType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, prot=None, name=None, initializer=None, briefdescription=None, detaileddescription=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.prot = _cast(None, prot)
+ self.prot_nsprefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ self.initializer = initializer
+ self.initializer_nsprefix_ = None
+ self.briefdescription = briefdescription
+ self.briefdescription_nsprefix_ = None
+ self.detaileddescription = detaileddescription
+ self.detaileddescription_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, enumvalueType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if enumvalueType.subclass:
+ return enumvalueType.subclass(*args_, **kwargs_)
+ else:
+ return enumvalueType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_initializer(self):
+ return self.initializer
+ def set_initializer(self, initializer):
+ self.initializer = initializer
+ def get_briefdescription(self):
+ return self.briefdescription
+ def set_briefdescription(self, briefdescription):
+ self.briefdescription = briefdescription
+ def get_detaileddescription(self):
+ return self.detaileddescription
+ def set_detaileddescription(self, detaileddescription):
+ self.detaileddescription = detaileddescription
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_prot(self):
+ return self.prot
+ def set_prot(self, prot):
+ self.prot = prot
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxProtectionKind(self, value):
+ # Validate type DoxProtectionKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['public', 'protected', 'private', 'package']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxProtectionKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.name is not None or
+ self.initializer is not None or
+ self.briefdescription is not None or
+ self.detaileddescription is not None or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='enumvalueType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('enumvalueType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'enumvalueType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='enumvalueType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='enumvalueType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='enumvalueType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ if self.prot is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ outfile.write(' prot=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.prot), input_name='prot')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='enumvalueType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ if self.initializer is not None:
+ namespaceprefix_ = self.initializer_nsprefix_ + ':' if (UseCapturedNS_ and self.initializer_nsprefix_) else ''
+ self.initializer.export(outfile, level, namespaceprefix_, namespacedef_='', name_='initializer', pretty_print=pretty_print)
+ if self.briefdescription is not None:
+ namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else ''
+ self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print)
+ if self.detaileddescription is not None:
+ namespaceprefix_ = self.detaileddescription_nsprefix_ + ':' if (UseCapturedNS_ and self.detaileddescription_nsprefix_) else ''
+ self.detaileddescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='detaileddescription', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ value = find_attr_value_('prot', node)
+ if value is not None and 'prot' not in already_processed:
+ already_processed.add('prot')
+ self.prot = value
+ self.validate_DoxProtectionKind(self.prot) # validate type DoxProtectionKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'name' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'name')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'name')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'name', valuestr_)
+ self.content_.append(obj_)
+ self.name_nsprefix_ = child_.prefix
+ elif nodeName_ == 'initializer':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'initializer', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_initializer'):
+ self.add_initializer(obj_.value)
+ elif hasattr(self, 'set_initializer'):
+ self.set_initializer(obj_.value)
+ elif nodeName_ == 'briefdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'briefdescription', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_briefdescription'):
+ self.add_briefdescription(obj_.value)
+ elif hasattr(self, 'set_briefdescription'):
+ self.set_briefdescription(obj_.value)
+ elif nodeName_ == 'detaileddescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'detaileddescription', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_detaileddescription'):
+ self.add_detaileddescription(obj_.value)
+ elif hasattr(self, 'set_detaileddescription'):
+ self.set_detaileddescription(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class enumvalueType
+
+
+class templateparamlistType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, param=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if param is None:
+ self.param = []
+ else:
+ self.param = param
+ self.param_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, templateparamlistType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if templateparamlistType.subclass:
+ return templateparamlistType.subclass(*args_, **kwargs_)
+ else:
+ return templateparamlistType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_param(self):
+ return self.param
+ def set_param(self, param):
+ self.param = param
+ def add_param(self, value):
+ self.param.append(value)
+ def insert_param_at(self, index, value):
+ self.param.insert(index, value)
+ def replace_param_at(self, index, value):
+ self.param[index] = value
+ def hasContent_(self):
+ if (
+ self.param
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='templateparamlistType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('templateparamlistType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'templateparamlistType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='templateparamlistType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='templateparamlistType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='templateparamlistType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='templateparamlistType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for param_ in self.param:
+ namespaceprefix_ = self.param_nsprefix_ + ':' if (UseCapturedNS_ and self.param_nsprefix_) else ''
+ param_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='param', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'param':
+ obj_ = paramType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.param.append(obj_)
+ obj_.original_tagname_ = 'param'
+# end class templateparamlistType
+
+
+class paramType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, attributes=None, type_=None, declname=None, defname=None, array=None, defval=None, typeconstraint=None, briefdescription=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.attributes = attributes
+ self.attributes_nsprefix_ = None
+ self.type_ = type_
+ self.type__nsprefix_ = None
+ self.declname = declname
+ self.declname_nsprefix_ = None
+ self.defname = defname
+ self.defname_nsprefix_ = None
+ self.array = array
+ self.array_nsprefix_ = None
+ self.defval = defval
+ self.defval_nsprefix_ = None
+ self.typeconstraint = typeconstraint
+ self.typeconstraint_nsprefix_ = None
+ self.briefdescription = briefdescription
+ self.briefdescription_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, paramType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if paramType.subclass:
+ return paramType.subclass(*args_, **kwargs_)
+ else:
+ return paramType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_attributes(self):
+ return self.attributes
+ def set_attributes(self, attributes):
+ self.attributes = attributes
+ def get_type(self):
+ return self.type_
+ def set_type(self, type_):
+ self.type_ = type_
+ def get_declname(self):
+ return self.declname
+ def set_declname(self, declname):
+ self.declname = declname
+ def get_defname(self):
+ return self.defname
+ def set_defname(self, defname):
+ self.defname = defname
+ def get_array(self):
+ return self.array
+ def set_array(self, array):
+ self.array = array
+ def get_defval(self):
+ return self.defval
+ def set_defval(self, defval):
+ self.defval = defval
+ def get_typeconstraint(self):
+ return self.typeconstraint
+ def set_typeconstraint(self, typeconstraint):
+ self.typeconstraint = typeconstraint
+ def get_briefdescription(self):
+ return self.briefdescription
+ def set_briefdescription(self, briefdescription):
+ self.briefdescription = briefdescription
+ def hasContent_(self):
+ if (
+ self.attributes is not None or
+ self.type_ is not None or
+ self.declname is not None or
+ self.defname is not None or
+ self.array is not None or
+ self.defval is not None or
+ self.typeconstraint is not None or
+ self.briefdescription is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='paramType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('paramType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'paramType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='paramType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='paramType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='paramType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='paramType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.attributes is not None:
+ namespaceprefix_ = self.attributes_nsprefix_ + ':' if (UseCapturedNS_ and self.attributes_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sattributes>%s</%sattributes>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.attributes), input_name='attributes')), namespaceprefix_ , eol_))
+ if self.type_ is not None:
+ namespaceprefix_ = self.type__nsprefix_ + ':' if (UseCapturedNS_ and self.type__nsprefix_) else ''
+ self.type_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='type', pretty_print=pretty_print)
+ if self.declname is not None:
+ namespaceprefix_ = self.declname_nsprefix_ + ':' if (UseCapturedNS_ and self.declname_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdeclname>%s</%sdeclname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.declname), input_name='declname')), namespaceprefix_ , eol_))
+ if self.defname is not None:
+ namespaceprefix_ = self.defname_nsprefix_ + ':' if (UseCapturedNS_ and self.defname_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdefname>%s</%sdefname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.defname), input_name='defname')), namespaceprefix_ , eol_))
+ if self.array is not None:
+ namespaceprefix_ = self.array_nsprefix_ + ':' if (UseCapturedNS_ and self.array_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sarray>%s</%sarray>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.array), input_name='array')), namespaceprefix_ , eol_))
+ if self.defval is not None:
+ namespaceprefix_ = self.defval_nsprefix_ + ':' if (UseCapturedNS_ and self.defval_nsprefix_) else ''
+ self.defval.export(outfile, level, namespaceprefix_, namespacedef_='', name_='defval', pretty_print=pretty_print)
+ if self.typeconstraint is not None:
+ namespaceprefix_ = self.typeconstraint_nsprefix_ + ':' if (UseCapturedNS_ and self.typeconstraint_nsprefix_) else ''
+ self.typeconstraint.export(outfile, level, namespaceprefix_, namespacedef_='', name_='typeconstraint', pretty_print=pretty_print)
+ if self.briefdescription is not None:
+ namespaceprefix_ = self.briefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.briefdescription_nsprefix_) else ''
+ self.briefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='briefdescription', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'attributes':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'attributes')
+ value_ = self.gds_validate_string(value_, node, 'attributes')
+ self.attributes = value_
+ self.attributes_nsprefix_ = child_.prefix
+ elif nodeName_ == 'type':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.type_ = obj_
+ obj_.original_tagname_ = 'type'
+ elif nodeName_ == 'declname':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'declname')
+ value_ = self.gds_validate_string(value_, node, 'declname')
+ self.declname = value_
+ self.declname_nsprefix_ = child_.prefix
+ elif nodeName_ == 'defname':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'defname')
+ value_ = self.gds_validate_string(value_, node, 'defname')
+ self.defname = value_
+ self.defname_nsprefix_ = child_.prefix
+ elif nodeName_ == 'array':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'array')
+ value_ = self.gds_validate_string(value_, node, 'array')
+ self.array = value_
+ self.array_nsprefix_ = child_.prefix
+ elif nodeName_ == 'defval':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.defval = obj_
+ obj_.original_tagname_ = 'defval'
+ elif nodeName_ == 'typeconstraint':
+ obj_ = linkedTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.typeconstraint = obj_
+ obj_.original_tagname_ = 'typeconstraint'
+ elif nodeName_ == 'briefdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.briefdescription = obj_
+ obj_.original_tagname_ = 'briefdescription'
+# end class paramType
+
+
+class attributes(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, attributes)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if attributes.subclass:
+ return attributes.subclass(*args_, **kwargs_)
+ else:
+ return attributes(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='attributes', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('attributes')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'attributes':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='attributes')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='attributes', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='attributes'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='attributes', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class attributes
+
+
+class declname(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, declname)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if declname.subclass:
+ return declname.subclass(*args_, **kwargs_)
+ else:
+ return declname(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='declname', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('declname')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'declname':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='declname')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='declname', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='declname'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='declname', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class declname
+
+
+class defname(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, defname)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if defname.subclass:
+ return defname.subclass(*args_, **kwargs_)
+ else:
+ return defname(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='defname', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('defname')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'defname':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='defname')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='defname', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='defname'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='defname', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class defname
+
+
+class array(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, array)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if array.subclass:
+ return array.subclass(*args_, **kwargs_)
+ else:
+ return array(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='array', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('array')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'array':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='array')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='array', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='array'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='array', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class array
+
+
+class linkedTextType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, linkedTextType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if linkedTextType.subclass:
+ return linkedTextType.subclass(*args_, **kwargs_)
+ else:
+ return linkedTextType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ref or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkedTextType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('linkedTextType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'linkedTextType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='linkedTextType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='linkedTextType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='linkedTextType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkedTextType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ref':
+ obj_ = refTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class linkedTextType
+
+
+class graphType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, node=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if node is None:
+ self.node = []
+ else:
+ self.node = node
+ self.node_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, graphType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if graphType.subclass:
+ return graphType.subclass(*args_, **kwargs_)
+ else:
+ return graphType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_node(self):
+ return self.node
+ def set_node(self, node):
+ self.node = node
+ def add_node(self, value):
+ self.node.append(value)
+ def insert_node_at(self, index, value):
+ self.node.insert(index, value)
+ def replace_node_at(self, index, value):
+ self.node[index] = value
+ def hasContent_(self):
+ if (
+ self.node
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='graphType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('graphType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'graphType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='graphType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='graphType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='graphType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='graphType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for node_ in self.node:
+ namespaceprefix_ = self.node_nsprefix_ + ':' if (UseCapturedNS_ and self.node_nsprefix_) else ''
+ node_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='node', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'node':
+ obj_ = nodeType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.node.append(obj_)
+ obj_.original_tagname_ = 'node'
+# end class graphType
+
+
+class nodeType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, label=None, link=None, childnode=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.label = label
+ self.label_nsprefix_ = None
+ self.link = link
+ self.link_nsprefix_ = None
+ if childnode is None:
+ self.childnode = []
+ else:
+ self.childnode = childnode
+ self.childnode_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, nodeType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if nodeType.subclass:
+ return nodeType.subclass(*args_, **kwargs_)
+ else:
+ return nodeType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_label(self):
+ return self.label
+ def set_label(self, label):
+ self.label = label
+ def get_link(self):
+ return self.link
+ def set_link(self, link):
+ self.link = link
+ def get_childnode(self):
+ return self.childnode
+ def set_childnode(self, childnode):
+ self.childnode = childnode
+ def add_childnode(self, value):
+ self.childnode.append(value)
+ def insert_childnode_at(self, index, value):
+ self.childnode.insert(index, value)
+ def replace_childnode_at(self, index, value):
+ self.childnode[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def hasContent_(self):
+ if (
+ self.label is not None or
+ self.link is not None or
+ self.childnode
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='nodeType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('nodeType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'nodeType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='nodeType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='nodeType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='nodeType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='nodeType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.label is not None:
+ namespaceprefix_ = self.label_nsprefix_ + ':' if (UseCapturedNS_ and self.label_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slabel>%s</%slabel>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.label), input_name='label')), namespaceprefix_ , eol_))
+ if self.link is not None:
+ namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else ''
+ self.link.export(outfile, level, namespaceprefix_, namespacedef_='', name_='link', pretty_print=pretty_print)
+ for childnode_ in self.childnode:
+ namespaceprefix_ = self.childnode_nsprefix_ + ':' if (UseCapturedNS_ and self.childnode_nsprefix_) else ''
+ childnode_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='childnode', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'label':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'label')
+ value_ = self.gds_validate_string(value_, node, 'label')
+ self.label = value_
+ self.label_nsprefix_ = child_.prefix
+ elif nodeName_ == 'link':
+ obj_ = linkType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.link = obj_
+ obj_.original_tagname_ = 'link'
+ elif nodeName_ == 'childnode':
+ obj_ = childnodeType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.childnode.append(obj_)
+ obj_.original_tagname_ = 'childnode'
+# end class nodeType
+
+
+class label(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, label)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if label.subclass:
+ return label.subclass(*args_, **kwargs_)
+ else:
+ return label(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='label', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('label')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'label':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='label')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='label', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='label'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='label', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class label
+
+
+class childnodeType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, relation=None, edgelabel=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.relation = _cast(None, relation)
+ self.relation_nsprefix_ = None
+ if edgelabel is None:
+ self.edgelabel = []
+ else:
+ self.edgelabel = edgelabel
+ self.edgelabel_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, childnodeType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if childnodeType.subclass:
+ return childnodeType.subclass(*args_, **kwargs_)
+ else:
+ return childnodeType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_edgelabel(self):
+ return self.edgelabel
+ def set_edgelabel(self, edgelabel):
+ self.edgelabel = edgelabel
+ def add_edgelabel(self, value):
+ self.edgelabel.append(value)
+ def insert_edgelabel_at(self, index, value):
+ self.edgelabel.insert(index, value)
+ def replace_edgelabel_at(self, index, value):
+ self.edgelabel[index] = value
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_relation(self):
+ return self.relation
+ def set_relation(self, relation):
+ self.relation = relation
+ def validate_DoxGraphRelation(self, value):
+ # Validate type DoxGraphRelation, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['include', 'usage', 'template-instance', 'public-inheritance', 'protected-inheritance', 'private-inheritance', 'type-constraint']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxGraphRelation' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.edgelabel
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='childnodeType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('childnodeType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'childnodeType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='childnodeType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='childnodeType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='childnodeType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.relation is not None and 'relation' not in already_processed:
+ already_processed.add('relation')
+ outfile.write(' relation=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.relation), input_name='relation')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='childnodeType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for edgelabel_ in self.edgelabel:
+ namespaceprefix_ = self.edgelabel_nsprefix_ + ':' if (UseCapturedNS_ and self.edgelabel_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sedgelabel>%s</%sedgelabel>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(edgelabel_), input_name='edgelabel')), namespaceprefix_ , eol_))
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('relation', node)
+ if value is not None and 'relation' not in already_processed:
+ already_processed.add('relation')
+ self.relation = value
+ self.validate_DoxGraphRelation(self.relation) # validate type DoxGraphRelation
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'edgelabel':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'edgelabel')
+ value_ = self.gds_validate_string(value_, node, 'edgelabel')
+ self.edgelabel.append(value_)
+ self.edgelabel_nsprefix_ = child_.prefix
+# end class childnodeType
+
+
+class edgelabel(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, edgelabel)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if edgelabel.subclass:
+ return edgelabel.subclass(*args_, **kwargs_)
+ else:
+ return edgelabel(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='edgelabel', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('edgelabel')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'edgelabel':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='edgelabel')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='edgelabel', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='edgelabel'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='edgelabel', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class edgelabel
+
+
+class linkType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, external=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.external = _cast(None, external)
+ self.external_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, linkType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if linkType.subclass:
+ return linkType.subclass(*args_, **kwargs_)
+ else:
+ return linkType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_external(self):
+ return self.external
+ def set_external(self, external):
+ self.external = external
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('linkType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'linkType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='linkType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='linkType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='linkType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.external is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='linkType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('external', node)
+ if value is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ self.external = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class linkType
+
+
+class listingType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, filename=None, codeline=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.filename = _cast(None, filename)
+ self.filename_nsprefix_ = None
+ if codeline is None:
+ self.codeline = []
+ else:
+ self.codeline = codeline
+ self.codeline_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, listingType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if listingType.subclass:
+ return listingType.subclass(*args_, **kwargs_)
+ else:
+ return listingType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_codeline(self):
+ return self.codeline
+ def set_codeline(self, codeline):
+ self.codeline = codeline
+ def add_codeline(self, value):
+ self.codeline.append(value)
+ def insert_codeline_at(self, index, value):
+ self.codeline.insert(index, value)
+ def replace_codeline_at(self, index, value):
+ self.codeline[index] = value
+ def get_filename(self):
+ return self.filename
+ def set_filename(self, filename):
+ self.filename = filename
+ def hasContent_(self):
+ if (
+ self.codeline
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listingType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('listingType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'listingType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='listingType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='listingType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='listingType'):
+ if self.filename is not None and 'filename' not in already_processed:
+ already_processed.add('filename')
+ outfile.write(' filename=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.filename), input_name='filename')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='listingType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for codeline_ in self.codeline:
+ namespaceprefix_ = self.codeline_nsprefix_ + ':' if (UseCapturedNS_ and self.codeline_nsprefix_) else ''
+ codeline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='codeline', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('filename', node)
+ if value is not None and 'filename' not in already_processed:
+ already_processed.add('filename')
+ self.filename = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'codeline':
+ obj_ = codelineType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.codeline.append(obj_)
+ obj_.original_tagname_ = 'codeline'
+# end class listingType
+
+
+class codelineType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, lineno=None, refid=None, refkind=None, external=None, highlight=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.lineno = _cast(int, lineno)
+ self.lineno_nsprefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.refkind = _cast(None, refkind)
+ self.refkind_nsprefix_ = None
+ self.external = _cast(None, external)
+ self.external_nsprefix_ = None
+ if highlight is None:
+ self.highlight = []
+ else:
+ self.highlight = highlight
+ self.highlight_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, codelineType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if codelineType.subclass:
+ return codelineType.subclass(*args_, **kwargs_)
+ else:
+ return codelineType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_highlight(self):
+ return self.highlight
+ def set_highlight(self, highlight):
+ self.highlight = highlight
+ def add_highlight(self, value):
+ self.highlight.append(value)
+ def insert_highlight_at(self, index, value):
+ self.highlight.insert(index, value)
+ def replace_highlight_at(self, index, value):
+ self.highlight[index] = value
+ def get_lineno(self):
+ return self.lineno
+ def set_lineno(self, lineno):
+ self.lineno = lineno
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_refkind(self):
+ return self.refkind
+ def set_refkind(self, refkind):
+ self.refkind = refkind
+ def get_external(self):
+ return self.external
+ def set_external(self, external):
+ self.external = external
+ def validate_DoxRefKind(self, value):
+ # Validate type DoxRefKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['compound', 'member']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.highlight
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='codelineType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('codelineType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'codelineType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='codelineType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='codelineType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='codelineType'):
+ if self.lineno is not None and 'lineno' not in already_processed:
+ already_processed.add('lineno')
+ outfile.write(' lineno="%s"' % self.gds_format_integer(self.lineno, input_name='lineno'))
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.refkind is not None and 'refkind' not in already_processed:
+ already_processed.add('refkind')
+ outfile.write(' refkind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refkind), input_name='refkind')), ))
+ if self.external is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='codelineType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for highlight_ in self.highlight:
+ namespaceprefix_ = self.highlight_nsprefix_ + ':' if (UseCapturedNS_ and self.highlight_nsprefix_) else ''
+ highlight_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='highlight', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('lineno', node)
+ if value is not None and 'lineno' not in already_processed:
+ already_processed.add('lineno')
+ self.lineno = self.gds_parse_integer(value, node, 'lineno')
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('refkind', node)
+ if value is not None and 'refkind' not in already_processed:
+ already_processed.add('refkind')
+ self.refkind = value
+ self.validate_DoxRefKind(self.refkind) # validate type DoxRefKind
+ value = find_attr_value_('external', node)
+ if value is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ self.external = value
+ self.validate_DoxBool(self.external) # validate type DoxBool
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'highlight':
+ obj_ = highlightType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.highlight.append(obj_)
+ obj_.original_tagname_ = 'highlight'
+# end class codelineType
+
+
+class highlightType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, class_=None, sp=None, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.class_ = _cast(None, class_)
+ self.class__nsprefix_ = None
+ if sp is None:
+ self.sp = []
+ else:
+ self.sp = sp
+ self.sp_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, highlightType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if highlightType.subclass:
+ return highlightType.subclass(*args_, **kwargs_)
+ else:
+ return highlightType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_sp(self):
+ return self.sp
+ def set_sp(self, sp):
+ self.sp = sp
+ def add_sp(self, value):
+ self.sp.append(value)
+ def insert_sp_at(self, index, value):
+ self.sp.insert(index, value)
+ def replace_sp_at(self, index, value):
+ self.sp[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_class(self):
+ return self.class_
+ def set_class(self, class_):
+ self.class_ = class_
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxHighlightClass(self, value):
+ # Validate type DoxHighlightClass, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['comment', 'normal', 'preprocessor', 'keyword', 'keywordtype', 'keywordflow', 'stringliteral', 'charliteral', 'vhdlkeyword', 'vhdllogic', 'vhdlchar', 'vhdldigit']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxHighlightClass' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.sp or
+ self.ref or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='highlightType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('highlightType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'highlightType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='highlightType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='highlightType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='highlightType'):
+ if self.class_ is not None and 'class_' not in already_processed:
+ already_processed.add('class_')
+ outfile.write(' class=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.class_), input_name='class')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='highlightType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for sp_ in self.sp:
+ namespaceprefix_ = self.sp_nsprefix_ + ':' if (UseCapturedNS_ and self.sp_nsprefix_) else ''
+ sp_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sp', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('class', node)
+ if value is not None and 'class' not in already_processed:
+ already_processed.add('class')
+ self.class_ = value
+ self.validate_DoxHighlightClass(self.class_) # validate type DoxHighlightClass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'sp':
+ obj_ = spType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sp', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sp'):
+ self.add_sp(obj_.value)
+ elif hasattr(self, 'set_sp'):
+ self.set_sp(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = refTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class highlightType
+
+
+class spType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, value=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.value = _cast(int, value)
+ self.value_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, spType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if spType.subclass:
+ return spType.subclass(*args_, **kwargs_)
+ else:
+ return spType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_value(self):
+ return self.value
+ def set_value(self, value):
+ self.value = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='spType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('spType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'spType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='spType')
+ outfile.write('>')
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
+ outfile.write(self.convert_unicode(self.valueOf_))
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='spType'):
+ if self.value is not None and 'value' not in already_processed:
+ already_processed.add('value')
+ outfile.write(' value="%s"' % self.gds_format_integer(self.value, input_name='value'))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='spType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('value', node)
+ if value is not None and 'value' not in already_processed:
+ already_processed.add('value')
+ self.value = self.gds_parse_integer(value, node, 'value')
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+ pass
+# end class spType
+
+
+class referenceType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, compoundref=None, startline=None, endline=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.compoundref = _cast(None, compoundref)
+ self.compoundref_nsprefix_ = None
+ self.startline = _cast(int, startline)
+ self.startline_nsprefix_ = None
+ self.endline = _cast(int, endline)
+ self.endline_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, referenceType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if referenceType.subclass:
+ return referenceType.subclass(*args_, **kwargs_)
+ else:
+ return referenceType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_compoundref(self):
+ return self.compoundref
+ def set_compoundref(self, compoundref):
+ self.compoundref = compoundref
+ def get_startline(self):
+ return self.startline
+ def set_startline(self, startline):
+ self.startline = startline
+ def get_endline(self):
+ return self.endline
+ def set_endline(self, endline):
+ self.endline = endline
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='referenceType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('referenceType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'referenceType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='referenceType')
+ outfile.write('>')
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
+ outfile.write(self.convert_unicode(self.valueOf_))
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='referenceType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.compoundref is not None and 'compoundref' not in already_processed:
+ already_processed.add('compoundref')
+ outfile.write(' compoundref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.compoundref), input_name='compoundref')), ))
+ if self.startline is not None and 'startline' not in already_processed:
+ already_processed.add('startline')
+ outfile.write(' startline="%s"' % self.gds_format_integer(self.startline, input_name='startline'))
+ if self.endline is not None and 'endline' not in already_processed:
+ already_processed.add('endline')
+ outfile.write(' endline="%s"' % self.gds_format_integer(self.endline, input_name='endline'))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='referenceType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('compoundref', node)
+ if value is not None and 'compoundref' not in already_processed:
+ already_processed.add('compoundref')
+ self.compoundref = value
+ value = find_attr_value_('startline', node)
+ if value is not None and 'startline' not in already_processed:
+ already_processed.add('startline')
+ self.startline = self.gds_parse_integer(value, node, 'startline')
+ value = find_attr_value_('endline', node)
+ if value is not None and 'endline' not in already_processed:
+ already_processed.add('endline')
+ self.endline = self.gds_parse_integer(value, node, 'endline')
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+ pass
+# end class referenceType
+
+
+class locationType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, file=None, line=None, column=None, declfile=None, declline=None, declcolumn=None, bodyfile=None, bodystart=None, bodyend=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.file = _cast(None, file)
+ self.file_nsprefix_ = None
+ self.line = _cast(int, line)
+ self.line_nsprefix_ = None
+ self.column = _cast(int, column)
+ self.column_nsprefix_ = None
+ self.declfile = _cast(None, declfile)
+ self.declfile_nsprefix_ = None
+ self.declline = _cast(int, declline)
+ self.declline_nsprefix_ = None
+ self.declcolumn = _cast(int, declcolumn)
+ self.declcolumn_nsprefix_ = None
+ self.bodyfile = _cast(None, bodyfile)
+ self.bodyfile_nsprefix_ = None
+ self.bodystart = _cast(int, bodystart)
+ self.bodystart_nsprefix_ = None
+ self.bodyend = _cast(int, bodyend)
+ self.bodyend_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, locationType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if locationType.subclass:
+ return locationType.subclass(*args_, **kwargs_)
+ else:
+ return locationType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_file(self):
+ return self.file
+ def set_file(self, file):
+ self.file = file
+ def get_line(self):
+ return self.line
+ def set_line(self, line):
+ self.line = line
+ def get_column(self):
+ return self.column
+ def set_column(self, column):
+ self.column = column
+ def get_declfile(self):
+ return self.declfile
+ def set_declfile(self, declfile):
+ self.declfile = declfile
+ def get_declline(self):
+ return self.declline
+ def set_declline(self, declline):
+ self.declline = declline
+ def get_declcolumn(self):
+ return self.declcolumn
+ def set_declcolumn(self, declcolumn):
+ self.declcolumn = declcolumn
+ def get_bodyfile(self):
+ return self.bodyfile
+ def set_bodyfile(self, bodyfile):
+ self.bodyfile = bodyfile
+ def get_bodystart(self):
+ return self.bodystart
+ def set_bodystart(self, bodystart):
+ self.bodystart = bodystart
+ def get_bodyend(self):
+ return self.bodyend
+ def set_bodyend(self, bodyend):
+ self.bodyend = bodyend
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='locationType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('locationType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'locationType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='locationType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='locationType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='locationType'):
+ if self.file is not None and 'file' not in already_processed:
+ already_processed.add('file')
+ outfile.write(' file=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.file), input_name='file')), ))
+ if self.line is not None and 'line' not in already_processed:
+ already_processed.add('line')
+ outfile.write(' line="%s"' % self.gds_format_integer(self.line, input_name='line'))
+ if self.column is not None and 'column' not in already_processed:
+ already_processed.add('column')
+ outfile.write(' column="%s"' % self.gds_format_integer(self.column, input_name='column'))
+ if self.declfile is not None and 'declfile' not in already_processed:
+ already_processed.add('declfile')
+ outfile.write(' declfile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.declfile), input_name='declfile')), ))
+ if self.declline is not None and 'declline' not in already_processed:
+ already_processed.add('declline')
+ outfile.write(' declline="%s"' % self.gds_format_integer(self.declline, input_name='declline'))
+ if self.declcolumn is not None and 'declcolumn' not in already_processed:
+ already_processed.add('declcolumn')
+ outfile.write(' declcolumn="%s"' % self.gds_format_integer(self.declcolumn, input_name='declcolumn'))
+ if self.bodyfile is not None and 'bodyfile' not in already_processed:
+ already_processed.add('bodyfile')
+ outfile.write(' bodyfile=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.bodyfile), input_name='bodyfile')), ))
+ if self.bodystart is not None and 'bodystart' not in already_processed:
+ already_processed.add('bodystart')
+ outfile.write(' bodystart="%s"' % self.gds_format_integer(self.bodystart, input_name='bodystart'))
+ if self.bodyend is not None and 'bodyend' not in already_processed:
+ already_processed.add('bodyend')
+ outfile.write(' bodyend="%s"' % self.gds_format_integer(self.bodyend, input_name='bodyend'))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='locationType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('file', node)
+ if value is not None and 'file' not in already_processed:
+ already_processed.add('file')
+ self.file = value
+ value = find_attr_value_('line', node)
+ if value is not None and 'line' not in already_processed:
+ already_processed.add('line')
+ self.line = self.gds_parse_integer(value, node, 'line')
+ value = find_attr_value_('column', node)
+ if value is not None and 'column' not in already_processed:
+ already_processed.add('column')
+ self.column = self.gds_parse_integer(value, node, 'column')
+ value = find_attr_value_('declfile', node)
+ if value is not None and 'declfile' not in already_processed:
+ already_processed.add('declfile')
+ self.declfile = value
+ value = find_attr_value_('declline', node)
+ if value is not None and 'declline' not in already_processed:
+ already_processed.add('declline')
+ self.declline = self.gds_parse_integer(value, node, 'declline')
+ value = find_attr_value_('declcolumn', node)
+ if value is not None and 'declcolumn' not in already_processed:
+ already_processed.add('declcolumn')
+ self.declcolumn = self.gds_parse_integer(value, node, 'declcolumn')
+ value = find_attr_value_('bodyfile', node)
+ if value is not None and 'bodyfile' not in already_processed:
+ already_processed.add('bodyfile')
+ self.bodyfile = value
+ value = find_attr_value_('bodystart', node)
+ if value is not None and 'bodystart' not in already_processed:
+ already_processed.add('bodystart')
+ self.bodystart = self.gds_parse_integer(value, node, 'bodystart')
+ value = find_attr_value_('bodyend', node)
+ if value is not None and 'bodyend' not in already_processed:
+ already_processed.add('bodyend')
+ self.bodyend = self.gds_parse_integer(value, node, 'bodyend')
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class locationType
+
+
+class docSect1Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, title=None, para=None, internal=None, sect2=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if internal is None:
+ self.internal = []
+ else:
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ if sect2 is None:
+ self.sect2 = []
+ else:
+ self.sect2 = sect2
+ self.sect2_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docSect1Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docSect1Type.subclass:
+ return docSect1Type.subclass(*args_, **kwargs_)
+ else:
+ return docSect1Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def add_internal(self, value):
+ self.internal.append(value)
+ def insert_internal_at(self, index, value):
+ self.internal.insert(index, value)
+ def replace_internal_at(self, index, value):
+ self.internal[index] = value
+ def get_sect2(self):
+ return self.sect2
+ def set_sect2(self, sect2):
+ self.sect2 = sect2
+ def add_sect2(self, value):
+ self.sect2.append(value)
+ def insert_sect2_at(self, index, value):
+ self.sect2.insert(index, value)
+ def replace_sect2_at(self, index, value):
+ self.sect2[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para or
+ self.internal or
+ self.sect2 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect1Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect1Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docSect1Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect1Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect1Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect1Type'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect1Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for internal_ in self.internal:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ for sect2_ in self.sect2:
+ namespaceprefix_ = self.sect2_nsprefix_ + ':' if (UseCapturedNS_ and self.sect2_nsprefix_) else ''
+ sect2_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect2', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'title')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'title')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'title', valuestr_)
+ self.content_.append(obj_)
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'internal':
+ obj_ = docInternalS1Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'internal', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_internal'):
+ self.add_internal(obj_.value)
+ elif hasattr(self, 'set_internal'):
+ self.set_internal(obj_.value)
+ elif nodeName_ == 'sect2':
+ obj_ = docSect2Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect2', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect2'):
+ self.add_sect2(obj_.value)
+ elif hasattr(self, 'set_sect2'):
+ self.set_sect2(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docSect1Type
+
+
+class docSect2Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, title=None, para=None, sect3=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect3 is None:
+ self.sect3 = []
+ else:
+ self.sect3 = sect3
+ self.sect3_nsprefix_ = None
+ if internal is None:
+ self.internal = []
+ else:
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docSect2Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docSect2Type.subclass:
+ return docSect2Type.subclass(*args_, **kwargs_)
+ else:
+ return docSect2Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect3(self):
+ return self.sect3
+ def set_sect3(self, sect3):
+ self.sect3 = sect3
+ def add_sect3(self, value):
+ self.sect3.append(value)
+ def insert_sect3_at(self, index, value):
+ self.sect3.insert(index, value)
+ def replace_sect3_at(self, index, value):
+ self.sect3[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def add_internal(self, value):
+ self.internal.append(value)
+ def insert_internal_at(self, index, value):
+ self.internal.insert(index, value)
+ def replace_internal_at(self, index, value):
+ self.internal[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para or
+ self.sect3 or
+ self.internal or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect2Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect2Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docSect2Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect2Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect2Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect2Type'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect2Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect3_ in self.sect3:
+ namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else ''
+ sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print)
+ for internal_ in self.internal:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'title')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'title')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'title', valuestr_)
+ self.content_.append(obj_)
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect3':
+ obj_ = docSect3Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect3', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect3'):
+ self.add_sect3(obj_.value)
+ elif hasattr(self, 'set_sect3'):
+ self.set_sect3(obj_.value)
+ elif nodeName_ == 'internal':
+ obj_ = docInternalS2Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'internal', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_internal'):
+ self.add_internal(obj_.value)
+ elif hasattr(self, 'set_internal'):
+ self.set_internal(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docSect2Type
+
+
+class docSect3Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, title=None, para=None, sect4=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect4 is None:
+ self.sect4 = []
+ else:
+ self.sect4 = sect4
+ self.sect4_nsprefix_ = None
+ if internal is None:
+ self.internal = []
+ else:
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docSect3Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docSect3Type.subclass:
+ return docSect3Type.subclass(*args_, **kwargs_)
+ else:
+ return docSect3Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect4(self):
+ return self.sect4
+ def set_sect4(self, sect4):
+ self.sect4 = sect4
+ def add_sect4(self, value):
+ self.sect4.append(value)
+ def insert_sect4_at(self, index, value):
+ self.sect4.insert(index, value)
+ def replace_sect4_at(self, index, value):
+ self.sect4[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def add_internal(self, value):
+ self.internal.append(value)
+ def insert_internal_at(self, index, value):
+ self.internal.insert(index, value)
+ def replace_internal_at(self, index, value):
+ self.internal[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para or
+ self.sect4 or
+ self.internal or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect3Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect3Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docSect3Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect3Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect3Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect3Type'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect3Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect4_ in self.sect4:
+ namespaceprefix_ = self.sect4_nsprefix_ + ':' if (UseCapturedNS_ and self.sect4_nsprefix_) else ''
+ sect4_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect4', pretty_print=pretty_print)
+ for internal_ in self.internal:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'title')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'title')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'title', valuestr_)
+ self.content_.append(obj_)
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect4':
+ obj_ = docSect4Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect4', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect4'):
+ self.add_sect4(obj_.value)
+ elif hasattr(self, 'set_sect4'):
+ self.set_sect4(obj_.value)
+ elif nodeName_ == 'internal':
+ obj_ = docInternalS3Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'internal', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_internal'):
+ self.add_internal(obj_.value)
+ elif hasattr(self, 'set_internal'):
+ self.set_internal(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docSect3Type
+
+
+class docSect4Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, title=None, para=None, internal=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if internal is None:
+ self.internal = []
+ else:
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docSect4Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docSect4Type.subclass:
+ return docSect4Type.subclass(*args_, **kwargs_)
+ else:
+ return docSect4Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def add_internal(self, value):
+ self.internal.append(value)
+ def insert_internal_at(self, index, value):
+ self.internal.insert(index, value)
+ def replace_internal_at(self, index, value):
+ self.internal[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para or
+ self.internal or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect4Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSect4Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docSect4Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSect4Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSect4Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSect4Type'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSect4Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%stitle>%s</%stitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.title), input_name='title')), namespaceprefix_ , eol_))
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for internal_ in self.internal:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ internal_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'title')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'title')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'title', valuestr_)
+ self.content_.append(obj_)
+ self.title_nsprefix_ = child_.prefix
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'internal':
+ obj_ = docInternalS4Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'internal', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_internal'):
+ self.add_internal(obj_.value)
+ elif hasattr(self, 'set_internal'):
+ self.set_internal(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docSect4Type
+
+
+class docInternalType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, sect1=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect1 is None:
+ self.sect1 = []
+ else:
+ self.sect1 = sect1
+ self.sect1_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docInternalType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docInternalType.subclass:
+ return docInternalType.subclass(*args_, **kwargs_)
+ else:
+ return docInternalType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect1(self):
+ return self.sect1
+ def set_sect1(self, sect1):
+ self.sect1 = sect1
+ def add_sect1(self, value):
+ self.sect1.append(value)
+ def insert_sect1_at(self, index, value):
+ self.sect1.insert(index, value)
+ def replace_sect1_at(self, index, value):
+ self.sect1[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.para or
+ self.sect1 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docInternalType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect1_ in self.sect1:
+ namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else ''
+ sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect1':
+ obj_ = docSect1Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect1', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect1'):
+ self.add_sect1(obj_.value)
+ elif hasattr(self, 'set_sect1'):
+ self.set_sect1(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docInternalType
+
+
+class docInternalS1Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, sect2=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect2 is None:
+ self.sect2 = []
+ else:
+ self.sect2 = sect2
+ self.sect2_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docInternalS1Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docInternalS1Type.subclass:
+ return docInternalS1Type.subclass(*args_, **kwargs_)
+ else:
+ return docInternalS1Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect2(self):
+ return self.sect2
+ def set_sect2(self, sect2):
+ self.sect2 = sect2
+ def add_sect2(self, value):
+ self.sect2.append(value)
+ def insert_sect2_at(self, index, value):
+ self.sect2.insert(index, value)
+ def replace_sect2_at(self, index, value):
+ self.sect2[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.para or
+ self.sect2 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS1Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS1Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docInternalS1Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS1Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS1Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS1Type'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS1Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect2_ in self.sect2:
+ namespaceprefix_ = self.sect2_nsprefix_ + ':' if (UseCapturedNS_ and self.sect2_nsprefix_) else ''
+ sect2_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect2', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect2':
+ obj_ = docSect2Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect2', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect2'):
+ self.add_sect2(obj_.value)
+ elif hasattr(self, 'set_sect2'):
+ self.set_sect2(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docInternalS1Type
+
+
+class docInternalS2Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, sect3=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect3 is None:
+ self.sect3 = []
+ else:
+ self.sect3 = sect3
+ self.sect3_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docInternalS2Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docInternalS2Type.subclass:
+ return docInternalS2Type.subclass(*args_, **kwargs_)
+ else:
+ return docInternalS2Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect3(self):
+ return self.sect3
+ def set_sect3(self, sect3):
+ self.sect3 = sect3
+ def add_sect3(self, value):
+ self.sect3.append(value)
+ def insert_sect3_at(self, index, value):
+ self.sect3.insert(index, value)
+ def replace_sect3_at(self, index, value):
+ self.sect3[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.para or
+ self.sect3 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS2Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS2Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docInternalS2Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS2Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS2Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS2Type'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS2Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect3_ in self.sect3:
+ namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else ''
+ sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect3':
+ obj_ = docSect3Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect3', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect3'):
+ self.add_sect3(obj_.value)
+ elif hasattr(self, 'set_sect3'):
+ self.set_sect3(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docInternalS2Type
+
+
+class docInternalS3Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, sect3=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect3 is None:
+ self.sect3 = []
+ else:
+ self.sect3 = sect3
+ self.sect3_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docInternalS3Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docInternalS3Type.subclass:
+ return docInternalS3Type.subclass(*args_, **kwargs_)
+ else:
+ return docInternalS3Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect3(self):
+ return self.sect3
+ def set_sect3(self, sect3):
+ self.sect3 = sect3
+ def add_sect3(self, value):
+ self.sect3.append(value)
+ def insert_sect3_at(self, index, value):
+ self.sect3.insert(index, value)
+ def replace_sect3_at(self, index, value):
+ self.sect3[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.para or
+ self.sect3 or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS3Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS3Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docInternalS3Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS3Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS3Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS3Type'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS3Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect3_ in self.sect3:
+ namespaceprefix_ = self.sect3_nsprefix_ + ':' if (UseCapturedNS_ and self.sect3_nsprefix_) else ''
+ sect3_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect3', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ elif nodeName_ == 'sect3':
+ obj_ = docSect4Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'sect3', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_sect3'):
+ self.add_sect3(obj_.value)
+ elif hasattr(self, 'set_sect3'):
+ self.set_sect3(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docInternalS3Type
+
+
+class docInternalS4Type(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docInternalS4Type)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docInternalS4Type.subclass:
+ return docInternalS4Type.subclass(*args_, **kwargs_)
+ else:
+ return docInternalS4Type(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.para or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS4Type', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docInternalS4Type')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docInternalS4Type':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docInternalS4Type')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docInternalS4Type', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docInternalS4Type'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docInternalS4Type', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'para', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_para'):
+ self.add_para(obj_.value)
+ elif hasattr(self, 'set_para'):
+ self.set_para(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docInternalS4Type
+
+
+class docTitleType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docTitleType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docTitleType.subclass:
+ return docTitleType.subclass(*args_, **kwargs_)
+ else:
+ return docTitleType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTitleType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTitleType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docTitleType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTitleType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTitleType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTitleType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTitleType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docTitleType
+
+
+class docParaType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, hruler=None, preformatted=None, programlisting=None, verbatim=None, indexentry=None, orderedlist=None, itemizedlist=None, simplesect=None, title=None, variablelist=None, table=None, heading=None, dotfile=None, mscfile=None, diafile=None, toclist=None, language=None, parameterlist=None, xrefsect=None, copydoc=None, blockquote=None, parblock=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ if hruler is None:
+ self.hruler = []
+ else:
+ self.hruler = hruler
+ self.hruler_nsprefix_ = None
+ if preformatted is None:
+ self.preformatted = []
+ else:
+ self.preformatted = preformatted
+ self.preformatted_nsprefix_ = None
+ if programlisting is None:
+ self.programlisting = []
+ else:
+ self.programlisting = programlisting
+ self.programlisting_nsprefix_ = None
+ if verbatim is None:
+ self.verbatim = []
+ else:
+ self.verbatim = verbatim
+ self.verbatim_nsprefix_ = None
+ if indexentry is None:
+ self.indexentry = []
+ else:
+ self.indexentry = indexentry
+ self.indexentry_nsprefix_ = None
+ if orderedlist is None:
+ self.orderedlist = []
+ else:
+ self.orderedlist = orderedlist
+ self.orderedlist_nsprefix_ = None
+ if itemizedlist is None:
+ self.itemizedlist = []
+ else:
+ self.itemizedlist = itemizedlist
+ self.itemizedlist_nsprefix_ = None
+ if simplesect is None:
+ self.simplesect = []
+ else:
+ self.simplesect = simplesect
+ self.simplesect_nsprefix_ = None
+ if title is None:
+ self.title = []
+ else:
+ self.title = title
+ self.title_nsprefix_ = None
+ if variablelist is None:
+ self.variablelist = []
+ else:
+ self.variablelist = variablelist
+ self.variablelist_nsprefix_ = None
+ if table is None:
+ self.table = []
+ else:
+ self.table = table
+ self.table_nsprefix_ = None
+ if heading is None:
+ self.heading = []
+ else:
+ self.heading = heading
+ self.heading_nsprefix_ = None
+ if dotfile is None:
+ self.dotfile = []
+ else:
+ self.dotfile = dotfile
+ self.dotfile_nsprefix_ = None
+ if mscfile is None:
+ self.mscfile = []
+ else:
+ self.mscfile = mscfile
+ self.mscfile_nsprefix_ = None
+ if diafile is None:
+ self.diafile = []
+ else:
+ self.diafile = diafile
+ self.diafile_nsprefix_ = None
+ if toclist is None:
+ self.toclist = []
+ else:
+ self.toclist = toclist
+ self.toclist_nsprefix_ = None
+ if language is None:
+ self.language = []
+ else:
+ self.language = language
+ self.language_nsprefix_ = None
+ if parameterlist is None:
+ self.parameterlist = []
+ else:
+ self.parameterlist = parameterlist
+ self.parameterlist_nsprefix_ = None
+ if xrefsect is None:
+ self.xrefsect = []
+ else:
+ self.xrefsect = xrefsect
+ self.xrefsect_nsprefix_ = None
+ if copydoc is None:
+ self.copydoc = []
+ else:
+ self.copydoc = copydoc
+ self.copydoc_nsprefix_ = None
+ if blockquote is None:
+ self.blockquote = []
+ else:
+ self.blockquote = blockquote
+ self.blockquote_nsprefix_ = None
+ if parblock is None:
+ self.parblock = []
+ else:
+ self.parblock = parblock
+ self.parblock_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParaType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParaType.subclass:
+ return docParaType.subclass(*args_, **kwargs_)
+ else:
+ return docParaType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_hruler(self):
+ return self.hruler
+ def set_hruler(self, hruler):
+ self.hruler = hruler
+ def add_hruler(self, value):
+ self.hruler.append(value)
+ def insert_hruler_at(self, index, value):
+ self.hruler.insert(index, value)
+ def replace_hruler_at(self, index, value):
+ self.hruler[index] = value
+ def get_preformatted(self):
+ return self.preformatted
+ def set_preformatted(self, preformatted):
+ self.preformatted = preformatted
+ def add_preformatted(self, value):
+ self.preformatted.append(value)
+ def insert_preformatted_at(self, index, value):
+ self.preformatted.insert(index, value)
+ def replace_preformatted_at(self, index, value):
+ self.preformatted[index] = value
+ def get_programlisting(self):
+ return self.programlisting
+ def set_programlisting(self, programlisting):
+ self.programlisting = programlisting
+ def add_programlisting(self, value):
+ self.programlisting.append(value)
+ def insert_programlisting_at(self, index, value):
+ self.programlisting.insert(index, value)
+ def replace_programlisting_at(self, index, value):
+ self.programlisting[index] = value
+ def get_verbatim(self):
+ return self.verbatim
+ def set_verbatim(self, verbatim):
+ self.verbatim = verbatim
+ def add_verbatim(self, value):
+ self.verbatim.append(value)
+ def insert_verbatim_at(self, index, value):
+ self.verbatim.insert(index, value)
+ def replace_verbatim_at(self, index, value):
+ self.verbatim[index] = value
+ def get_indexentry(self):
+ return self.indexentry
+ def set_indexentry(self, indexentry):
+ self.indexentry = indexentry
+ def add_indexentry(self, value):
+ self.indexentry.append(value)
+ def insert_indexentry_at(self, index, value):
+ self.indexentry.insert(index, value)
+ def replace_indexentry_at(self, index, value):
+ self.indexentry[index] = value
+ def get_orderedlist(self):
+ return self.orderedlist
+ def set_orderedlist(self, orderedlist):
+ self.orderedlist = orderedlist
+ def add_orderedlist(self, value):
+ self.orderedlist.append(value)
+ def insert_orderedlist_at(self, index, value):
+ self.orderedlist.insert(index, value)
+ def replace_orderedlist_at(self, index, value):
+ self.orderedlist[index] = value
+ def get_itemizedlist(self):
+ return self.itemizedlist
+ def set_itemizedlist(self, itemizedlist):
+ self.itemizedlist = itemizedlist
+ def add_itemizedlist(self, value):
+ self.itemizedlist.append(value)
+ def insert_itemizedlist_at(self, index, value):
+ self.itemizedlist.insert(index, value)
+ def replace_itemizedlist_at(self, index, value):
+ self.itemizedlist[index] = value
+ def get_simplesect(self):
+ return self.simplesect
+ def set_simplesect(self, simplesect):
+ self.simplesect = simplesect
+ def add_simplesect(self, value):
+ self.simplesect.append(value)
+ def insert_simplesect_at(self, index, value):
+ self.simplesect.insert(index, value)
+ def replace_simplesect_at(self, index, value):
+ self.simplesect[index] = value
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def add_title(self, value):
+ self.title.append(value)
+ def insert_title_at(self, index, value):
+ self.title.insert(index, value)
+ def replace_title_at(self, index, value):
+ self.title[index] = value
+ def get_variablelist(self):
+ return self.variablelist
+ def set_variablelist(self, variablelist):
+ self.variablelist = variablelist
+ def add_variablelist(self, value):
+ self.variablelist.append(value)
+ def insert_variablelist_at(self, index, value):
+ self.variablelist.insert(index, value)
+ def replace_variablelist_at(self, index, value):
+ self.variablelist[index] = value
+ def get_table(self):
+ return self.table
+ def set_table(self, table):
+ self.table = table
+ def add_table(self, value):
+ self.table.append(value)
+ def insert_table_at(self, index, value):
+ self.table.insert(index, value)
+ def replace_table_at(self, index, value):
+ self.table[index] = value
+ def get_heading(self):
+ return self.heading
+ def set_heading(self, heading):
+ self.heading = heading
+ def add_heading(self, value):
+ self.heading.append(value)
+ def insert_heading_at(self, index, value):
+ self.heading.insert(index, value)
+ def replace_heading_at(self, index, value):
+ self.heading[index] = value
+ def get_dotfile(self):
+ return self.dotfile
+ def set_dotfile(self, dotfile):
+ self.dotfile = dotfile
+ def add_dotfile(self, value):
+ self.dotfile.append(value)
+ def insert_dotfile_at(self, index, value):
+ self.dotfile.insert(index, value)
+ def replace_dotfile_at(self, index, value):
+ self.dotfile[index] = value
+ def get_mscfile(self):
+ return self.mscfile
+ def set_mscfile(self, mscfile):
+ self.mscfile = mscfile
+ def add_mscfile(self, value):
+ self.mscfile.append(value)
+ def insert_mscfile_at(self, index, value):
+ self.mscfile.insert(index, value)
+ def replace_mscfile_at(self, index, value):
+ self.mscfile[index] = value
+ def get_diafile(self):
+ return self.diafile
+ def set_diafile(self, diafile):
+ self.diafile = diafile
+ def add_diafile(self, value):
+ self.diafile.append(value)
+ def insert_diafile_at(self, index, value):
+ self.diafile.insert(index, value)
+ def replace_diafile_at(self, index, value):
+ self.diafile[index] = value
+ def get_toclist(self):
+ return self.toclist
+ def set_toclist(self, toclist):
+ self.toclist = toclist
+ def add_toclist(self, value):
+ self.toclist.append(value)
+ def insert_toclist_at(self, index, value):
+ self.toclist.insert(index, value)
+ def replace_toclist_at(self, index, value):
+ self.toclist[index] = value
+ def get_language(self):
+ return self.language
+ def set_language(self, language):
+ self.language = language
+ def add_language(self, value):
+ self.language.append(value)
+ def insert_language_at(self, index, value):
+ self.language.insert(index, value)
+ def replace_language_at(self, index, value):
+ self.language[index] = value
+ def get_parameterlist(self):
+ return self.parameterlist
+ def set_parameterlist(self, parameterlist):
+ self.parameterlist = parameterlist
+ def add_parameterlist(self, value):
+ self.parameterlist.append(value)
+ def insert_parameterlist_at(self, index, value):
+ self.parameterlist.insert(index, value)
+ def replace_parameterlist_at(self, index, value):
+ self.parameterlist[index] = value
+ def get_xrefsect(self):
+ return self.xrefsect
+ def set_xrefsect(self, xrefsect):
+ self.xrefsect = xrefsect
+ def add_xrefsect(self, value):
+ self.xrefsect.append(value)
+ def insert_xrefsect_at(self, index, value):
+ self.xrefsect.insert(index, value)
+ def replace_xrefsect_at(self, index, value):
+ self.xrefsect[index] = value
+ def get_copydoc(self):
+ return self.copydoc
+ def set_copydoc(self, copydoc):
+ self.copydoc = copydoc
+ def add_copydoc(self, value):
+ self.copydoc.append(value)
+ def insert_copydoc_at(self, index, value):
+ self.copydoc.insert(index, value)
+ def replace_copydoc_at(self, index, value):
+ self.copydoc[index] = value
+ def get_blockquote(self):
+ return self.blockquote
+ def set_blockquote(self, blockquote):
+ self.blockquote = blockquote
+ def add_blockquote(self, value):
+ self.blockquote.append(value)
+ def insert_blockquote_at(self, index, value):
+ self.blockquote.insert(index, value)
+ def replace_blockquote_at(self, index, value):
+ self.blockquote[index] = value
+ def get_parblock(self):
+ return self.parblock
+ def set_parblock(self, parblock):
+ self.parblock = parblock
+ def add_parblock(self, value):
+ self.parblock.append(value)
+ def insert_parblock_at(self, index, value):
+ self.parblock.insert(index, value)
+ def replace_parblock_at(self, index, value):
+ self.parblock[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ self.hruler or
+ self.preformatted or
+ self.programlisting or
+ self.verbatim or
+ self.indexentry or
+ self.orderedlist or
+ self.itemizedlist or
+ self.simplesect or
+ self.title or
+ self.variablelist or
+ self.table or
+ self.heading or
+ self.dotfile or
+ self.mscfile or
+ self.diafile or
+ self.toclist or
+ self.language or
+ self.parameterlist or
+ self.xrefsect or
+ self.copydoc or
+ self.blockquote or
+ self.parblock or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParaType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParaType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParaType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParaType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParaType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParaType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParaType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ for hruler_ in self.hruler:
+ namespaceprefix_ = self.hruler_nsprefix_ + ':' if (UseCapturedNS_ and self.hruler_nsprefix_) else ''
+ hruler_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='hruler', pretty_print=pretty_print)
+ for preformatted_ in self.preformatted:
+ namespaceprefix_ = self.preformatted_nsprefix_ + ':' if (UseCapturedNS_ and self.preformatted_nsprefix_) else ''
+ preformatted_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='preformatted', pretty_print=pretty_print)
+ for programlisting_ in self.programlisting:
+ namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else ''
+ programlisting_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print)
+ for verbatim_ in self.verbatim:
+ namespaceprefix_ = self.verbatim_nsprefix_ + ':' if (UseCapturedNS_ and self.verbatim_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sverbatim>%s</%sverbatim>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(verbatim_), input_name='verbatim')), namespaceprefix_ , eol_))
+ for indexentry_ in self.indexentry:
+ namespaceprefix_ = self.indexentry_nsprefix_ + ':' if (UseCapturedNS_ and self.indexentry_nsprefix_) else ''
+ indexentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='indexentry', pretty_print=pretty_print)
+ for orderedlist_ in self.orderedlist:
+ namespaceprefix_ = self.orderedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.orderedlist_nsprefix_) else ''
+ orderedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='orderedlist', pretty_print=pretty_print)
+ for itemizedlist_ in self.itemizedlist:
+ namespaceprefix_ = self.itemizedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.itemizedlist_nsprefix_) else ''
+ itemizedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='itemizedlist', pretty_print=pretty_print)
+ for simplesect_ in self.simplesect:
+ namespaceprefix_ = self.simplesect_nsprefix_ + ':' if (UseCapturedNS_ and self.simplesect_nsprefix_) else ''
+ simplesect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='simplesect', pretty_print=pretty_print)
+ for title_ in self.title:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ title_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print)
+ for variablelist_ in self.variablelist:
+ namespaceprefix_ = self.variablelist_nsprefix_ + ':' if (UseCapturedNS_ and self.variablelist_nsprefix_) else ''
+ variablelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='variablelist', pretty_print=pretty_print)
+ for table_ in self.table:
+ namespaceprefix_ = self.table_nsprefix_ + ':' if (UseCapturedNS_ and self.table_nsprefix_) else ''
+ table_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='table', pretty_print=pretty_print)
+ for heading_ in self.heading:
+ namespaceprefix_ = self.heading_nsprefix_ + ':' if (UseCapturedNS_ and self.heading_nsprefix_) else ''
+ heading_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='heading', pretty_print=pretty_print)
+ for dotfile_ in self.dotfile:
+ namespaceprefix_ = self.dotfile_nsprefix_ + ':' if (UseCapturedNS_ and self.dotfile_nsprefix_) else ''
+ dotfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dotfile', pretty_print=pretty_print)
+ for mscfile_ in self.mscfile:
+ namespaceprefix_ = self.mscfile_nsprefix_ + ':' if (UseCapturedNS_ and self.mscfile_nsprefix_) else ''
+ mscfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='mscfile', pretty_print=pretty_print)
+ for diafile_ in self.diafile:
+ namespaceprefix_ = self.diafile_nsprefix_ + ':' if (UseCapturedNS_ and self.diafile_nsprefix_) else ''
+ diafile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='diafile', pretty_print=pretty_print)
+ for toclist_ in self.toclist:
+ namespaceprefix_ = self.toclist_nsprefix_ + ':' if (UseCapturedNS_ and self.toclist_nsprefix_) else ''
+ toclist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='toclist', pretty_print=pretty_print)
+ for language_ in self.language:
+ namespaceprefix_ = self.language_nsprefix_ + ':' if (UseCapturedNS_ and self.language_nsprefix_) else ''
+ language_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='language', pretty_print=pretty_print)
+ for parameterlist_ in self.parameterlist:
+ namespaceprefix_ = self.parameterlist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterlist_nsprefix_) else ''
+ parameterlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterlist', pretty_print=pretty_print)
+ for xrefsect_ in self.xrefsect:
+ namespaceprefix_ = self.xrefsect_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefsect_nsprefix_) else ''
+ xrefsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefsect', pretty_print=pretty_print)
+ for copydoc_ in self.copydoc:
+ namespaceprefix_ = self.copydoc_nsprefix_ + ':' if (UseCapturedNS_ and self.copydoc_nsprefix_) else ''
+ copydoc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='copydoc', pretty_print=pretty_print)
+ for blockquote_ in self.blockquote:
+ namespaceprefix_ = self.blockquote_nsprefix_ + ':' if (UseCapturedNS_ and self.blockquote_nsprefix_) else ''
+ blockquote_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='blockquote', pretty_print=pretty_print)
+ for parblock_ in self.parblock:
+ namespaceprefix_ = self.parblock_nsprefix_ + ':' if (UseCapturedNS_ and self.parblock_nsprefix_) else ''
+ parblock_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parblock', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ elif nodeName_ == 'hruler':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'hruler', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_hruler'):
+ self.add_hruler(obj_.value)
+ elif hasattr(self, 'set_hruler'):
+ self.set_hruler(obj_.value)
+ elif nodeName_ == 'preformatted':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'preformatted', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_preformatted'):
+ self.add_preformatted(obj_.value)
+ elif hasattr(self, 'set_preformatted'):
+ self.set_preformatted(obj_.value)
+ elif nodeName_ == 'programlisting':
+ obj_ = listingType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'programlisting', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_programlisting'):
+ self.add_programlisting(obj_.value)
+ elif hasattr(self, 'set_programlisting'):
+ self.set_programlisting(obj_.value)
+ elif nodeName_ == 'verbatim' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'verbatim')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'verbatim')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'verbatim', valuestr_)
+ self.content_.append(obj_)
+ self.verbatim_nsprefix_ = child_.prefix
+ elif nodeName_ == 'indexentry':
+ obj_ = docIndexEntryType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'indexentry', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_indexentry'):
+ self.add_indexentry(obj_.value)
+ elif hasattr(self, 'set_indexentry'):
+ self.set_indexentry(obj_.value)
+ elif nodeName_ == 'orderedlist':
+ obj_ = docListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'orderedlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_orderedlist'):
+ self.add_orderedlist(obj_.value)
+ elif hasattr(self, 'set_orderedlist'):
+ self.set_orderedlist(obj_.value)
+ elif nodeName_ == 'itemizedlist':
+ obj_ = docListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'itemizedlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_itemizedlist'):
+ self.add_itemizedlist(obj_.value)
+ elif hasattr(self, 'set_itemizedlist'):
+ self.set_itemizedlist(obj_.value)
+ elif nodeName_ == 'simplesect':
+ obj_ = docSimpleSectType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'simplesect', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_simplesect'):
+ self.add_simplesect(obj_.value)
+ elif hasattr(self, 'set_simplesect'):
+ self.set_simplesect(obj_.value)
+ elif nodeName_ == 'title':
+ obj_ = docTitleType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'title', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_title'):
+ self.add_title(obj_.value)
+ elif hasattr(self, 'set_title'):
+ self.set_title(obj_.value)
+ elif nodeName_ == 'variablelist':
+ obj_ = docVariableListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'variablelist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_variablelist'):
+ self.add_variablelist(obj_.value)
+ elif hasattr(self, 'set_variablelist'):
+ self.set_variablelist(obj_.value)
+ elif nodeName_ == 'table':
+ obj_ = docTableType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'table', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_table'):
+ self.add_table(obj_.value)
+ elif hasattr(self, 'set_table'):
+ self.set_table(obj_.value)
+ elif nodeName_ == 'heading':
+ obj_ = docHeadingType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'heading', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_heading'):
+ self.add_heading(obj_.value)
+ elif hasattr(self, 'set_heading'):
+ self.set_heading(obj_.value)
+ elif nodeName_ == 'dotfile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dotfile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dotfile'):
+ self.add_dotfile(obj_.value)
+ elif hasattr(self, 'set_dotfile'):
+ self.set_dotfile(obj_.value)
+ elif nodeName_ == 'mscfile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'mscfile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_mscfile'):
+ self.add_mscfile(obj_.value)
+ elif hasattr(self, 'set_mscfile'):
+ self.set_mscfile(obj_.value)
+ elif nodeName_ == 'diafile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'diafile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_diafile'):
+ self.add_diafile(obj_.value)
+ elif hasattr(self, 'set_diafile'):
+ self.set_diafile(obj_.value)
+ elif nodeName_ == 'toclist':
+ obj_ = docTocListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'toclist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_toclist'):
+ self.add_toclist(obj_.value)
+ elif hasattr(self, 'set_toclist'):
+ self.set_toclist(obj_.value)
+ elif nodeName_ == 'language':
+ obj_ = docLanguageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'language', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_language'):
+ self.add_language(obj_.value)
+ elif hasattr(self, 'set_language'):
+ self.set_language(obj_.value)
+ elif nodeName_ == 'parameterlist':
+ obj_ = docParamListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'parameterlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_parameterlist'):
+ self.add_parameterlist(obj_.value)
+ elif hasattr(self, 'set_parameterlist'):
+ self.set_parameterlist(obj_.value)
+ elif nodeName_ == 'xrefsect':
+ obj_ = docXRefSectType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'xrefsect', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_xrefsect'):
+ self.add_xrefsect(obj_.value)
+ elif hasattr(self, 'set_xrefsect'):
+ self.set_xrefsect(obj_.value)
+ elif nodeName_ == 'copydoc':
+ obj_ = docCopyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'copydoc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_copydoc'):
+ self.add_copydoc(obj_.value)
+ elif hasattr(self, 'set_copydoc'):
+ self.set_copydoc(obj_.value)
+ elif nodeName_ == 'blockquote':
+ obj_ = docBlockQuoteType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'blockquote', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_blockquote'):
+ self.add_blockquote(obj_.value)
+ elif hasattr(self, 'set_blockquote'):
+ self.set_blockquote(obj_.value)
+ elif nodeName_ == 'parblock':
+ obj_ = docParBlockType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'parblock', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_parblock'):
+ self.add_parblock(obj_.value)
+ elif hasattr(self, 'set_parblock'):
+ self.set_parblock(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docParaType
+
+
+class docMarkupType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, hruler=None, preformatted=None, programlisting=None, verbatim=None, indexentry=None, orderedlist=None, itemizedlist=None, simplesect=None, title=None, variablelist=None, table=None, heading=None, dotfile=None, mscfile=None, diafile=None, toclist=None, language=None, parameterlist=None, xrefsect=None, copydoc=None, blockquote=None, parblock=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ if hruler is None:
+ self.hruler = []
+ else:
+ self.hruler = hruler
+ self.hruler_nsprefix_ = None
+ if preformatted is None:
+ self.preformatted = []
+ else:
+ self.preformatted = preformatted
+ self.preformatted_nsprefix_ = None
+ if programlisting is None:
+ self.programlisting = []
+ else:
+ self.programlisting = programlisting
+ self.programlisting_nsprefix_ = None
+ if verbatim is None:
+ self.verbatim = []
+ else:
+ self.verbatim = verbatim
+ self.verbatim_nsprefix_ = None
+ if indexentry is None:
+ self.indexentry = []
+ else:
+ self.indexentry = indexentry
+ self.indexentry_nsprefix_ = None
+ if orderedlist is None:
+ self.orderedlist = []
+ else:
+ self.orderedlist = orderedlist
+ self.orderedlist_nsprefix_ = None
+ if itemizedlist is None:
+ self.itemizedlist = []
+ else:
+ self.itemizedlist = itemizedlist
+ self.itemizedlist_nsprefix_ = None
+ if simplesect is None:
+ self.simplesect = []
+ else:
+ self.simplesect = simplesect
+ self.simplesect_nsprefix_ = None
+ if title is None:
+ self.title = []
+ else:
+ self.title = title
+ self.title_nsprefix_ = None
+ if variablelist is None:
+ self.variablelist = []
+ else:
+ self.variablelist = variablelist
+ self.variablelist_nsprefix_ = None
+ if table is None:
+ self.table = []
+ else:
+ self.table = table
+ self.table_nsprefix_ = None
+ if heading is None:
+ self.heading = []
+ else:
+ self.heading = heading
+ self.heading_nsprefix_ = None
+ if dotfile is None:
+ self.dotfile = []
+ else:
+ self.dotfile = dotfile
+ self.dotfile_nsprefix_ = None
+ if mscfile is None:
+ self.mscfile = []
+ else:
+ self.mscfile = mscfile
+ self.mscfile_nsprefix_ = None
+ if diafile is None:
+ self.diafile = []
+ else:
+ self.diafile = diafile
+ self.diafile_nsprefix_ = None
+ if toclist is None:
+ self.toclist = []
+ else:
+ self.toclist = toclist
+ self.toclist_nsprefix_ = None
+ if language is None:
+ self.language = []
+ else:
+ self.language = language
+ self.language_nsprefix_ = None
+ if parameterlist is None:
+ self.parameterlist = []
+ else:
+ self.parameterlist = parameterlist
+ self.parameterlist_nsprefix_ = None
+ if xrefsect is None:
+ self.xrefsect = []
+ else:
+ self.xrefsect = xrefsect
+ self.xrefsect_nsprefix_ = None
+ if copydoc is None:
+ self.copydoc = []
+ else:
+ self.copydoc = copydoc
+ self.copydoc_nsprefix_ = None
+ if blockquote is None:
+ self.blockquote = []
+ else:
+ self.blockquote = blockquote
+ self.blockquote_nsprefix_ = None
+ if parblock is None:
+ self.parblock = []
+ else:
+ self.parblock = parblock
+ self.parblock_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docMarkupType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docMarkupType.subclass:
+ return docMarkupType.subclass(*args_, **kwargs_)
+ else:
+ return docMarkupType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_hruler(self):
+ return self.hruler
+ def set_hruler(self, hruler):
+ self.hruler = hruler
+ def add_hruler(self, value):
+ self.hruler.append(value)
+ def insert_hruler_at(self, index, value):
+ self.hruler.insert(index, value)
+ def replace_hruler_at(self, index, value):
+ self.hruler[index] = value
+ def get_preformatted(self):
+ return self.preformatted
+ def set_preformatted(self, preformatted):
+ self.preformatted = preformatted
+ def add_preformatted(self, value):
+ self.preformatted.append(value)
+ def insert_preformatted_at(self, index, value):
+ self.preformatted.insert(index, value)
+ def replace_preformatted_at(self, index, value):
+ self.preformatted[index] = value
+ def get_programlisting(self):
+ return self.programlisting
+ def set_programlisting(self, programlisting):
+ self.programlisting = programlisting
+ def add_programlisting(self, value):
+ self.programlisting.append(value)
+ def insert_programlisting_at(self, index, value):
+ self.programlisting.insert(index, value)
+ def replace_programlisting_at(self, index, value):
+ self.programlisting[index] = value
+ def get_verbatim(self):
+ return self.verbatim
+ def set_verbatim(self, verbatim):
+ self.verbatim = verbatim
+ def add_verbatim(self, value):
+ self.verbatim.append(value)
+ def insert_verbatim_at(self, index, value):
+ self.verbatim.insert(index, value)
+ def replace_verbatim_at(self, index, value):
+ self.verbatim[index] = value
+ def get_indexentry(self):
+ return self.indexentry
+ def set_indexentry(self, indexentry):
+ self.indexentry = indexentry
+ def add_indexentry(self, value):
+ self.indexentry.append(value)
+ def insert_indexentry_at(self, index, value):
+ self.indexentry.insert(index, value)
+ def replace_indexentry_at(self, index, value):
+ self.indexentry[index] = value
+ def get_orderedlist(self):
+ return self.orderedlist
+ def set_orderedlist(self, orderedlist):
+ self.orderedlist = orderedlist
+ def add_orderedlist(self, value):
+ self.orderedlist.append(value)
+ def insert_orderedlist_at(self, index, value):
+ self.orderedlist.insert(index, value)
+ def replace_orderedlist_at(self, index, value):
+ self.orderedlist[index] = value
+ def get_itemizedlist(self):
+ return self.itemizedlist
+ def set_itemizedlist(self, itemizedlist):
+ self.itemizedlist = itemizedlist
+ def add_itemizedlist(self, value):
+ self.itemizedlist.append(value)
+ def insert_itemizedlist_at(self, index, value):
+ self.itemizedlist.insert(index, value)
+ def replace_itemizedlist_at(self, index, value):
+ self.itemizedlist[index] = value
+ def get_simplesect(self):
+ return self.simplesect
+ def set_simplesect(self, simplesect):
+ self.simplesect = simplesect
+ def add_simplesect(self, value):
+ self.simplesect.append(value)
+ def insert_simplesect_at(self, index, value):
+ self.simplesect.insert(index, value)
+ def replace_simplesect_at(self, index, value):
+ self.simplesect[index] = value
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def add_title(self, value):
+ self.title.append(value)
+ def insert_title_at(self, index, value):
+ self.title.insert(index, value)
+ def replace_title_at(self, index, value):
+ self.title[index] = value
+ def get_variablelist(self):
+ return self.variablelist
+ def set_variablelist(self, variablelist):
+ self.variablelist = variablelist
+ def add_variablelist(self, value):
+ self.variablelist.append(value)
+ def insert_variablelist_at(self, index, value):
+ self.variablelist.insert(index, value)
+ def replace_variablelist_at(self, index, value):
+ self.variablelist[index] = value
+ def get_table(self):
+ return self.table
+ def set_table(self, table):
+ self.table = table
+ def add_table(self, value):
+ self.table.append(value)
+ def insert_table_at(self, index, value):
+ self.table.insert(index, value)
+ def replace_table_at(self, index, value):
+ self.table[index] = value
+ def get_heading(self):
+ return self.heading
+ def set_heading(self, heading):
+ self.heading = heading
+ def add_heading(self, value):
+ self.heading.append(value)
+ def insert_heading_at(self, index, value):
+ self.heading.insert(index, value)
+ def replace_heading_at(self, index, value):
+ self.heading[index] = value
+ def get_dotfile(self):
+ return self.dotfile
+ def set_dotfile(self, dotfile):
+ self.dotfile = dotfile
+ def add_dotfile(self, value):
+ self.dotfile.append(value)
+ def insert_dotfile_at(self, index, value):
+ self.dotfile.insert(index, value)
+ def replace_dotfile_at(self, index, value):
+ self.dotfile[index] = value
+ def get_mscfile(self):
+ return self.mscfile
+ def set_mscfile(self, mscfile):
+ self.mscfile = mscfile
+ def add_mscfile(self, value):
+ self.mscfile.append(value)
+ def insert_mscfile_at(self, index, value):
+ self.mscfile.insert(index, value)
+ def replace_mscfile_at(self, index, value):
+ self.mscfile[index] = value
+ def get_diafile(self):
+ return self.diafile
+ def set_diafile(self, diafile):
+ self.diafile = diafile
+ def add_diafile(self, value):
+ self.diafile.append(value)
+ def insert_diafile_at(self, index, value):
+ self.diafile.insert(index, value)
+ def replace_diafile_at(self, index, value):
+ self.diafile[index] = value
+ def get_toclist(self):
+ return self.toclist
+ def set_toclist(self, toclist):
+ self.toclist = toclist
+ def add_toclist(self, value):
+ self.toclist.append(value)
+ def insert_toclist_at(self, index, value):
+ self.toclist.insert(index, value)
+ def replace_toclist_at(self, index, value):
+ self.toclist[index] = value
+ def get_language(self):
+ return self.language
+ def set_language(self, language):
+ self.language = language
+ def add_language(self, value):
+ self.language.append(value)
+ def insert_language_at(self, index, value):
+ self.language.insert(index, value)
+ def replace_language_at(self, index, value):
+ self.language[index] = value
+ def get_parameterlist(self):
+ return self.parameterlist
+ def set_parameterlist(self, parameterlist):
+ self.parameterlist = parameterlist
+ def add_parameterlist(self, value):
+ self.parameterlist.append(value)
+ def insert_parameterlist_at(self, index, value):
+ self.parameterlist.insert(index, value)
+ def replace_parameterlist_at(self, index, value):
+ self.parameterlist[index] = value
+ def get_xrefsect(self):
+ return self.xrefsect
+ def set_xrefsect(self, xrefsect):
+ self.xrefsect = xrefsect
+ def add_xrefsect(self, value):
+ self.xrefsect.append(value)
+ def insert_xrefsect_at(self, index, value):
+ self.xrefsect.insert(index, value)
+ def replace_xrefsect_at(self, index, value):
+ self.xrefsect[index] = value
+ def get_copydoc(self):
+ return self.copydoc
+ def set_copydoc(self, copydoc):
+ self.copydoc = copydoc
+ def add_copydoc(self, value):
+ self.copydoc.append(value)
+ def insert_copydoc_at(self, index, value):
+ self.copydoc.insert(index, value)
+ def replace_copydoc_at(self, index, value):
+ self.copydoc[index] = value
+ def get_blockquote(self):
+ return self.blockquote
+ def set_blockquote(self, blockquote):
+ self.blockquote = blockquote
+ def add_blockquote(self, value):
+ self.blockquote.append(value)
+ def insert_blockquote_at(self, index, value):
+ self.blockquote.insert(index, value)
+ def replace_blockquote_at(self, index, value):
+ self.blockquote[index] = value
+ def get_parblock(self):
+ return self.parblock
+ def set_parblock(self, parblock):
+ self.parblock = parblock
+ def add_parblock(self, value):
+ self.parblock.append(value)
+ def insert_parblock_at(self, index, value):
+ self.parblock.insert(index, value)
+ def replace_parblock_at(self, index, value):
+ self.parblock[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ self.hruler or
+ self.preformatted or
+ self.programlisting or
+ self.verbatim or
+ self.indexentry or
+ self.orderedlist or
+ self.itemizedlist or
+ self.simplesect or
+ self.title or
+ self.variablelist or
+ self.table or
+ self.heading or
+ self.dotfile or
+ self.mscfile or
+ self.diafile or
+ self.toclist or
+ self.language or
+ self.parameterlist or
+ self.xrefsect or
+ self.copydoc or
+ self.blockquote or
+ self.parblock or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docMarkupType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docMarkupType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docMarkupType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docMarkupType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docMarkupType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docMarkupType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docMarkupType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ for hruler_ in self.hruler:
+ namespaceprefix_ = self.hruler_nsprefix_ + ':' if (UseCapturedNS_ and self.hruler_nsprefix_) else ''
+ hruler_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='hruler', pretty_print=pretty_print)
+ for preformatted_ in self.preformatted:
+ namespaceprefix_ = self.preformatted_nsprefix_ + ':' if (UseCapturedNS_ and self.preformatted_nsprefix_) else ''
+ preformatted_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='preformatted', pretty_print=pretty_print)
+ for programlisting_ in self.programlisting:
+ namespaceprefix_ = self.programlisting_nsprefix_ + ':' if (UseCapturedNS_ and self.programlisting_nsprefix_) else ''
+ programlisting_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='programlisting', pretty_print=pretty_print)
+ for verbatim_ in self.verbatim:
+ namespaceprefix_ = self.verbatim_nsprefix_ + ':' if (UseCapturedNS_ and self.verbatim_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sverbatim>%s</%sverbatim>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(verbatim_), input_name='verbatim')), namespaceprefix_ , eol_))
+ for indexentry_ in self.indexentry:
+ namespaceprefix_ = self.indexentry_nsprefix_ + ':' if (UseCapturedNS_ and self.indexentry_nsprefix_) else ''
+ indexentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='indexentry', pretty_print=pretty_print)
+ for orderedlist_ in self.orderedlist:
+ namespaceprefix_ = self.orderedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.orderedlist_nsprefix_) else ''
+ orderedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='orderedlist', pretty_print=pretty_print)
+ for itemizedlist_ in self.itemizedlist:
+ namespaceprefix_ = self.itemizedlist_nsprefix_ + ':' if (UseCapturedNS_ and self.itemizedlist_nsprefix_) else ''
+ itemizedlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='itemizedlist', pretty_print=pretty_print)
+ for simplesect_ in self.simplesect:
+ namespaceprefix_ = self.simplesect_nsprefix_ + ':' if (UseCapturedNS_ and self.simplesect_nsprefix_) else ''
+ simplesect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='simplesect', pretty_print=pretty_print)
+ for title_ in self.title:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ title_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print)
+ for variablelist_ in self.variablelist:
+ namespaceprefix_ = self.variablelist_nsprefix_ + ':' if (UseCapturedNS_ and self.variablelist_nsprefix_) else ''
+ variablelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='variablelist', pretty_print=pretty_print)
+ for table_ in self.table:
+ namespaceprefix_ = self.table_nsprefix_ + ':' if (UseCapturedNS_ and self.table_nsprefix_) else ''
+ table_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='table', pretty_print=pretty_print)
+ for heading_ in self.heading:
+ namespaceprefix_ = self.heading_nsprefix_ + ':' if (UseCapturedNS_ and self.heading_nsprefix_) else ''
+ heading_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='heading', pretty_print=pretty_print)
+ for dotfile_ in self.dotfile:
+ namespaceprefix_ = self.dotfile_nsprefix_ + ':' if (UseCapturedNS_ and self.dotfile_nsprefix_) else ''
+ dotfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dotfile', pretty_print=pretty_print)
+ for mscfile_ in self.mscfile:
+ namespaceprefix_ = self.mscfile_nsprefix_ + ':' if (UseCapturedNS_ and self.mscfile_nsprefix_) else ''
+ mscfile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='mscfile', pretty_print=pretty_print)
+ for diafile_ in self.diafile:
+ namespaceprefix_ = self.diafile_nsprefix_ + ':' if (UseCapturedNS_ and self.diafile_nsprefix_) else ''
+ diafile_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='diafile', pretty_print=pretty_print)
+ for toclist_ in self.toclist:
+ namespaceprefix_ = self.toclist_nsprefix_ + ':' if (UseCapturedNS_ and self.toclist_nsprefix_) else ''
+ toclist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='toclist', pretty_print=pretty_print)
+ for language_ in self.language:
+ namespaceprefix_ = self.language_nsprefix_ + ':' if (UseCapturedNS_ and self.language_nsprefix_) else ''
+ language_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='language', pretty_print=pretty_print)
+ for parameterlist_ in self.parameterlist:
+ namespaceprefix_ = self.parameterlist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterlist_nsprefix_) else ''
+ parameterlist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterlist', pretty_print=pretty_print)
+ for xrefsect_ in self.xrefsect:
+ namespaceprefix_ = self.xrefsect_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefsect_nsprefix_) else ''
+ xrefsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefsect', pretty_print=pretty_print)
+ for copydoc_ in self.copydoc:
+ namespaceprefix_ = self.copydoc_nsprefix_ + ':' if (UseCapturedNS_ and self.copydoc_nsprefix_) else ''
+ copydoc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='copydoc', pretty_print=pretty_print)
+ for blockquote_ in self.blockquote:
+ namespaceprefix_ = self.blockquote_nsprefix_ + ':' if (UseCapturedNS_ and self.blockquote_nsprefix_) else ''
+ blockquote_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='blockquote', pretty_print=pretty_print)
+ for parblock_ in self.parblock:
+ namespaceprefix_ = self.parblock_nsprefix_ + ':' if (UseCapturedNS_ and self.parblock_nsprefix_) else ''
+ parblock_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parblock', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ elif nodeName_ == 'hruler':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'hruler', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_hruler'):
+ self.add_hruler(obj_.value)
+ elif hasattr(self, 'set_hruler'):
+ self.set_hruler(obj_.value)
+ elif nodeName_ == 'preformatted':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'preformatted', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_preformatted'):
+ self.add_preformatted(obj_.value)
+ elif hasattr(self, 'set_preformatted'):
+ self.set_preformatted(obj_.value)
+ elif nodeName_ == 'programlisting':
+ obj_ = listingType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'programlisting', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_programlisting'):
+ self.add_programlisting(obj_.value)
+ elif hasattr(self, 'set_programlisting'):
+ self.set_programlisting(obj_.value)
+ elif nodeName_ == 'verbatim' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'verbatim')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'verbatim')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'verbatim', valuestr_)
+ self.content_.append(obj_)
+ self.verbatim_nsprefix_ = child_.prefix
+ elif nodeName_ == 'indexentry':
+ obj_ = docIndexEntryType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'indexentry', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_indexentry'):
+ self.add_indexentry(obj_.value)
+ elif hasattr(self, 'set_indexentry'):
+ self.set_indexentry(obj_.value)
+ elif nodeName_ == 'orderedlist':
+ obj_ = docListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'orderedlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_orderedlist'):
+ self.add_orderedlist(obj_.value)
+ elif hasattr(self, 'set_orderedlist'):
+ self.set_orderedlist(obj_.value)
+ elif nodeName_ == 'itemizedlist':
+ obj_ = docListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'itemizedlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_itemizedlist'):
+ self.add_itemizedlist(obj_.value)
+ elif hasattr(self, 'set_itemizedlist'):
+ self.set_itemizedlist(obj_.value)
+ elif nodeName_ == 'simplesect':
+ obj_ = docSimpleSectType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'simplesect', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_simplesect'):
+ self.add_simplesect(obj_.value)
+ elif hasattr(self, 'set_simplesect'):
+ self.set_simplesect(obj_.value)
+ elif nodeName_ == 'title':
+ obj_ = docTitleType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'title', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_title'):
+ self.add_title(obj_.value)
+ elif hasattr(self, 'set_title'):
+ self.set_title(obj_.value)
+ elif nodeName_ == 'variablelist':
+ obj_ = docVariableListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'variablelist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_variablelist'):
+ self.add_variablelist(obj_.value)
+ elif hasattr(self, 'set_variablelist'):
+ self.set_variablelist(obj_.value)
+ elif nodeName_ == 'table':
+ obj_ = docTableType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'table', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_table'):
+ self.add_table(obj_.value)
+ elif hasattr(self, 'set_table'):
+ self.set_table(obj_.value)
+ elif nodeName_ == 'heading':
+ obj_ = docHeadingType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'heading', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_heading'):
+ self.add_heading(obj_.value)
+ elif hasattr(self, 'set_heading'):
+ self.set_heading(obj_.value)
+ elif nodeName_ == 'dotfile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dotfile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dotfile'):
+ self.add_dotfile(obj_.value)
+ elif hasattr(self, 'set_dotfile'):
+ self.set_dotfile(obj_.value)
+ elif nodeName_ == 'mscfile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'mscfile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_mscfile'):
+ self.add_mscfile(obj_.value)
+ elif hasattr(self, 'set_mscfile'):
+ self.set_mscfile(obj_.value)
+ elif nodeName_ == 'diafile':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'diafile', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_diafile'):
+ self.add_diafile(obj_.value)
+ elif hasattr(self, 'set_diafile'):
+ self.set_diafile(obj_.value)
+ elif nodeName_ == 'toclist':
+ obj_ = docTocListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'toclist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_toclist'):
+ self.add_toclist(obj_.value)
+ elif hasattr(self, 'set_toclist'):
+ self.set_toclist(obj_.value)
+ elif nodeName_ == 'language':
+ obj_ = docLanguageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'language', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_language'):
+ self.add_language(obj_.value)
+ elif hasattr(self, 'set_language'):
+ self.set_language(obj_.value)
+ elif nodeName_ == 'parameterlist':
+ obj_ = docParamListType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'parameterlist', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_parameterlist'):
+ self.add_parameterlist(obj_.value)
+ elif hasattr(self, 'set_parameterlist'):
+ self.set_parameterlist(obj_.value)
+ elif nodeName_ == 'xrefsect':
+ obj_ = docXRefSectType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'xrefsect', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_xrefsect'):
+ self.add_xrefsect(obj_.value)
+ elif hasattr(self, 'set_xrefsect'):
+ self.set_xrefsect(obj_.value)
+ elif nodeName_ == 'copydoc':
+ obj_ = docCopyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'copydoc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_copydoc'):
+ self.add_copydoc(obj_.value)
+ elif hasattr(self, 'set_copydoc'):
+ self.set_copydoc(obj_.value)
+ elif nodeName_ == 'blockquote':
+ obj_ = docBlockQuoteType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'blockquote', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_blockquote'):
+ self.add_blockquote(obj_.value)
+ elif hasattr(self, 'set_blockquote'):
+ self.set_blockquote(obj_.value)
+ elif nodeName_ == 'parblock':
+ obj_ = docParBlockType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'parblock', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_parblock'):
+ self.add_parblock(obj_.value)
+ elif hasattr(self, 'set_parblock'):
+ self.set_parblock(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docMarkupType
+
+
+class docURLLink(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, url=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.url = _cast(None, url)
+ self.url_nsprefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docURLLink)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docURLLink.subclass:
+ return docURLLink.subclass(*args_, **kwargs_)
+ else:
+ return docURLLink(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_url(self):
+ return self.url
+ def set_url(self, url):
+ self.url = url
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docURLLink', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docURLLink')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docURLLink':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docURLLink')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docURLLink', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docURLLink'):
+ if self.url is not None and 'url' not in already_processed:
+ already_processed.add('url')
+ outfile.write(' url=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.url), input_name='url')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docURLLink', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('url', node)
+ if value is not None and 'url' not in already_processed:
+ already_processed.add('url')
+ self.url = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docURLLink
+
+
+class docAnchorType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docAnchorType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docAnchorType.subclass:
+ return docAnchorType.subclass(*args_, **kwargs_)
+ else:
+ return docAnchorType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docAnchorType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docAnchorType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docAnchorType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docAnchorType')
+ outfile.write('>')
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
+ outfile.write(self.convert_unicode(self.valueOf_))
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docAnchorType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docAnchorType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+ pass
+# end class docAnchorType
+
+
+class docFormulaType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docFormulaType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docFormulaType.subclass:
+ return docFormulaType.subclass(*args_, **kwargs_)
+ else:
+ return docFormulaType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docFormulaType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docFormulaType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docFormulaType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docFormulaType')
+ outfile.write('>')
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
+ outfile.write(self.convert_unicode(self.valueOf_))
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docFormulaType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docFormulaType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+ pass
+# end class docFormulaType
+
+
+class docIndexEntryType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, primaryie=None, secondaryie=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.primaryie = primaryie
+ self.primaryie_nsprefix_ = None
+ self.secondaryie = secondaryie
+ self.secondaryie_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docIndexEntryType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docIndexEntryType.subclass:
+ return docIndexEntryType.subclass(*args_, **kwargs_)
+ else:
+ return docIndexEntryType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_primaryie(self):
+ return self.primaryie
+ def set_primaryie(self, primaryie):
+ self.primaryie = primaryie
+ def get_secondaryie(self):
+ return self.secondaryie
+ def set_secondaryie(self, secondaryie):
+ self.secondaryie = secondaryie
+ def hasContent_(self):
+ if (
+ self.primaryie is not None or
+ self.secondaryie is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docIndexEntryType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docIndexEntryType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docIndexEntryType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docIndexEntryType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docIndexEntryType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docIndexEntryType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docIndexEntryType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.primaryie is not None:
+ namespaceprefix_ = self.primaryie_nsprefix_ + ':' if (UseCapturedNS_ and self.primaryie_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sprimaryie>%s</%sprimaryie>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.primaryie), input_name='primaryie')), namespaceprefix_ , eol_))
+ if self.secondaryie is not None:
+ namespaceprefix_ = self.secondaryie_nsprefix_ + ':' if (UseCapturedNS_ and self.secondaryie_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%ssecondaryie>%s</%ssecondaryie>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.secondaryie), input_name='secondaryie')), namespaceprefix_ , eol_))
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'primaryie':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'primaryie')
+ value_ = self.gds_validate_string(value_, node, 'primaryie')
+ self.primaryie = value_
+ self.primaryie_nsprefix_ = child_.prefix
+ elif nodeName_ == 'secondaryie':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'secondaryie')
+ value_ = self.gds_validate_string(value_, node, 'secondaryie')
+ self.secondaryie = value_
+ self.secondaryie_nsprefix_ = child_.prefix
+# end class docIndexEntryType
+
+
+class docListType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, listitem=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if listitem is None:
+ self.listitem = []
+ else:
+ self.listitem = listitem
+ self.listitem_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docListType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docListType.subclass:
+ return docListType.subclass(*args_, **kwargs_)
+ else:
+ return docListType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_listitem(self):
+ return self.listitem
+ def set_listitem(self, listitem):
+ self.listitem = listitem
+ def add_listitem(self, value):
+ self.listitem.append(value)
+ def insert_listitem_at(self, index, value):
+ self.listitem.insert(index, value)
+ def replace_listitem_at(self, index, value):
+ self.listitem[index] = value
+ def hasContent_(self):
+ if (
+ self.listitem
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docListType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docListType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docListType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docListType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docListType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for listitem_ in self.listitem:
+ namespaceprefix_ = self.listitem_nsprefix_ + ':' if (UseCapturedNS_ and self.listitem_nsprefix_) else ''
+ listitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listitem', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'listitem':
+ obj_ = docListItemType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.listitem.append(obj_)
+ obj_.original_tagname_ = 'listitem'
+# end class docListType
+
+
+class docListItemType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docListItemType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docListItemType.subclass:
+ return docListItemType.subclass(*args_, **kwargs_)
+ else:
+ return docListItemType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def hasContent_(self):
+ if (
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListItemType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docListItemType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docListItemType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docListItemType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docListItemType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docListItemType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docListItemType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docListItemType
+
+
+class docSimpleSectType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, kind=None, title=None, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.title = title
+ self.title_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docSimpleSectType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docSimpleSectType.subclass:
+ return docSimpleSectType.subclass(*args_, **kwargs_)
+ else:
+ return docSimpleSectType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_title(self):
+ return self.title
+ def set_title(self, title):
+ self.title = title
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def validate_DoxSimpleSectKind(self, value):
+ # Validate type DoxSimpleSectKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['see', 'return', 'author', 'authors', 'version', 'since', 'date', 'note', 'warning', 'pre', 'post', 'copyright', 'invariant', 'remark', 'attention', 'par', 'rcs']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxSimpleSectKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.title is not None or
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSimpleSectType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docSimpleSectType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docSimpleSectType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docSimpleSectType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docSimpleSectType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docSimpleSectType'):
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docSimpleSectType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.title is not None:
+ namespaceprefix_ = self.title_nsprefix_ + ':' if (UseCapturedNS_ and self.title_nsprefix_) else ''
+ self.title.export(outfile, level, namespaceprefix_, namespacedef_='', name_='title', pretty_print=pretty_print)
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_DoxSimpleSectKind(self.kind) # validate type DoxSimpleSectKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'title':
+ obj_ = docTitleType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.title = obj_
+ obj_.original_tagname_ = 'title'
+ elif nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docSimpleSectType
+
+
+class docVarListEntryType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, term=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.term = term
+ self.term_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docVarListEntryType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docVarListEntryType.subclass:
+ return docVarListEntryType.subclass(*args_, **kwargs_)
+ else:
+ return docVarListEntryType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_term(self):
+ return self.term
+ def set_term(self, term):
+ self.term = term
+ def hasContent_(self):
+ if (
+ self.term is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVarListEntryType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docVarListEntryType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docVarListEntryType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docVarListEntryType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docVarListEntryType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docVarListEntryType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVarListEntryType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.term is not None:
+ namespaceprefix_ = self.term_nsprefix_ + ':' if (UseCapturedNS_ and self.term_nsprefix_) else ''
+ self.term.export(outfile, level, namespaceprefix_, namespacedef_='', name_='term', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'term':
+ obj_ = docTitleType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.term = obj_
+ obj_.original_tagname_ = 'term'
+# end class docVarListEntryType
+
+
+class docVariableListType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, varlistentry=None, listitem=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if varlistentry is None:
+ self.varlistentry = []
+ else:
+ self.varlistentry = varlistentry
+ self.varlistentry_nsprefix_ = None
+ if listitem is None:
+ self.listitem = []
+ else:
+ self.listitem = listitem
+ self.listitem_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docVariableListType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docVariableListType.subclass:
+ return docVariableListType.subclass(*args_, **kwargs_)
+ else:
+ return docVariableListType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_varlistentry(self):
+ return self.varlistentry
+ def set_varlistentry(self, varlistentry):
+ self.varlistentry = varlistentry
+ def add_varlistentry(self, value):
+ self.varlistentry.append(value)
+ def insert_varlistentry_at(self, index, value):
+ self.varlistentry.insert(index, value)
+ def replace_varlistentry_at(self, index, value):
+ self.varlistentry[index] = value
+ def get_listitem(self):
+ return self.listitem
+ def set_listitem(self, listitem):
+ self.listitem = listitem
+ def add_listitem(self, value):
+ self.listitem.append(value)
+ def insert_listitem_at(self, index, value):
+ self.listitem.insert(index, value)
+ def replace_listitem_at(self, index, value):
+ self.listitem[index] = value
+ def hasContent_(self):
+ if (
+ self.varlistentry or
+ self.listitem
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVariableListType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docVariableListType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docVariableListType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docVariableListType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docVariableListType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docVariableListType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docVariableListType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for varlistentry_ in self.varlistentry:
+ namespaceprefix_ = self.varlistentry_nsprefix_ + ':' if (UseCapturedNS_ and self.varlistentry_nsprefix_) else ''
+ varlistentry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='varlistentry', pretty_print=pretty_print)
+ for listitem_ in self.listitem:
+ namespaceprefix_ = self.listitem_nsprefix_ + ':' if (UseCapturedNS_ and self.listitem_nsprefix_) else ''
+ listitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='listitem', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'varlistentry':
+ obj_ = docVarListEntryType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.varlistentry.append(obj_)
+ obj_.original_tagname_ = 'varlistentry'
+ elif nodeName_ == 'listitem':
+ obj_ = docListItemType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.listitem.append(obj_)
+ obj_.original_tagname_ = 'listitem'
+# end class docVariableListType
+
+
+class docRefTextType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, kindref=None, external=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.kindref = _cast(None, kindref)
+ self.kindref_nsprefix_ = None
+ self.external = _cast(None, external)
+ self.external_nsprefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docRefTextType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docRefTextType.subclass:
+ return docRefTextType.subclass(*args_, **kwargs_)
+ else:
+ return docRefTextType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_kindref(self):
+ return self.kindref
+ def set_kindref(self, kindref):
+ self.kindref = kindref
+ def get_external(self):
+ return self.external
+ def set_external(self, external):
+ self.external = external
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxRefKind(self, value):
+ # Validate type DoxRefKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['compound', 'member']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxRefKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRefTextType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docRefTextType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docRefTextType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docRefTextType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docRefTextType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docRefTextType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.kindref is not None and 'kindref' not in already_processed:
+ already_processed.add('kindref')
+ outfile.write(' kindref=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kindref), input_name='kindref')), ))
+ if self.external is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ outfile.write(' external=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.external), input_name='external')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRefTextType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('kindref', node)
+ if value is not None and 'kindref' not in already_processed:
+ already_processed.add('kindref')
+ self.kindref = value
+ self.validate_DoxRefKind(self.kindref) # validate type DoxRefKind
+ value = find_attr_value_('external', node)
+ if value is not None and 'external' not in already_processed:
+ already_processed.add('external')
+ self.external = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docRefTextType
+
+
+class docTableType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, rows=None, cols=None, width=None, caption=None, row=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.rows = _cast(int, rows)
+ self.rows_nsprefix_ = None
+ self.cols = _cast(int, cols)
+ self.cols_nsprefix_ = None
+ self.width = _cast(None, width)
+ self.width_nsprefix_ = None
+ self.caption = caption
+ self.caption_nsprefix_ = None
+ if row is None:
+ self.row = []
+ else:
+ self.row = row
+ self.row_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docTableType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docTableType.subclass:
+ return docTableType.subclass(*args_, **kwargs_)
+ else:
+ return docTableType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_caption(self):
+ return self.caption
+ def set_caption(self, caption):
+ self.caption = caption
+ def get_row(self):
+ return self.row
+ def set_row(self, row):
+ self.row = row
+ def add_row(self, value):
+ self.row.append(value)
+ def insert_row_at(self, index, value):
+ self.row.insert(index, value)
+ def replace_row_at(self, index, value):
+ self.row[index] = value
+ def get_rows(self):
+ return self.rows
+ def set_rows(self, rows):
+ self.rows = rows
+ def get_cols(self):
+ return self.cols
+ def set_cols(self, cols):
+ self.cols = cols
+ def get_width(self):
+ return self.width
+ def set_width(self, width):
+ self.width = width
+ def hasContent_(self):
+ if (
+ self.caption is not None or
+ self.row
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTableType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTableType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docTableType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTableType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTableType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTableType'):
+ if self.rows is not None and 'rows' not in already_processed:
+ already_processed.add('rows')
+ outfile.write(' rows="%s"' % self.gds_format_integer(self.rows, input_name='rows'))
+ if self.cols is not None and 'cols' not in already_processed:
+ already_processed.add('cols')
+ outfile.write(' cols="%s"' % self.gds_format_integer(self.cols, input_name='cols'))
+ if self.width is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTableType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.caption is not None:
+ namespaceprefix_ = self.caption_nsprefix_ + ':' if (UseCapturedNS_ and self.caption_nsprefix_) else ''
+ self.caption.export(outfile, level, namespaceprefix_, namespacedef_='', name_='caption', pretty_print=pretty_print)
+ for row_ in self.row:
+ namespaceprefix_ = self.row_nsprefix_ + ':' if (UseCapturedNS_ and self.row_nsprefix_) else ''
+ row_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='row', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('rows', node)
+ if value is not None and 'rows' not in already_processed:
+ already_processed.add('rows')
+ self.rows = self.gds_parse_integer(value, node, 'rows')
+ value = find_attr_value_('cols', node)
+ if value is not None and 'cols' not in already_processed:
+ already_processed.add('cols')
+ self.cols = self.gds_parse_integer(value, node, 'cols')
+ value = find_attr_value_('width', node)
+ if value is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ self.width = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'caption':
+ obj_ = docCaptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.caption = obj_
+ obj_.original_tagname_ = 'caption'
+ elif nodeName_ == 'row':
+ obj_ = docRowType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.row.append(obj_)
+ obj_.original_tagname_ = 'row'
+# end class docTableType
+
+
+class docRowType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, entry=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if entry is None:
+ self.entry = []
+ else:
+ self.entry = entry
+ self.entry_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docRowType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docRowType.subclass:
+ return docRowType.subclass(*args_, **kwargs_)
+ else:
+ return docRowType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_entry(self):
+ return self.entry
+ def set_entry(self, entry):
+ self.entry = entry
+ def add_entry(self, value):
+ self.entry.append(value)
+ def insert_entry_at(self, index, value):
+ self.entry.insert(index, value)
+ def replace_entry_at(self, index, value):
+ self.entry[index] = value
+ def hasContent_(self):
+ if (
+ self.entry
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRowType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docRowType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docRowType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docRowType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docRowType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docRowType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docRowType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for entry_ in self.entry:
+ namespaceprefix_ = self.entry_nsprefix_ + ':' if (UseCapturedNS_ and self.entry_nsprefix_) else ''
+ entry_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='entry', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'entry':
+ obj_ = docEntryType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.entry.append(obj_)
+ obj_.original_tagname_ = 'entry'
+# end class docRowType
+
+
+class docEntryType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, thead=None, colspan=None, rowspan=None, align=None, valign=None, width=None, class_=None, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.thead = _cast(None, thead)
+ self.thead_nsprefix_ = None
+ self.colspan = _cast(int, colspan)
+ self.colspan_nsprefix_ = None
+ self.rowspan = _cast(int, rowspan)
+ self.rowspan_nsprefix_ = None
+ self.align = _cast(None, align)
+ self.align_nsprefix_ = None
+ self.valign = _cast(None, valign)
+ self.valign_nsprefix_ = None
+ self.width = _cast(None, width)
+ self.width_nsprefix_ = None
+ self.class_ = _cast(None, class_)
+ self.class__nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ self.anyAttributes_ = {}
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docEntryType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docEntryType.subclass:
+ return docEntryType.subclass(*args_, **kwargs_)
+ else:
+ return docEntryType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_thead(self):
+ return self.thead
+ def set_thead(self, thead):
+ self.thead = thead
+ def get_colspan(self):
+ return self.colspan
+ def set_colspan(self, colspan):
+ self.colspan = colspan
+ def get_rowspan(self):
+ return self.rowspan
+ def set_rowspan(self, rowspan):
+ self.rowspan = rowspan
+ def get_align(self):
+ return self.align
+ def set_align(self, align):
+ self.align = align
+ def get_valign(self):
+ return self.valign
+ def set_valign(self, valign):
+ self.valign = valign
+ def get_width(self):
+ return self.width
+ def set_width(self, width):
+ self.width = width
+ def get_class(self):
+ return self.class_
+ def set_class(self, class_):
+ self.class_ = class_
+ def get_anyAttributes_(self): return self.anyAttributes_
+ def set_anyAttributes_(self, anyAttributes_): self.anyAttributes_ = anyAttributes_
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxAlign(self, value):
+ # Validate type DoxAlign, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['left', 'right', 'center']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxAlign' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxVerticalAlign(self, value):
+ # Validate type DoxVerticalAlign, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['bottom', 'top', 'middle']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxVerticalAlign' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEntryType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEntryType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docEntryType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEntryType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEntryType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEntryType'):
+ unique_counter = 0
+ for name, value in self.anyAttributes_.items():
+ xsinamespaceprefix = 'xsi'
+ xsinamespace1 = 'http://www.w3.org/2001/XMLSchema-instance'
+ xsinamespace2 = '{%s}' % (xsinamespace1, )
+ if name.startswith(xsinamespace2):
+ name1 = name[len(xsinamespace2):]
+ name2 = '%s:%s' % (xsinamespaceprefix, name1, )
+ if name2 not in already_processed:
+ already_processed.add(name2)
+ outfile.write(' %s=%s' % (name2, quote_attrib(value), ))
+ else:
+ mo = re_.match(Namespace_extract_pat_, name)
+ if mo is not None:
+ namespace, name = mo.group(1, 2)
+ if name not in already_processed:
+ already_processed.add(name)
+ if namespace == 'http://www.w3.org/XML/1998/namespace':
+ outfile.write(' %s=%s' % (
+ name, quote_attrib(value), ))
+ else:
+ unique_counter += 1
+ outfile.write(' xmlns:%d="%s"' % (
+ unique_counter, namespace, ))
+ outfile.write(' %d:%s=%s' % (
+ unique_counter, name, quote_attrib(value), ))
+ else:
+ if name not in already_processed:
+ already_processed.add(name)
+ outfile.write(' %s=%s' % (
+ name, quote_attrib(value), ))
+ if self.thead is not None and 'thead' not in already_processed:
+ already_processed.add('thead')
+ outfile.write(' thead=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.thead), input_name='thead')), ))
+ if self.colspan is not None and 'colspan' not in already_processed:
+ already_processed.add('colspan')
+ outfile.write(' colspan="%s"' % self.gds_format_integer(self.colspan, input_name='colspan'))
+ if self.rowspan is not None and 'rowspan' not in already_processed:
+ already_processed.add('rowspan')
+ outfile.write(' rowspan="%s"' % self.gds_format_integer(self.rowspan, input_name='rowspan'))
+ if self.align is not None and 'align' not in already_processed:
+ already_processed.add('align')
+ outfile.write(' align=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.align), input_name='align')), ))
+ if self.valign is not None and 'valign' not in already_processed:
+ already_processed.add('valign')
+ outfile.write(' valign=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.valign), input_name='valign')), ))
+ if self.width is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), ))
+ if self.class_ is not None and 'class_' not in already_processed:
+ already_processed.add('class_')
+ outfile.write(' class=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.class_), input_name='class')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEntryType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('thead', node)
+ if value is not None and 'thead' not in already_processed:
+ already_processed.add('thead')
+ self.thead = value
+ self.validate_DoxBool(self.thead) # validate type DoxBool
+ value = find_attr_value_('colspan', node)
+ if value is not None and 'colspan' not in already_processed:
+ already_processed.add('colspan')
+ self.colspan = self.gds_parse_integer(value, node, 'colspan')
+ value = find_attr_value_('rowspan', node)
+ if value is not None and 'rowspan' not in already_processed:
+ already_processed.add('rowspan')
+ self.rowspan = self.gds_parse_integer(value, node, 'rowspan')
+ value = find_attr_value_('align', node)
+ if value is not None and 'align' not in already_processed:
+ already_processed.add('align')
+ self.align = value
+ self.validate_DoxAlign(self.align) # validate type DoxAlign
+ value = find_attr_value_('valign', node)
+ if value is not None and 'valign' not in already_processed:
+ already_processed.add('valign')
+ self.valign = value
+ self.validate_DoxVerticalAlign(self.valign) # validate type DoxVerticalAlign
+ value = find_attr_value_('width', node)
+ if value is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ self.width = value
+ value = find_attr_value_('class', node)
+ if value is not None and 'class' not in already_processed:
+ already_processed.add('class')
+ self.class_ = value
+ self.anyAttributes_ = {}
+ for name, value in attrs.items():
+ if name not in already_processed:
+ self.anyAttributes_[name] = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docEntryType
+
+
+class docCaptionType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docCaptionType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docCaptionType.subclass:
+ return docCaptionType.subclass(*args_, **kwargs_)
+ else:
+ return docCaptionType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCaptionType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docCaptionType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docCaptionType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docCaptionType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docCaptionType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docCaptionType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCaptionType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docCaptionType
+
+
+class docHeadingType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, level=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.level = _cast(int, level)
+ self.level_nsprefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docHeadingType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docHeadingType.subclass:
+ return docHeadingType.subclass(*args_, **kwargs_)
+ else:
+ return docHeadingType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_level(self):
+ return self.level
+ def set_level(self, level):
+ self.level = level
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHeadingType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docHeadingType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docHeadingType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docHeadingType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docHeadingType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docHeadingType'):
+ if self.level is not None and 'level' not in already_processed:
+ already_processed.add('level')
+ outfile.write(' level="%s"' % self.gds_format_integer(self.level, input_name='level'))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docHeadingType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('level', node)
+ if value is not None and 'level' not in already_processed:
+ already_processed.add('level')
+ self.level = self.gds_parse_integer(value, node, 'level')
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docHeadingType
+
+
+class docImageType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, type_=None, name=None, width=None, height=None, alt=None, inline=None, caption=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.type_ = _cast(None, type_)
+ self.type__nsprefix_ = None
+ self.name = _cast(None, name)
+ self.name_nsprefix_ = None
+ self.width = _cast(None, width)
+ self.width_nsprefix_ = None
+ self.height = _cast(None, height)
+ self.height_nsprefix_ = None
+ self.alt = _cast(None, alt)
+ self.alt_nsprefix_ = None
+ self.inline = _cast(None, inline)
+ self.inline_nsprefix_ = None
+ self.caption = _cast(None, caption)
+ self.caption_nsprefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docImageType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docImageType.subclass:
+ return docImageType.subclass(*args_, **kwargs_)
+ else:
+ return docImageType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_type(self):
+ return self.type_
+ def set_type(self, type_):
+ self.type_ = type_
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_width(self):
+ return self.width
+ def set_width(self, width):
+ self.width = width
+ def get_height(self):
+ return self.height
+ def set_height(self, height):
+ self.height = height
+ def get_alt(self):
+ return self.alt
+ def set_alt(self, alt):
+ self.alt = alt
+ def get_inline(self):
+ return self.inline
+ def set_inline(self, inline):
+ self.inline = inline
+ def get_caption(self):
+ return self.caption
+ def set_caption(self, caption):
+ self.caption = caption
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxImageKind(self, value):
+ # Validate type DoxImageKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['html', 'latex', 'docbook', 'rtf']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxImageKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def validate_DoxBool(self, value):
+ # Validate type DoxBool, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['yes', 'no']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxBool' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docImageType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docImageType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docImageType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docImageType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docImageType'):
+ if self.type_ is not None and 'type_' not in already_processed:
+ already_processed.add('type_')
+ outfile.write(' type=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.type_), input_name='type')), ))
+ if self.name is not None and 'name' not in already_processed:
+ already_processed.add('name')
+ outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), ))
+ if self.width is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ outfile.write(' width=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.width), input_name='width')), ))
+ if self.height is not None and 'height' not in already_processed:
+ already_processed.add('height')
+ outfile.write(' height=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.height), input_name='height')), ))
+ if self.alt is not None and 'alt' not in already_processed:
+ already_processed.add('alt')
+ outfile.write(' alt=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.alt), input_name='alt')), ))
+ if self.inline is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ outfile.write(' inline=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.inline), input_name='inline')), ))
+ if self.caption is not None and 'caption' not in already_processed:
+ already_processed.add('caption')
+ outfile.write(' caption=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.caption), input_name='caption')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docImageType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('type', node)
+ if value is not None and 'type' not in already_processed:
+ already_processed.add('type')
+ self.type_ = value
+ self.validate_DoxImageKind(self.type_) # validate type DoxImageKind
+ value = find_attr_value_('name', node)
+ if value is not None and 'name' not in already_processed:
+ already_processed.add('name')
+ self.name = value
+ value = find_attr_value_('width', node)
+ if value is not None and 'width' not in already_processed:
+ already_processed.add('width')
+ self.width = value
+ value = find_attr_value_('height', node)
+ if value is not None and 'height' not in already_processed:
+ already_processed.add('height')
+ self.height = value
+ value = find_attr_value_('alt', node)
+ if value is not None and 'alt' not in already_processed:
+ already_processed.add('alt')
+ self.alt = value
+ value = find_attr_value_('inline', node)
+ if value is not None and 'inline' not in already_processed:
+ already_processed.add('inline')
+ self.inline = value
+ self.validate_DoxBool(self.inline) # validate type DoxBool
+ value = find_attr_value_('caption', node)
+ if value is not None and 'caption' not in already_processed:
+ already_processed.add('caption')
+ self.caption = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docImageType
+
+
+class docTocItemType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, ulink=None, bold=None, s=None, strike=None, underline=None, emphasis=None, computeroutput=None, subscript=None, superscript=None, center=None, small=None, del_=None, ins=None, htmlonly=None, manonly=None, xmlonly=None, rtfonly=None, latexonly=None, docbookonly=None, image=None, dot=None, msc=None, plantuml=None, anchor=None, formula=None, ref=None, emoji=None, linebreak=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ if ulink is None:
+ self.ulink = []
+ else:
+ self.ulink = ulink
+ self.ulink_nsprefix_ = None
+ if bold is None:
+ self.bold = []
+ else:
+ self.bold = bold
+ self.bold_nsprefix_ = None
+ if s is None:
+ self.s = []
+ else:
+ self.s = s
+ self.s_nsprefix_ = None
+ if strike is None:
+ self.strike = []
+ else:
+ self.strike = strike
+ self.strike_nsprefix_ = None
+ if underline is None:
+ self.underline = []
+ else:
+ self.underline = underline
+ self.underline_nsprefix_ = None
+ if emphasis is None:
+ self.emphasis = []
+ else:
+ self.emphasis = emphasis
+ self.emphasis_nsprefix_ = None
+ if computeroutput is None:
+ self.computeroutput = []
+ else:
+ self.computeroutput = computeroutput
+ self.computeroutput_nsprefix_ = None
+ if subscript is None:
+ self.subscript = []
+ else:
+ self.subscript = subscript
+ self.subscript_nsprefix_ = None
+ if superscript is None:
+ self.superscript = []
+ else:
+ self.superscript = superscript
+ self.superscript_nsprefix_ = None
+ if center is None:
+ self.center = []
+ else:
+ self.center = center
+ self.center_nsprefix_ = None
+ if small is None:
+ self.small = []
+ else:
+ self.small = small
+ self.small_nsprefix_ = None
+ if del_ is None:
+ self.del_ = []
+ else:
+ self.del_ = del_
+ self.del__nsprefix_ = None
+ if ins is None:
+ self.ins = []
+ else:
+ self.ins = ins
+ self.ins_nsprefix_ = None
+ if htmlonly is None:
+ self.htmlonly = []
+ else:
+ self.htmlonly = htmlonly
+ self.htmlonly_nsprefix_ = None
+ if manonly is None:
+ self.manonly = []
+ else:
+ self.manonly = manonly
+ self.manonly_nsprefix_ = None
+ if xmlonly is None:
+ self.xmlonly = []
+ else:
+ self.xmlonly = xmlonly
+ self.xmlonly_nsprefix_ = None
+ if rtfonly is None:
+ self.rtfonly = []
+ else:
+ self.rtfonly = rtfonly
+ self.rtfonly_nsprefix_ = None
+ if latexonly is None:
+ self.latexonly = []
+ else:
+ self.latexonly = latexonly
+ self.latexonly_nsprefix_ = None
+ if docbookonly is None:
+ self.docbookonly = []
+ else:
+ self.docbookonly = docbookonly
+ self.docbookonly_nsprefix_ = None
+ if image is None:
+ self.image = []
+ else:
+ self.image = image
+ self.image_nsprefix_ = None
+ if dot is None:
+ self.dot = []
+ else:
+ self.dot = dot
+ self.dot_nsprefix_ = None
+ if msc is None:
+ self.msc = []
+ else:
+ self.msc = msc
+ self.msc_nsprefix_ = None
+ if plantuml is None:
+ self.plantuml = []
+ else:
+ self.plantuml = plantuml
+ self.plantuml_nsprefix_ = None
+ if anchor is None:
+ self.anchor = []
+ else:
+ self.anchor = anchor
+ self.anchor_nsprefix_ = None
+ if formula is None:
+ self.formula = []
+ else:
+ self.formula = formula
+ self.formula_nsprefix_ = None
+ if ref is None:
+ self.ref = []
+ else:
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ if emoji is None:
+ self.emoji = []
+ else:
+ self.emoji = emoji
+ self.emoji_nsprefix_ = None
+ if linebreak is None:
+ self.linebreak = []
+ else:
+ self.linebreak = linebreak
+ self.linebreak_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docTocItemType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docTocItemType.subclass:
+ return docTocItemType.subclass(*args_, **kwargs_)
+ else:
+ return docTocItemType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ulink(self):
+ return self.ulink
+ def set_ulink(self, ulink):
+ self.ulink = ulink
+ def add_ulink(self, value):
+ self.ulink.append(value)
+ def insert_ulink_at(self, index, value):
+ self.ulink.insert(index, value)
+ def replace_ulink_at(self, index, value):
+ self.ulink[index] = value
+ def get_bold(self):
+ return self.bold
+ def set_bold(self, bold):
+ self.bold = bold
+ def add_bold(self, value):
+ self.bold.append(value)
+ def insert_bold_at(self, index, value):
+ self.bold.insert(index, value)
+ def replace_bold_at(self, index, value):
+ self.bold[index] = value
+ def get_s(self):
+ return self.s
+ def set_s(self, s):
+ self.s = s
+ def add_s(self, value):
+ self.s.append(value)
+ def insert_s_at(self, index, value):
+ self.s.insert(index, value)
+ def replace_s_at(self, index, value):
+ self.s[index] = value
+ def get_strike(self):
+ return self.strike
+ def set_strike(self, strike):
+ self.strike = strike
+ def add_strike(self, value):
+ self.strike.append(value)
+ def insert_strike_at(self, index, value):
+ self.strike.insert(index, value)
+ def replace_strike_at(self, index, value):
+ self.strike[index] = value
+ def get_underline(self):
+ return self.underline
+ def set_underline(self, underline):
+ self.underline = underline
+ def add_underline(self, value):
+ self.underline.append(value)
+ def insert_underline_at(self, index, value):
+ self.underline.insert(index, value)
+ def replace_underline_at(self, index, value):
+ self.underline[index] = value
+ def get_emphasis(self):
+ return self.emphasis
+ def set_emphasis(self, emphasis):
+ self.emphasis = emphasis
+ def add_emphasis(self, value):
+ self.emphasis.append(value)
+ def insert_emphasis_at(self, index, value):
+ self.emphasis.insert(index, value)
+ def replace_emphasis_at(self, index, value):
+ self.emphasis[index] = value
+ def get_computeroutput(self):
+ return self.computeroutput
+ def set_computeroutput(self, computeroutput):
+ self.computeroutput = computeroutput
+ def add_computeroutput(self, value):
+ self.computeroutput.append(value)
+ def insert_computeroutput_at(self, index, value):
+ self.computeroutput.insert(index, value)
+ def replace_computeroutput_at(self, index, value):
+ self.computeroutput[index] = value
+ def get_subscript(self):
+ return self.subscript
+ def set_subscript(self, subscript):
+ self.subscript = subscript
+ def add_subscript(self, value):
+ self.subscript.append(value)
+ def insert_subscript_at(self, index, value):
+ self.subscript.insert(index, value)
+ def replace_subscript_at(self, index, value):
+ self.subscript[index] = value
+ def get_superscript(self):
+ return self.superscript
+ def set_superscript(self, superscript):
+ self.superscript = superscript
+ def add_superscript(self, value):
+ self.superscript.append(value)
+ def insert_superscript_at(self, index, value):
+ self.superscript.insert(index, value)
+ def replace_superscript_at(self, index, value):
+ self.superscript[index] = value
+ def get_center(self):
+ return self.center
+ def set_center(self, center):
+ self.center = center
+ def add_center(self, value):
+ self.center.append(value)
+ def insert_center_at(self, index, value):
+ self.center.insert(index, value)
+ def replace_center_at(self, index, value):
+ self.center[index] = value
+ def get_small(self):
+ return self.small
+ def set_small(self, small):
+ self.small = small
+ def add_small(self, value):
+ self.small.append(value)
+ def insert_small_at(self, index, value):
+ self.small.insert(index, value)
+ def replace_small_at(self, index, value):
+ self.small[index] = value
+ def get_del(self):
+ return self.del_
+ def set_del(self, del_):
+ self.del_ = del_
+ def add_del(self, value):
+ self.del_.append(value)
+ def insert_del_at(self, index, value):
+ self.del_.insert(index, value)
+ def replace_del_at(self, index, value):
+ self.del_[index] = value
+ def get_ins(self):
+ return self.ins
+ def set_ins(self, ins):
+ self.ins = ins
+ def add_ins(self, value):
+ self.ins.append(value)
+ def insert_ins_at(self, index, value):
+ self.ins.insert(index, value)
+ def replace_ins_at(self, index, value):
+ self.ins[index] = value
+ def get_htmlonly(self):
+ return self.htmlonly
+ def set_htmlonly(self, htmlonly):
+ self.htmlonly = htmlonly
+ def add_htmlonly(self, value):
+ self.htmlonly.append(value)
+ def insert_htmlonly_at(self, index, value):
+ self.htmlonly.insert(index, value)
+ def replace_htmlonly_at(self, index, value):
+ self.htmlonly[index] = value
+ def get_manonly(self):
+ return self.manonly
+ def set_manonly(self, manonly):
+ self.manonly = manonly
+ def add_manonly(self, value):
+ self.manonly.append(value)
+ def insert_manonly_at(self, index, value):
+ self.manonly.insert(index, value)
+ def replace_manonly_at(self, index, value):
+ self.manonly[index] = value
+ def get_xmlonly(self):
+ return self.xmlonly
+ def set_xmlonly(self, xmlonly):
+ self.xmlonly = xmlonly
+ def add_xmlonly(self, value):
+ self.xmlonly.append(value)
+ def insert_xmlonly_at(self, index, value):
+ self.xmlonly.insert(index, value)
+ def replace_xmlonly_at(self, index, value):
+ self.xmlonly[index] = value
+ def get_rtfonly(self):
+ return self.rtfonly
+ def set_rtfonly(self, rtfonly):
+ self.rtfonly = rtfonly
+ def add_rtfonly(self, value):
+ self.rtfonly.append(value)
+ def insert_rtfonly_at(self, index, value):
+ self.rtfonly.insert(index, value)
+ def replace_rtfonly_at(self, index, value):
+ self.rtfonly[index] = value
+ def get_latexonly(self):
+ return self.latexonly
+ def set_latexonly(self, latexonly):
+ self.latexonly = latexonly
+ def add_latexonly(self, value):
+ self.latexonly.append(value)
+ def insert_latexonly_at(self, index, value):
+ self.latexonly.insert(index, value)
+ def replace_latexonly_at(self, index, value):
+ self.latexonly[index] = value
+ def get_docbookonly(self):
+ return self.docbookonly
+ def set_docbookonly(self, docbookonly):
+ self.docbookonly = docbookonly
+ def add_docbookonly(self, value):
+ self.docbookonly.append(value)
+ def insert_docbookonly_at(self, index, value):
+ self.docbookonly.insert(index, value)
+ def replace_docbookonly_at(self, index, value):
+ self.docbookonly[index] = value
+ def get_image(self):
+ return self.image
+ def set_image(self, image):
+ self.image = image
+ def add_image(self, value):
+ self.image.append(value)
+ def insert_image_at(self, index, value):
+ self.image.insert(index, value)
+ def replace_image_at(self, index, value):
+ self.image[index] = value
+ def get_dot(self):
+ return self.dot
+ def set_dot(self, dot):
+ self.dot = dot
+ def add_dot(self, value):
+ self.dot.append(value)
+ def insert_dot_at(self, index, value):
+ self.dot.insert(index, value)
+ def replace_dot_at(self, index, value):
+ self.dot[index] = value
+ def get_msc(self):
+ return self.msc
+ def set_msc(self, msc):
+ self.msc = msc
+ def add_msc(self, value):
+ self.msc.append(value)
+ def insert_msc_at(self, index, value):
+ self.msc.insert(index, value)
+ def replace_msc_at(self, index, value):
+ self.msc[index] = value
+ def get_plantuml(self):
+ return self.plantuml
+ def set_plantuml(self, plantuml):
+ self.plantuml = plantuml
+ def add_plantuml(self, value):
+ self.plantuml.append(value)
+ def insert_plantuml_at(self, index, value):
+ self.plantuml.insert(index, value)
+ def replace_plantuml_at(self, index, value):
+ self.plantuml[index] = value
+ def get_anchor(self):
+ return self.anchor
+ def set_anchor(self, anchor):
+ self.anchor = anchor
+ def add_anchor(self, value):
+ self.anchor.append(value)
+ def insert_anchor_at(self, index, value):
+ self.anchor.insert(index, value)
+ def replace_anchor_at(self, index, value):
+ self.anchor[index] = value
+ def get_formula(self):
+ return self.formula
+ def set_formula(self, formula):
+ self.formula = formula
+ def add_formula(self, value):
+ self.formula.append(value)
+ def insert_formula_at(self, index, value):
+ self.formula.insert(index, value)
+ def replace_formula_at(self, index, value):
+ self.formula[index] = value
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def add_ref(self, value):
+ self.ref.append(value)
+ def insert_ref_at(self, index, value):
+ self.ref.insert(index, value)
+ def replace_ref_at(self, index, value):
+ self.ref[index] = value
+ def get_emoji(self):
+ return self.emoji
+ def set_emoji(self, emoji):
+ self.emoji = emoji
+ def add_emoji(self, value):
+ self.emoji.append(value)
+ def insert_emoji_at(self, index, value):
+ self.emoji.insert(index, value)
+ def replace_emoji_at(self, index, value):
+ self.emoji[index] = value
+ def get_linebreak(self):
+ return self.linebreak
+ def set_linebreak(self, linebreak):
+ self.linebreak = linebreak
+ def add_linebreak(self, value):
+ self.linebreak.append(value)
+ def insert_linebreak_at(self, index, value):
+ self.linebreak.insert(index, value)
+ def replace_linebreak_at(self, index, value):
+ self.linebreak[index] = value
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ulink or
+ self.bold or
+ self.s or
+ self.strike or
+ self.underline or
+ self.emphasis or
+ self.computeroutput or
+ self.subscript or
+ self.superscript or
+ self.center or
+ self.small or
+ self.del_ or
+ self.ins or
+ self.htmlonly or
+ self.manonly or
+ self.xmlonly or
+ self.rtfonly or
+ self.latexonly or
+ self.docbookonly or
+ self.image or
+ self.dot or
+ self.msc or
+ self.plantuml or
+ self.anchor or
+ self.formula or
+ self.ref or
+ self.emoji or
+ self.linebreak or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocItemType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTocItemType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docTocItemType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTocItemType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTocItemType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTocItemType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocItemType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for ulink_ in self.ulink:
+ namespaceprefix_ = self.ulink_nsprefix_ + ':' if (UseCapturedNS_ and self.ulink_nsprefix_) else ''
+ ulink_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ulink', pretty_print=pretty_print)
+ for bold_ in self.bold:
+ namespaceprefix_ = self.bold_nsprefix_ + ':' if (UseCapturedNS_ and self.bold_nsprefix_) else ''
+ bold_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='bold', pretty_print=pretty_print)
+ for s_ in self.s:
+ namespaceprefix_ = self.s_nsprefix_ + ':' if (UseCapturedNS_ and self.s_nsprefix_) else ''
+ s_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='s', pretty_print=pretty_print)
+ for strike_ in self.strike:
+ namespaceprefix_ = self.strike_nsprefix_ + ':' if (UseCapturedNS_ and self.strike_nsprefix_) else ''
+ strike_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='strike', pretty_print=pretty_print)
+ for underline_ in self.underline:
+ namespaceprefix_ = self.underline_nsprefix_ + ':' if (UseCapturedNS_ and self.underline_nsprefix_) else ''
+ underline_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='underline', pretty_print=pretty_print)
+ for emphasis_ in self.emphasis:
+ namespaceprefix_ = self.emphasis_nsprefix_ + ':' if (UseCapturedNS_ and self.emphasis_nsprefix_) else ''
+ emphasis_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emphasis', pretty_print=pretty_print)
+ for computeroutput_ in self.computeroutput:
+ namespaceprefix_ = self.computeroutput_nsprefix_ + ':' if (UseCapturedNS_ and self.computeroutput_nsprefix_) else ''
+ computeroutput_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='computeroutput', pretty_print=pretty_print)
+ for subscript_ in self.subscript:
+ namespaceprefix_ = self.subscript_nsprefix_ + ':' if (UseCapturedNS_ and self.subscript_nsprefix_) else ''
+ subscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='subscript', pretty_print=pretty_print)
+ for superscript_ in self.superscript:
+ namespaceprefix_ = self.superscript_nsprefix_ + ':' if (UseCapturedNS_ and self.superscript_nsprefix_) else ''
+ superscript_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='superscript', pretty_print=pretty_print)
+ for center_ in self.center:
+ namespaceprefix_ = self.center_nsprefix_ + ':' if (UseCapturedNS_ and self.center_nsprefix_) else ''
+ center_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='center', pretty_print=pretty_print)
+ for small_ in self.small:
+ namespaceprefix_ = self.small_nsprefix_ + ':' if (UseCapturedNS_ and self.small_nsprefix_) else ''
+ small_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='small', pretty_print=pretty_print)
+ for del_ in self.del_:
+ namespaceprefix_ = self.del__nsprefix_ + ':' if (UseCapturedNS_ and self.del__nsprefix_) else ''
+ del_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='del', pretty_print=pretty_print)
+ for ins_ in self.ins:
+ namespaceprefix_ = self.ins_nsprefix_ + ':' if (UseCapturedNS_ and self.ins_nsprefix_) else ''
+ ins_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ins', pretty_print=pretty_print)
+ for htmlonly_ in self.htmlonly:
+ namespaceprefix_ = self.htmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.htmlonly_nsprefix_) else ''
+ htmlonly_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='htmlonly', pretty_print=pretty_print)
+ for manonly_ in self.manonly:
+ namespaceprefix_ = self.manonly_nsprefix_ + ':' if (UseCapturedNS_ and self.manonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%smanonly>%s</%smanonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(manonly_), input_name='manonly')), namespaceprefix_ , eol_))
+ for xmlonly_ in self.xmlonly:
+ namespaceprefix_ = self.xmlonly_nsprefix_ + ':' if (UseCapturedNS_ and self.xmlonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxmlonly>%s</%sxmlonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xmlonly_), input_name='xmlonly')), namespaceprefix_ , eol_))
+ for rtfonly_ in self.rtfonly:
+ namespaceprefix_ = self.rtfonly_nsprefix_ + ':' if (UseCapturedNS_ and self.rtfonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%srtfonly>%s</%srtfonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(rtfonly_), input_name='rtfonly')), namespaceprefix_ , eol_))
+ for latexonly_ in self.latexonly:
+ namespaceprefix_ = self.latexonly_nsprefix_ + ':' if (UseCapturedNS_ and self.latexonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%slatexonly>%s</%slatexonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(latexonly_), input_name='latexonly')), namespaceprefix_ , eol_))
+ for docbookonly_ in self.docbookonly:
+ namespaceprefix_ = self.docbookonly_nsprefix_ + ':' if (UseCapturedNS_ and self.docbookonly_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sdocbookonly>%s</%sdocbookonly>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(docbookonly_), input_name='docbookonly')), namespaceprefix_ , eol_))
+ for image_ in self.image:
+ namespaceprefix_ = self.image_nsprefix_ + ':' if (UseCapturedNS_ and self.image_nsprefix_) else ''
+ image_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='image', pretty_print=pretty_print)
+ for dot_ in self.dot:
+ namespaceprefix_ = self.dot_nsprefix_ + ':' if (UseCapturedNS_ and self.dot_nsprefix_) else ''
+ dot_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dot', pretty_print=pretty_print)
+ for msc_ in self.msc:
+ namespaceprefix_ = self.msc_nsprefix_ + ':' if (UseCapturedNS_ and self.msc_nsprefix_) else ''
+ msc_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='msc', pretty_print=pretty_print)
+ for plantuml_ in self.plantuml:
+ namespaceprefix_ = self.plantuml_nsprefix_ + ':' if (UseCapturedNS_ and self.plantuml_nsprefix_) else ''
+ plantuml_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='plantuml', pretty_print=pretty_print)
+ for anchor_ in self.anchor:
+ namespaceprefix_ = self.anchor_nsprefix_ + ':' if (UseCapturedNS_ and self.anchor_nsprefix_) else ''
+ anchor_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='anchor', pretty_print=pretty_print)
+ for formula_ in self.formula:
+ namespaceprefix_ = self.formula_nsprefix_ + ':' if (UseCapturedNS_ and self.formula_nsprefix_) else ''
+ formula_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='formula', pretty_print=pretty_print)
+ for ref_ in self.ref:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ ref_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ for emoji_ in self.emoji:
+ namespaceprefix_ = self.emoji_nsprefix_ + ':' if (UseCapturedNS_ and self.emoji_nsprefix_) else ''
+ emoji_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='emoji', pretty_print=pretty_print)
+ for linebreak_ in self.linebreak:
+ namespaceprefix_ = self.linebreak_nsprefix_ + ':' if (UseCapturedNS_ and self.linebreak_nsprefix_) else ''
+ linebreak_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='linebreak', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ulink':
+ obj_ = docURLLink.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ulink', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ulink'):
+ self.add_ulink(obj_.value)
+ elif hasattr(self, 'set_ulink'):
+ self.set_ulink(obj_.value)
+ elif nodeName_ == 'bold':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'bold', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_bold'):
+ self.add_bold(obj_.value)
+ elif hasattr(self, 'set_bold'):
+ self.set_bold(obj_.value)
+ elif nodeName_ == 's':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 's', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_s'):
+ self.add_s(obj_.value)
+ elif hasattr(self, 'set_s'):
+ self.set_s(obj_.value)
+ elif nodeName_ == 'strike':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'strike', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_strike'):
+ self.add_strike(obj_.value)
+ elif hasattr(self, 'set_strike'):
+ self.set_strike(obj_.value)
+ elif nodeName_ == 'underline':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'underline', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_underline'):
+ self.add_underline(obj_.value)
+ elif hasattr(self, 'set_underline'):
+ self.set_underline(obj_.value)
+ elif nodeName_ == 'emphasis':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emphasis', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emphasis'):
+ self.add_emphasis(obj_.value)
+ elif hasattr(self, 'set_emphasis'):
+ self.set_emphasis(obj_.value)
+ elif nodeName_ == 'computeroutput':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'computeroutput', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_computeroutput'):
+ self.add_computeroutput(obj_.value)
+ elif hasattr(self, 'set_computeroutput'):
+ self.set_computeroutput(obj_.value)
+ elif nodeName_ == 'subscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'subscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_subscript'):
+ self.add_subscript(obj_.value)
+ elif hasattr(self, 'set_subscript'):
+ self.set_subscript(obj_.value)
+ elif nodeName_ == 'superscript':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'superscript', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_superscript'):
+ self.add_superscript(obj_.value)
+ elif hasattr(self, 'set_superscript'):
+ self.set_superscript(obj_.value)
+ elif nodeName_ == 'center':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'center', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_center'):
+ self.add_center(obj_.value)
+ elif hasattr(self, 'set_center'):
+ self.set_center(obj_.value)
+ elif nodeName_ == 'small':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'small', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_small'):
+ self.add_small(obj_.value)
+ elif hasattr(self, 'set_small'):
+ self.set_small(obj_.value)
+ elif nodeName_ == 'del':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'del', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_del'):
+ self.add_del(obj_.value)
+ elif hasattr(self, 'set_del'):
+ self.set_del(obj_.value)
+ elif nodeName_ == 'ins':
+ obj_ = docMarkupType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ins', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ins'):
+ self.add_ins(obj_.value)
+ elif hasattr(self, 'set_ins'):
+ self.set_ins(obj_.value)
+ elif nodeName_ == 'htmlonly':
+ obj_ = docHtmlOnlyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'htmlonly', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_htmlonly'):
+ self.add_htmlonly(obj_.value)
+ elif hasattr(self, 'set_htmlonly'):
+ self.set_htmlonly(obj_.value)
+ elif nodeName_ == 'manonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'manonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'manonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'manonly', valuestr_)
+ self.content_.append(obj_)
+ self.manonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xmlonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'xmlonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'xmlonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'xmlonly', valuestr_)
+ self.content_.append(obj_)
+ self.xmlonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'rtfonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'rtfonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'rtfonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'rtfonly', valuestr_)
+ self.content_.append(obj_)
+ self.rtfonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'latexonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'latexonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'latexonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'latexonly', valuestr_)
+ self.content_.append(obj_)
+ self.latexonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'docbookonly' and child_.text is not None:
+ valuestr_ = child_.text
+ valuestr_ = self.gds_parse_string(valuestr_, node, 'docbookonly')
+ valuestr_ = self.gds_validate_string(valuestr_, node, 'docbookonly')
+ obj_ = self.mixedclass_(MixedContainer.CategorySimple,
+ MixedContainer.TypeString, 'docbookonly', valuestr_)
+ self.content_.append(obj_)
+ self.docbookonly_nsprefix_ = child_.prefix
+ elif nodeName_ == 'image':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'image', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_image'):
+ self.add_image(obj_.value)
+ elif hasattr(self, 'set_image'):
+ self.set_image(obj_.value)
+ elif nodeName_ == 'dot':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'dot', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_dot'):
+ self.add_dot(obj_.value)
+ elif hasattr(self, 'set_dot'):
+ self.set_dot(obj_.value)
+ elif nodeName_ == 'msc':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'msc', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_msc'):
+ self.add_msc(obj_.value)
+ elif hasattr(self, 'set_msc'):
+ self.set_msc(obj_.value)
+ elif nodeName_ == 'plantuml':
+ obj_ = docImageType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'plantuml', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_plantuml'):
+ self.add_plantuml(obj_.value)
+ elif hasattr(self, 'set_plantuml'):
+ self.set_plantuml(obj_.value)
+ elif nodeName_ == 'anchor':
+ obj_ = docAnchorType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'anchor', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_anchor'):
+ self.add_anchor(obj_.value)
+ elif hasattr(self, 'set_anchor'):
+ self.set_anchor(obj_.value)
+ elif nodeName_ == 'formula':
+ obj_ = docFormulaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'formula', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_formula'):
+ self.add_formula(obj_.value)
+ elif hasattr(self, 'set_formula'):
+ self.set_formula(obj_.value)
+ elif nodeName_ == 'ref':
+ obj_ = docRefTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ elif nodeName_ == 'emoji':
+ obj_ = docEmojiType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'emoji', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_emoji'):
+ self.add_emoji(obj_.value)
+ elif hasattr(self, 'set_emoji'):
+ self.set_emoji(obj_.value)
+ elif nodeName_ == 'linebreak':
+ obj_ = docEmptyType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'linebreak', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_linebreak'):
+ self.add_linebreak(obj_.value)
+ elif hasattr(self, 'set_linebreak'):
+ self.set_linebreak(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docTocItemType
+
+
+class docTocListType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, tocitem=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if tocitem is None:
+ self.tocitem = []
+ else:
+ self.tocitem = tocitem
+ self.tocitem_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docTocListType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docTocListType.subclass:
+ return docTocListType.subclass(*args_, **kwargs_)
+ else:
+ return docTocListType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_tocitem(self):
+ return self.tocitem
+ def set_tocitem(self, tocitem):
+ self.tocitem = tocitem
+ def add_tocitem(self, value):
+ self.tocitem.append(value)
+ def insert_tocitem_at(self, index, value):
+ self.tocitem.insert(index, value)
+ def replace_tocitem_at(self, index, value):
+ self.tocitem[index] = value
+ def hasContent_(self):
+ if (
+ self.tocitem
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocListType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docTocListType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docTocListType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docTocListType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docTocListType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docTocListType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docTocListType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for tocitem_ in self.tocitem:
+ namespaceprefix_ = self.tocitem_nsprefix_ + ':' if (UseCapturedNS_ and self.tocitem_nsprefix_) else ''
+ tocitem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tocitem', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'tocitem':
+ obj_ = docTocItemType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.tocitem.append(obj_)
+ obj_.original_tagname_ = 'tocitem'
+# end class docTocListType
+
+
+class docLanguageType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, langid=None, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.langid = _cast(None, langid)
+ self.langid_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docLanguageType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docLanguageType.subclass:
+ return docLanguageType.subclass(*args_, **kwargs_)
+ else:
+ return docLanguageType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_langid(self):
+ return self.langid
+ def set_langid(self, langid):
+ self.langid = langid
+ def hasContent_(self):
+ if (
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docLanguageType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docLanguageType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docLanguageType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docLanguageType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docLanguageType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docLanguageType'):
+ if self.langid is not None and 'langid' not in already_processed:
+ already_processed.add('langid')
+ outfile.write(' langid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.langid), input_name='langid')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docLanguageType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('langid', node)
+ if value is not None and 'langid' not in already_processed:
+ already_processed.add('langid')
+ self.langid = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docLanguageType
+
+
+class docParamListType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, kind=None, parameteritem=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ if parameteritem is None:
+ self.parameteritem = []
+ else:
+ self.parameteritem = parameteritem
+ self.parameteritem_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParamListType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParamListType.subclass:
+ return docParamListType.subclass(*args_, **kwargs_)
+ else:
+ return docParamListType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_parameteritem(self):
+ return self.parameteritem
+ def set_parameteritem(self, parameteritem):
+ self.parameteritem = parameteritem
+ def add_parameteritem(self, value):
+ self.parameteritem.append(value)
+ def insert_parameteritem_at(self, index, value):
+ self.parameteritem.insert(index, value)
+ def replace_parameteritem_at(self, index, value):
+ self.parameteritem[index] = value
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def validate_DoxParamListKind(self, value):
+ # Validate type DoxParamListKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['param', 'retval', 'exception', 'templateparam']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxParamListKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.parameteritem
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamListType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParamListType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamListType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamListType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamListType'):
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for parameteritem_ in self.parameteritem:
+ namespaceprefix_ = self.parameteritem_nsprefix_ + ':' if (UseCapturedNS_ and self.parameteritem_nsprefix_) else ''
+ parameteritem_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameteritem', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_DoxParamListKind(self.kind) # validate type DoxParamListKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'parameteritem':
+ obj_ = docParamListItem.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.parameteritem.append(obj_)
+ obj_.original_tagname_ = 'parameteritem'
+# end class docParamListType
+
+
+class docParamListItem(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, parameternamelist=None, parameterdescription=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if parameternamelist is None:
+ self.parameternamelist = []
+ else:
+ self.parameternamelist = parameternamelist
+ self.parameternamelist_nsprefix_ = None
+ self.parameterdescription = parameterdescription
+ self.parameterdescription_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParamListItem)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParamListItem.subclass:
+ return docParamListItem.subclass(*args_, **kwargs_)
+ else:
+ return docParamListItem(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_parameternamelist(self):
+ return self.parameternamelist
+ def set_parameternamelist(self, parameternamelist):
+ self.parameternamelist = parameternamelist
+ def add_parameternamelist(self, value):
+ self.parameternamelist.append(value)
+ def insert_parameternamelist_at(self, index, value):
+ self.parameternamelist.insert(index, value)
+ def replace_parameternamelist_at(self, index, value):
+ self.parameternamelist[index] = value
+ def get_parameterdescription(self):
+ return self.parameterdescription
+ def set_parameterdescription(self, parameterdescription):
+ self.parameterdescription = parameterdescription
+ def hasContent_(self):
+ if (
+ self.parameternamelist or
+ self.parameterdescription is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListItem', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamListItem')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParamListItem':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamListItem')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamListItem', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamListItem'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamListItem', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for parameternamelist_ in self.parameternamelist:
+ namespaceprefix_ = self.parameternamelist_nsprefix_ + ':' if (UseCapturedNS_ and self.parameternamelist_nsprefix_) else ''
+ parameternamelist_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameternamelist', pretty_print=pretty_print)
+ if self.parameterdescription is not None:
+ namespaceprefix_ = self.parameterdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.parameterdescription_nsprefix_) else ''
+ self.parameterdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parameterdescription', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'parameternamelist':
+ obj_ = docParamNameList.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.parameternamelist.append(obj_)
+ obj_.original_tagname_ = 'parameternamelist'
+ elif nodeName_ == 'parameterdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.parameterdescription = obj_
+ obj_.original_tagname_ = 'parameterdescription'
+# end class docParamListItem
+
+
+class docParamNameList(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, parametertype=None, parametername=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if parametertype is None:
+ self.parametertype = []
+ else:
+ self.parametertype = parametertype
+ self.parametertype_nsprefix_ = None
+ if parametername is None:
+ self.parametername = []
+ else:
+ self.parametername = parametername
+ self.parametername_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParamNameList)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParamNameList.subclass:
+ return docParamNameList.subclass(*args_, **kwargs_)
+ else:
+ return docParamNameList(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_parametertype(self):
+ return self.parametertype
+ def set_parametertype(self, parametertype):
+ self.parametertype = parametertype
+ def add_parametertype(self, value):
+ self.parametertype.append(value)
+ def insert_parametertype_at(self, index, value):
+ self.parametertype.insert(index, value)
+ def replace_parametertype_at(self, index, value):
+ self.parametertype[index] = value
+ def get_parametername(self):
+ return self.parametername
+ def set_parametername(self, parametername):
+ self.parametername = parametername
+ def add_parametername(self, value):
+ self.parametername.append(value)
+ def insert_parametername_at(self, index, value):
+ self.parametername.insert(index, value)
+ def replace_parametername_at(self, index, value):
+ self.parametername[index] = value
+ def hasContent_(self):
+ if (
+ self.parametertype or
+ self.parametername
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamNameList', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamNameList')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParamNameList':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamNameList')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamNameList', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamNameList'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamNameList', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for parametertype_ in self.parametertype:
+ namespaceprefix_ = self.parametertype_nsprefix_ + ':' if (UseCapturedNS_ and self.parametertype_nsprefix_) else ''
+ parametertype_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parametertype', pretty_print=pretty_print)
+ for parametername_ in self.parametername:
+ namespaceprefix_ = self.parametername_nsprefix_ + ':' if (UseCapturedNS_ and self.parametername_nsprefix_) else ''
+ parametername_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='parametername', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'parametertype':
+ obj_ = docParamType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.parametertype.append(obj_)
+ obj_.original_tagname_ = 'parametertype'
+ elif nodeName_ == 'parametername':
+ obj_ = docParamName.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.parametername.append(obj_)
+ obj_.original_tagname_ = 'parametername'
+# end class docParamNameList
+
+
+class docParamType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParamType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParamType.subclass:
+ return docParamType.subclass(*args_, **kwargs_)
+ else:
+ return docParamType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def hasContent_(self):
+ if (
+ self.ref is not None or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParamType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamType', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.ref is not None:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ self.ref.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ref':
+ obj_ = refTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docParamType
+
+
+class docParamName(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, direction=None, ref=None, valueOf_=None, mixedclass_=None, content_=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.direction = _cast(None, direction)
+ self.direction_nsprefix_ = None
+ self.ref = ref
+ self.ref_nsprefix_ = None
+ self.valueOf_ = valueOf_
+ if mixedclass_ is None:
+ self.mixedclass_ = MixedContainer
+ else:
+ self.mixedclass_ = mixedclass_
+ if content_ is None:
+ self.content_ = []
+ else:
+ self.content_ = content_
+ self.valueOf_ = valueOf_
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParamName)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParamName.subclass:
+ return docParamName.subclass(*args_, **kwargs_)
+ else:
+ return docParamName(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_ref(self):
+ return self.ref
+ def set_ref(self, ref):
+ self.ref = ref
+ def get_direction(self):
+ return self.direction
+ def set_direction(self, direction):
+ self.direction = direction
+ def get_valueOf_(self): return self.valueOf_
+ def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
+ def validate_DoxParamDir(self, value):
+ # Validate type DoxParamDir, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['in', 'out', 'inout']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on DoxParamDir' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.ref is not None or
+ (1 if type(self.valueOf_) in [int,float] else self.valueOf_) or
+ self.content_
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamName', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParamName')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParamName':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParamName')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParamName', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParamName'):
+ if self.direction is not None and 'direction' not in already_processed:
+ already_processed.add('direction')
+ outfile.write(' direction=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.direction), input_name='direction')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParamName', fromsubclass_=False, pretty_print=True):
+ if not fromsubclass_:
+ for item_ in self.content_:
+ item_.export(outfile, level, item_.name, namespaceprefix_, pretty_print=pretty_print)
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.ref is not None:
+ namespaceprefix_ = self.ref_nsprefix_ + ':' if (UseCapturedNS_ and self.ref_nsprefix_) else ''
+ self.ref.export(outfile, level, namespaceprefix_, namespacedef_='', name_='ref', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ self.valueOf_ = get_all_text_(node)
+ if node.text is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', node.text)
+ self.content_.append(obj_)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('direction', node)
+ if value is not None and 'direction' not in already_processed:
+ already_processed.add('direction')
+ self.direction = value
+ self.validate_DoxParamDir(self.direction) # validate type DoxParamDir
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'ref':
+ obj_ = refTextType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ obj_ = self.mixedclass_(MixedContainer.CategoryComplex,
+ MixedContainer.TypeNone, 'ref', obj_)
+ self.content_.append(obj_)
+ if hasattr(self, 'add_ref'):
+ self.add_ref(obj_.value)
+ elif hasattr(self, 'set_ref'):
+ self.set_ref(obj_.value)
+ if not fromsubclass_ and child_.tail is not None:
+ obj_ = self.mixedclass_(MixedContainer.CategoryText,
+ MixedContainer.TypeNone, '', child_.tail)
+ self.content_.append(obj_)
+# end class docParamName
+
+
+class docXRefSectType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, id=None, xreftitle=None, xrefdescription=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.id = _cast(None, id)
+ self.id_nsprefix_ = None
+ if xreftitle is None:
+ self.xreftitle = []
+ else:
+ self.xreftitle = xreftitle
+ self.xreftitle_nsprefix_ = None
+ self.xrefdescription = xrefdescription
+ self.xrefdescription_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docXRefSectType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docXRefSectType.subclass:
+ return docXRefSectType.subclass(*args_, **kwargs_)
+ else:
+ return docXRefSectType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_xreftitle(self):
+ return self.xreftitle
+ def set_xreftitle(self, xreftitle):
+ self.xreftitle = xreftitle
+ def add_xreftitle(self, value):
+ self.xreftitle.append(value)
+ def insert_xreftitle_at(self, index, value):
+ self.xreftitle.insert(index, value)
+ def replace_xreftitle_at(self, index, value):
+ self.xreftitle[index] = value
+ def get_xrefdescription(self):
+ return self.xrefdescription
+ def set_xrefdescription(self, xrefdescription):
+ self.xrefdescription = xrefdescription
+ def get_id(self):
+ return self.id
+ def set_id(self, id):
+ self.id = id
+ def hasContent_(self):
+ if (
+ self.xreftitle or
+ self.xrefdescription is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docXRefSectType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docXRefSectType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docXRefSectType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docXRefSectType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docXRefSectType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docXRefSectType'):
+ if self.id is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ outfile.write(' id=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.id), input_name='id')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docXRefSectType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for xreftitle_ in self.xreftitle:
+ namespaceprefix_ = self.xreftitle_nsprefix_ + ':' if (UseCapturedNS_ and self.xreftitle_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sxreftitle>%s</%sxreftitle>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(xreftitle_), input_name='xreftitle')), namespaceprefix_ , eol_))
+ if self.xrefdescription is not None:
+ namespaceprefix_ = self.xrefdescription_nsprefix_ + ':' if (UseCapturedNS_ and self.xrefdescription_nsprefix_) else ''
+ self.xrefdescription.export(outfile, level, namespaceprefix_, namespacedef_='', name_='xrefdescription', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('id', node)
+ if value is not None and 'id' not in already_processed:
+ already_processed.add('id')
+ self.id = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'xreftitle':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'xreftitle')
+ value_ = self.gds_validate_string(value_, node, 'xreftitle')
+ self.xreftitle.append(value_)
+ self.xreftitle_nsprefix_ = child_.prefix
+ elif nodeName_ == 'xrefdescription':
+ obj_ = descriptionType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.xrefdescription = obj_
+ obj_.original_tagname_ = 'xrefdescription'
+# end class docXRefSectType
+
+
+class docCopyType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, link=None, para=None, sect1=None, internal=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.link = _cast(None, link)
+ self.link_nsprefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ if sect1 is None:
+ self.sect1 = []
+ else:
+ self.sect1 = sect1
+ self.sect1_nsprefix_ = None
+ self.internal = internal
+ self.internal_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docCopyType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docCopyType.subclass:
+ return docCopyType.subclass(*args_, **kwargs_)
+ else:
+ return docCopyType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def get_sect1(self):
+ return self.sect1
+ def set_sect1(self, sect1):
+ self.sect1 = sect1
+ def add_sect1(self, value):
+ self.sect1.append(value)
+ def insert_sect1_at(self, index, value):
+ self.sect1.insert(index, value)
+ def replace_sect1_at(self, index, value):
+ self.sect1[index] = value
+ def get_internal(self):
+ return self.internal
+ def set_internal(self, internal):
+ self.internal = internal
+ def get_link(self):
+ return self.link
+ def set_link(self, link):
+ self.link = link
+ def hasContent_(self):
+ if (
+ self.para or
+ self.sect1 or
+ self.internal is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCopyType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docCopyType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docCopyType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docCopyType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docCopyType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docCopyType'):
+ if self.link is not None and 'link' not in already_processed:
+ already_processed.add('link')
+ outfile.write(' link=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.link), input_name='link')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docCopyType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ for sect1_ in self.sect1:
+ namespaceprefix_ = self.sect1_nsprefix_ + ':' if (UseCapturedNS_ and self.sect1_nsprefix_) else ''
+ sect1_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sect1', pretty_print=pretty_print)
+ if self.internal is not None:
+ namespaceprefix_ = self.internal_nsprefix_ + ':' if (UseCapturedNS_ and self.internal_nsprefix_) else ''
+ self.internal.export(outfile, level, namespaceprefix_, namespacedef_='', name_='internal', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('link', node)
+ if value is not None and 'link' not in already_processed:
+ already_processed.add('link')
+ self.link = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+ elif nodeName_ == 'sect1':
+ obj_ = docSect1Type.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.sect1.append(obj_)
+ obj_.original_tagname_ = 'sect1'
+ elif nodeName_ == 'internal':
+ obj_ = docInternalType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.internal = obj_
+ obj_.original_tagname_ = 'internal'
+# end class docCopyType
+
+
+class docBlockQuoteType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docBlockQuoteType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docBlockQuoteType.subclass:
+ return docBlockQuoteType.subclass(*args_, **kwargs_)
+ else:
+ return docBlockQuoteType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def hasContent_(self):
+ if (
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docBlockQuoteType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docBlockQuoteType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docBlockQuoteType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docBlockQuoteType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docBlockQuoteType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docBlockQuoteType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docBlockQuoteType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docBlockQuoteType
+
+
+class docParBlockType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, para=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if para is None:
+ self.para = []
+ else:
+ self.para = para
+ self.para_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docParBlockType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docParBlockType.subclass:
+ return docParBlockType.subclass(*args_, **kwargs_)
+ else:
+ return docParBlockType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_para(self):
+ return self.para
+ def set_para(self, para):
+ self.para = para
+ def add_para(self, value):
+ self.para.append(value)
+ def insert_para_at(self, index, value):
+ self.para.insert(index, value)
+ def replace_para_at(self, index, value):
+ self.para[index] = value
+ def hasContent_(self):
+ if (
+ self.para
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParBlockType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docParBlockType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docParBlockType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docParBlockType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docParBlockType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docParBlockType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docParBlockType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for para_ in self.para:
+ namespaceprefix_ = self.para_nsprefix_ + ':' if (UseCapturedNS_ and self.para_nsprefix_) else ''
+ para_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='para', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'para':
+ obj_ = docParaType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.para.append(obj_)
+ obj_.original_tagname_ = 'para'
+# end class docParBlockType
+
+
+class docEmptyType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docEmptyType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docEmptyType.subclass:
+ return docEmptyType.subclass(*args_, **kwargs_)
+ else:
+ return docEmptyType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmptyType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEmptyType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docEmptyType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEmptyType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEmptyType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEmptyType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmptyType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class docEmptyType
+
+
+class tableofcontentsType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, tocsect=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ if tocsect is None:
+ self.tocsect = []
+ else:
+ self.tocsect = tocsect
+ self.tocsect_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, tableofcontentsType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if tableofcontentsType.subclass:
+ return tableofcontentsType.subclass(*args_, **kwargs_)
+ else:
+ return tableofcontentsType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_tocsect(self):
+ return self.tocsect
+ def set_tocsect(self, tocsect):
+ self.tocsect = tocsect
+ def add_tocsect(self, value):
+ self.tocsect.append(value)
+ def insert_tocsect_at(self, index, value):
+ self.tocsect.insert(index, value)
+ def replace_tocsect_at(self, index, value):
+ self.tocsect[index] = value
+ def hasContent_(self):
+ if (
+ self.tocsect
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('tableofcontentsType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'tableofcontentsType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='tableofcontentsType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='tableofcontentsType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='tableofcontentsType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for tocsect_ in self.tocsect:
+ namespaceprefix_ = self.tocsect_nsprefix_ + ':' if (UseCapturedNS_ and self.tocsect_nsprefix_) else ''
+ tocsect_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tocsect', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'tocsect':
+ obj_ = tableofcontentsKindType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.tocsect.append(obj_)
+ obj_.original_tagname_ = 'tocsect'
+# end class tableofcontentsType
+
+
+class tableofcontentsKindType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, name=None, reference=None, tableofcontents=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ self.reference = reference
+ self.reference_nsprefix_ = None
+ if tableofcontents is None:
+ self.tableofcontents = []
+ else:
+ self.tableofcontents = tableofcontents
+ self.tableofcontents_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, tableofcontentsKindType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if tableofcontentsKindType.subclass:
+ return tableofcontentsKindType.subclass(*args_, **kwargs_)
+ else:
+ return tableofcontentsKindType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_reference(self):
+ return self.reference
+ def set_reference(self, reference):
+ self.reference = reference
+ def get_tableofcontents(self):
+ return self.tableofcontents
+ def set_tableofcontents(self, tableofcontents):
+ self.tableofcontents = tableofcontents
+ def add_tableofcontents(self, value):
+ self.tableofcontents.append(value)
+ def insert_tableofcontents_at(self, index, value):
+ self.tableofcontents.insert(index, value)
+ def replace_tableofcontents_at(self, index, value):
+ self.tableofcontents[index] = value
+ def hasContent_(self):
+ if (
+ self.name is not None or
+ self.reference is not None or
+ self.tableofcontents
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsKindType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('tableofcontentsKindType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'tableofcontentsKindType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='tableofcontentsKindType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='tableofcontentsKindType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='tableofcontentsKindType'):
+ pass
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='tableofcontentsKindType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ if self.reference is not None:
+ namespaceprefix_ = self.reference_nsprefix_ + ':' if (UseCapturedNS_ and self.reference_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sreference>%s</%sreference>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.reference), input_name='reference')), namespaceprefix_ , eol_))
+ for tableofcontents_ in self.tableofcontents:
+ namespaceprefix_ = self.tableofcontents_nsprefix_ + ':' if (UseCapturedNS_ and self.tableofcontents_nsprefix_) else ''
+ tableofcontents_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='tableofcontents', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ pass
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'name':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'name')
+ value_ = self.gds_validate_string(value_, node, 'name')
+ self.name = value_
+ self.name_nsprefix_ = child_.prefix
+ elif nodeName_ == 'reference':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'reference')
+ value_ = self.gds_validate_string(value_, node, 'reference')
+ self.reference = value_
+ self.reference_nsprefix_ = child_.prefix
+ elif nodeName_ == 'tableofcontents':
+ obj_ = tableofcontentsType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.tableofcontents.append(obj_)
+ obj_.original_tagname_ = 'tableofcontents'
+# end class tableofcontentsKindType
+
+
+class docEmojiType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, name=None, unicode=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.name = _cast(None, name)
+ self.name_nsprefix_ = None
+ self.unicode = _cast(None, unicode)
+ self.unicode_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, docEmojiType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if docEmojiType.subclass:
+ return docEmojiType.subclass(*args_, **kwargs_)
+ else:
+ return docEmojiType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_unicode(self):
+ return self.unicode
+ def set_unicode(self, unicode):
+ self.unicode = unicode
+ def hasContent_(self):
+ if (
+
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmojiType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('docEmojiType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'docEmojiType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='docEmojiType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='docEmojiType', pretty_print=pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='docEmojiType'):
+ if self.name is not None and 'name' not in already_processed:
+ already_processed.add('name')
+ outfile.write(' name=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.name), input_name='name')), ))
+ if self.unicode is not None and 'unicode' not in already_processed:
+ already_processed.add('unicode')
+ outfile.write(' unicode=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.unicode), input_name='unicode')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='docEmojiType', fromsubclass_=False, pretty_print=True):
+ pass
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('name', node)
+ if value is not None and 'name' not in already_processed:
+ already_processed.add('name')
+ self.name = value
+ value = find_attr_value_('unicode', node)
+ if value is not None and 'unicode' not in already_processed:
+ already_processed.add('unicode')
+ self.unicode = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ pass
+# end class docEmojiType
+
+
+GDSClassesMapping = {
+ 'doxygen': DoxygenType,
+}
+
+
+USAGE_TEXT = """
+Usage: python <Parser>.py [ -s ] <in_xml_file>
+"""
+
+
+def usage():
+ print(USAGE_TEXT)
+ sys.exit(1)
+
+
+def get_root_tag(node):
+ tag = Tag_pattern_.match(node.tag).groups()[-1]
+ rootClass = GDSClassesMapping.get(tag)
+ if rootClass is None:
+ rootClass = globals().get(tag)
+ return tag, rootClass
+
+
+def get_required_ns_prefix_defs(rootNode):
+ '''Get all name space prefix definitions required in this XML doc.
+ Return a dictionary of definitions and a char string of definitions.
+ '''
+ nsmap = {
+ prefix: uri
+ for node in rootNode.iter()
+ for (prefix, uri) in node.nsmap.items()
+ if prefix is not None
+ }
+ namespacedefs = ' '.join([
+ 'xmlns:{}="{}"'.format(prefix, uri)
+ for prefix, uri in nsmap.items()
+ ])
+ return nsmap, namespacedefs
+
+
+def parse(inFileName, silence=False, print_warnings=True):
+ global CapturedNsmap_
+ gds_collector = GdsCollector_()
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ sys.stdout.write('<?xml version="1.0" ?>\n')
+ rootObj.export(
+ sys.stdout, 0, name_=rootTag,
+ namespacedef_=namespacedefs,
+ pretty_print=True)
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def parseEtree(inFileName, silence=False, print_warnings=True,
+ mapping=None, nsmap=None):
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ gds_collector = GdsCollector_()
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ # Enable Python to collect the space used by the DOM.
+ if mapping is None:
+ mapping = {}
+ rootElement = rootObj.to_etree(
+ None, name_=rootTag, mapping_=mapping, nsmap_=nsmap)
+ reverse_mapping = rootObj.gds_reverse_node_mapping(mapping)
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ content = etree_.tostring(
+ rootElement, pretty_print=True,
+ xml_declaration=True, encoding="utf-8")
+ sys.stdout.write(str(content))
+ sys.stdout.write('\n')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj, rootElement, mapping, reverse_mapping
+
+
+def parseString(inString, silence=False, print_warnings=True):
+ '''Parse a string, create the object tree, and export it.
+
+ Arguments:
+ - inString -- A string. This XML fragment should not start
+ with an XML declaration containing an encoding.
+ - silence -- A boolean. If False, export the object.
+ Returns -- The root object in the tree.
+ '''
+ parser = None
+ rootNode= parsexmlstring_(inString, parser)
+ gds_collector = GdsCollector_()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ if not SaveElementTreeNode:
+ rootNode = None
+ if not silence:
+ sys.stdout.write('<?xml version="1.0" ?>\n')
+ rootObj.export(
+ sys.stdout, 0, name_=rootTag,
+ namespacedef_='')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def parseLiteral(inFileName, silence=False, print_warnings=True):
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ gds_collector = GdsCollector_()
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ # Enable Python to collect the space used by the DOM.
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ sys.stdout.write('#from compound import *\n\n')
+ sys.stdout.write('import compound as model_\n\n')
+ sys.stdout.write('rootObj = model_.rootClass(\n')
+ rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
+ sys.stdout.write(')\n')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def main():
+ args = sys.argv[1:]
+ if len(args) == 1:
+ parse(args[0])
+ else:
+ usage()
+
+
+if __name__ == '__main__':
+ #import pdb; pdb.set_trace()
+ main()
+
+RenameMappings_ = {
+}
+
+#
+# Mapping of namespaces to types defined in them
+# and the file in which each is defined.
+# simpleTypes are marked "ST" and complexTypes "CT".
+NamespaceToDefMappings_ = {'http://www.w3.org/XML/1998/namespace': []}
+
+__all__ = [
+ "DoxygenType",
+ "argsstring",
+ "array",
+ "attributes",
+ "bitfield",
+ "childnodeType",
+ "codelineType",
+ "compoundRefType",
+ "compounddefType",
+ "declname",
+ "definition",
+ "defname",
+ "descriptionType",
+ "docAnchorType",
+ "docBlockQuoteType",
+ "docCaptionType",
+ "docCopyType",
+ "docEmojiType",
+ "docEmptyType",
+ "docEntryType",
+ "docFormulaType",
+ "docHeadingType",
+ "docHtmlOnlyType",
+ "docImageType",
+ "docIndexEntryType",
+ "docInternalS1Type",
+ "docInternalS2Type",
+ "docInternalS3Type",
+ "docInternalS4Type",
+ "docInternalType",
+ "docLanguageType",
+ "docListItemType",
+ "docListType",
+ "docMarkupType",
+ "docParBlockType",
+ "docParaType",
+ "docParamListItem",
+ "docParamListType",
+ "docParamName",
+ "docParamNameList",
+ "docParamType",
+ "docRefTextType",
+ "docRowType",
+ "docSect1Type",
+ "docSect2Type",
+ "docSect3Type",
+ "docSect4Type",
+ "docSimpleSectType",
+ "docTableType",
+ "docTitleType",
+ "docTocItemType",
+ "docTocListType",
+ "docURLLink",
+ "docVarListEntryType",
+ "docVariableListType",
+ "docXRefSectType",
+ "edgelabel",
+ "enumvalueType",
+ "graphType",
+ "highlightType",
+ "incType",
+ "label",
+ "linkType",
+ "linkedTextType",
+ "listingType",
+ "listofallmembersType",
+ "locationType",
+ "memberRefType",
+ "memberdefType",
+ "name",
+ "nodeType",
+ "paramType",
+ "read",
+ "refTextType",
+ "refType",
+ "referenceType",
+ "reimplementType",
+ "scope",
+ "sectiondefType",
+ "spType",
+ "tableofcontentsKindType",
+ "tableofcontentsType",
+ "templateparamlistType",
+ "write"
+]
diff --git a/addon/doxmlparser/doxmlparser/index.py b/addon/doxmlparser/doxmlparser/index.py
new file mode 100644
index 0000000..5ef79c8
--- /dev/null
+++ b/addon/doxmlparser/doxmlparser/index.py
@@ -0,0 +1,1621 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#
+# Generated by generateDS.py.
+# Python 3.9.0 (default, Oct 27 2020, 14:15:17) [Clang 12.0.0 (clang-1200.0.32.21)]
+#
+# Command line options:
+# ('--no-dates', '')
+# ('--no-versions', '')
+# ('-f', '')
+# ('-o', '/Users/dimitri/doxygen.git/addon/doxmlparser/doxmlparser/index.py')
+#
+# Command line arguments:
+# /Users/dimitri/doxygen.git/templates/xml/index.xsd
+#
+# Command line:
+# /usr/local/bin/generateDS --no-dates --no-versions -f -o "/Users/dimitri/doxygen.git/addon/doxmlparser/doxmlparser/index.py" /Users/dimitri/doxygen.git/templates/xml/index.xsd
+#
+# Current working directory (os.getcwd()):
+# doxmlparser
+#
+
+import sys
+try:
+ ModulenotfoundExp_ = ModuleNotFoundError
+except NameError:
+ ModulenotfoundExp_ = ImportError
+from six.moves import zip_longest
+import os
+import re as re_
+import base64
+import datetime as datetime_
+import decimal as decimal_
+try:
+ from lxml import etree as etree_
+except ModulenotfoundExp_ :
+ from xml.etree import ElementTree as etree_
+
+
+Validate_simpletypes_ = True
+SaveElementTreeNode = True
+if sys.version_info.major == 2:
+ BaseStrType_ = basestring
+else:
+ BaseStrType_ = str
+
+
+def parsexml_(infile, parser=None, **kwargs):
+ if parser is None:
+ # Use the lxml ElementTree compatible parser so that, e.g.,
+ # we ignore comments.
+ try:
+ parser = etree_.ETCompatXMLParser()
+ except AttributeError:
+ # fallback to xml.etree
+ parser = etree_.XMLParser()
+ try:
+ if isinstance(infile, os.PathLike):
+ infile = os.path.join(infile)
+ except AttributeError:
+ pass
+ doc = etree_.parse(infile, parser=parser, **kwargs)
+ return doc
+
+def parsexmlstring_(instring, parser=None, **kwargs):
+ if parser is None:
+ # Use the lxml ElementTree compatible parser so that, e.g.,
+ # we ignore comments.
+ try:
+ parser = etree_.ETCompatXMLParser()
+ except AttributeError:
+ # fallback to xml.etree
+ parser = etree_.XMLParser()
+ element = etree_.fromstring(instring, parser=parser, **kwargs)
+ return element
+
+#
+# Namespace prefix definition table (and other attributes, too)
+#
+# The module generatedsnamespaces, if it is importable, must contain
+# a dictionary named GeneratedsNamespaceDefs. This Python dictionary
+# should map element type names (strings) to XML schema namespace prefix
+# definitions. The export method for any class for which there is
+# a namespace prefix definition, will export that definition in the
+# XML representation of that element. See the export method of
+# any generated element type class for an example of the use of this
+# table.
+# A sample table is:
+#
+# # File: generatedsnamespaces.py
+#
+# GenerateDSNamespaceDefs = {
+# "ElementtypeA": "http://www.xxx.com/namespaceA",
+# "ElementtypeB": "http://www.xxx.com/namespaceB",
+# }
+#
+# Additionally, the generatedsnamespaces module can contain a python
+# dictionary named GenerateDSNamespaceTypePrefixes that associates element
+# types with the namespace prefixes that are to be added to the
+# "xsi:type" attribute value. See the exportAttributes method of
+# any generated element type and the generation of "xsi:type" for an
+# example of the use of this table.
+# An example table:
+#
+# # File: generatedsnamespaces.py
+#
+# GenerateDSNamespaceTypePrefixes = {
+# "ElementtypeC": "aaa:",
+# "ElementtypeD": "bbb:",
+# }
+#
+
+try:
+ from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_
+except ModulenotfoundExp_ :
+ GenerateDSNamespaceDefs_ = {}
+try:
+ from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_
+except ModulenotfoundExp_ :
+ GenerateDSNamespaceTypePrefixes_ = {}
+
+#
+# You can replace the following class definition by defining an
+# importable module named "generatedscollector" containing a class
+# named "GdsCollector". See the default class definition below for
+# clues about the possible content of that class.
+#
+try:
+ from generatedscollector import GdsCollector as GdsCollector_
+except ModulenotfoundExp_ :
+
+ class GdsCollector_(object):
+
+ def __init__(self, messages=None):
+ if messages is None:
+ self.messages = []
+ else:
+ self.messages = messages
+
+ def add_message(self, msg):
+ self.messages.append(msg)
+
+ def get_messages(self):
+ return self.messages
+
+ def clear_messages(self):
+ self.messages = []
+
+ def print_messages(self):
+ for msg in self.messages:
+ print("Warning: {}".format(msg))
+
+ def write_messages(self, outstream):
+ for msg in self.messages:
+ outstream.write("Warning: {}\n".format(msg))
+
+
+#
+# The super-class for enum types
+#
+
+try:
+ from enum import Enum
+except ModulenotfoundExp_ :
+ Enum = object
+
+#
+# The root super-class for element type classes
+#
+# Calls to the methods in these classes are generated by generateDS.py.
+# You can replace these methods by re-implementing the following class
+# in a module named generatedssuper.py.
+
+try:
+ from generatedssuper import GeneratedsSuper
+except ModulenotfoundExp_ as exp:
+
+ class GeneratedsSuper(object):
+ __hash__ = object.__hash__
+ tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$')
+ class _FixedOffsetTZ(datetime_.tzinfo):
+ def __init__(self, offset, name):
+ self.__offset = datetime_.timedelta(minutes=offset)
+ self.__name = name
+ def utcoffset(self, dt):
+ return self.__offset
+ def tzname(self, dt):
+ return self.__name
+ def dst(self, dt):
+ return None
+ def gds_format_string(self, input_data, input_name=''):
+ return input_data
+ def gds_parse_string(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_validate_string(self, input_data, node=None, input_name=''):
+ if not input_data:
+ return ''
+ else:
+ return input_data
+ def gds_format_base64(self, input_data, input_name=''):
+ return base64.b64encode(input_data)
+ def gds_validate_base64(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_integer(self, input_data, input_name=''):
+ return '%d' % input_data
+ def gds_parse_integer(self, input_data, node=None, input_name=''):
+ try:
+ ival = int(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires integer value: %s' % exp)
+ return ival
+ def gds_validate_integer(self, input_data, node=None, input_name=''):
+ try:
+ value = int(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires integer value')
+ return value
+ def gds_format_integer_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_integer_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ int(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of integer values')
+ return values
+ def gds_format_float(self, input_data, input_name=''):
+ return ('%.15f' % input_data).rstrip('0')
+ def gds_parse_float(self, input_data, node=None, input_name=''):
+ try:
+ fval_ = float(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires float or double value: %s' % exp)
+ return fval_
+ def gds_validate_float(self, input_data, node=None, input_name=''):
+ try:
+ value = float(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires float value')
+ return value
+ def gds_format_float_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_float_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ float(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of float values')
+ return values
+ def gds_format_decimal(self, input_data, input_name=''):
+ return_value = '%s' % input_data
+ if '.' in return_value:
+ return_value = return_value.rstrip('0')
+ if return_value.endswith('.'):
+ return_value = return_value.rstrip('.')
+ return return_value
+ def gds_parse_decimal(self, input_data, node=None, input_name=''):
+ try:
+ decimal_value = decimal_.Decimal(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires decimal value')
+ return decimal_value
+ def gds_validate_decimal(self, input_data, node=None, input_name=''):
+ try:
+ value = decimal_.Decimal(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires decimal value')
+ return value
+ def gds_format_decimal_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return ' '.join([self.gds_format_decimal(item) for item in input_data])
+ def gds_validate_decimal_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ decimal_.Decimal(value)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires sequence of decimal values')
+ return values
+ def gds_format_double(self, input_data, input_name=''):
+ return '%s' % input_data
+ def gds_parse_double(self, input_data, node=None, input_name=''):
+ try:
+ fval_ = float(input_data)
+ except (TypeError, ValueError) as exp:
+ raise_parse_error(node, 'Requires double or float value: %s' % exp)
+ return fval_
+ def gds_validate_double(self, input_data, node=None, input_name=''):
+ try:
+ value = float(input_data)
+ except (TypeError, ValueError):
+ raise_parse_error(node, 'Requires double or float value')
+ return value
+ def gds_format_double_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_double_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ try:
+ float(value)
+ except (TypeError, ValueError):
+ raise_parse_error(
+ node, 'Requires sequence of double or float values')
+ return values
+ def gds_format_boolean(self, input_data, input_name=''):
+ return ('%s' % input_data).lower()
+ def gds_parse_boolean(self, input_data, node=None, input_name=''):
+ if input_data in ('true', '1'):
+ bval = True
+ elif input_data in ('false', '0'):
+ bval = False
+ else:
+ raise_parse_error(node, 'Requires boolean value')
+ return bval
+ def gds_validate_boolean(self, input_data, node=None, input_name=''):
+ if input_data not in (True, 1, False, 0, ):
+ raise_parse_error(
+ node,
+ 'Requires boolean value '
+ '(one of True, 1, False, 0)')
+ return input_data
+ def gds_format_boolean_list(self, input_data, input_name=''):
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
+ input_data = [str(s) for s in input_data]
+ return '%s' % ' '.join(input_data)
+ def gds_validate_boolean_list(
+ self, input_data, node=None, input_name=''):
+ values = input_data.split()
+ for value in values:
+ if value not in (True, 1, False, 0, ):
+ raise_parse_error(
+ node,
+ 'Requires sequence of boolean values '
+ '(one of True, 1, False, 0)')
+ return values
+ def gds_validate_datetime(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_datetime(self, input_data, input_name=''):
+ if input_data.microsecond == 0:
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ )
+ else:
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
+ )
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
+ return _svalue
+ @classmethod
+ def gds_parse_datetime(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ time_parts = input_data.split('.')
+ if len(time_parts) > 1:
+ micro_seconds = int(float('0.' + time_parts[1]) * 1000000)
+ input_data = '%s.%s' % (
+ time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), )
+ dt = datetime_.datetime.strptime(
+ input_data, '%Y-%m-%dT%H:%M:%S.%f')
+ else:
+ dt = datetime_.datetime.strptime(
+ input_data, '%Y-%m-%dT%H:%M:%S')
+ dt = dt.replace(tzinfo=tz)
+ return dt
+ def gds_validate_date(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_date(self, input_data, input_name=''):
+ _svalue = '%04d-%02d-%02d' % (
+ input_data.year,
+ input_data.month,
+ input_data.day,
+ )
+ try:
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(
+ hours, minutes)
+ except AttributeError:
+ pass
+ return _svalue
+ @classmethod
+ def gds_parse_date(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d')
+ dt = dt.replace(tzinfo=tz)
+ return dt.date()
+ def gds_validate_time(self, input_data, node=None, input_name=''):
+ return input_data
+ def gds_format_time(self, input_data, input_name=''):
+ if input_data.microsecond == 0:
+ _svalue = '%02d:%02d:%02d' % (
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ )
+ else:
+ _svalue = '%02d:%02d:%02d.%s' % (
+ input_data.hour,
+ input_data.minute,
+ input_data.second,
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
+ )
+ if input_data.tzinfo is not None:
+ tzoff = input_data.tzinfo.utcoffset(input_data)
+ if tzoff is not None:
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
+ if total_seconds == 0:
+ _svalue += 'Z'
+ else:
+ if total_seconds < 0:
+ _svalue += '-'
+ total_seconds *= -1
+ else:
+ _svalue += '+'
+ hours = total_seconds // 3600
+ minutes = (total_seconds - (hours * 3600)) // 60
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
+ return _svalue
+ def gds_validate_simple_patterns(self, patterns, target):
+ # pat is a list of lists of strings/patterns.
+ # The target value must match at least one of the patterns
+ # in order for the test to succeed.
+ found1 = True
+ for patterns1 in patterns:
+ found2 = False
+ for patterns2 in patterns1:
+ mo = re_.search(patterns2, target)
+ if mo is not None and len(mo.group(0)) == len(target):
+ found2 = True
+ break
+ if not found2:
+ found1 = False
+ break
+ return found1
+ @classmethod
+ def gds_parse_time(cls, input_data):
+ tz = None
+ if input_data[-1] == 'Z':
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
+ input_data = input_data[:-1]
+ else:
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
+ if results is not None:
+ tzoff_parts = results.group(2).split(':')
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
+ if results.group(1) == '-':
+ tzoff *= -1
+ tz = GeneratedsSuper._FixedOffsetTZ(
+ tzoff, results.group(0))
+ input_data = input_data[:-6]
+ if len(input_data.split('.')) > 1:
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f')
+ else:
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S')
+ dt = dt.replace(tzinfo=tz)
+ return dt.time()
+ def gds_check_cardinality_(
+ self, value, input_name,
+ min_occurs=0, max_occurs=1, required=None):
+ if value is None:
+ length = 0
+ elif isinstance(value, list):
+ length = len(value)
+ else:
+ length = 1
+ if required is not None :
+ if required and length < 1:
+ self.gds_collector_.add_message(
+ "Required value {}{} is missing".format(
+ input_name, self.gds_get_node_lineno_()))
+ if length < min_occurs:
+ self.gds_collector_.add_message(
+ "Number of values for {}{} is below "
+ "the minimum allowed, "
+ "expected at least {}, found {}".format(
+ input_name, self.gds_get_node_lineno_(),
+ min_occurs, length))
+ elif length > max_occurs:
+ self.gds_collector_.add_message(
+ "Number of values for {}{} is above "
+ "the maximum allowed, "
+ "expected at most {}, found {}".format(
+ input_name, self.gds_get_node_lineno_(),
+ max_occurs, length))
+ def gds_validate_builtin_ST_(
+ self, validator, value, input_name,
+ min_occurs=None, max_occurs=None, required=None):
+ if value is not None:
+ try:
+ validator(value, input_name=input_name)
+ except GDSParseError as parse_error:
+ self.gds_collector_.add_message(str(parse_error))
+ def gds_validate_defined_ST_(
+ self, validator, value, input_name,
+ min_occurs=None, max_occurs=None, required=None):
+ if value is not None:
+ try:
+ validator(value)
+ except GDSParseError as parse_error:
+ self.gds_collector_.add_message(str(parse_error))
+ def gds_str_lower(self, instring):
+ return instring.lower()
+ def get_path_(self, node):
+ path_list = []
+ self.get_path_list_(node, path_list)
+ path_list.reverse()
+ path = '/'.join(path_list)
+ return path
+ Tag_strip_pattern_ = re_.compile(r'\{.*\}')
+ def get_path_list_(self, node, path_list):
+ if node is None:
+ return
+ tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag)
+ if tag:
+ path_list.append(tag)
+ self.get_path_list_(node.getparent(), path_list)
+ def get_class_obj_(self, node, default_class=None):
+ class_obj1 = default_class
+ if 'xsi' in node.nsmap:
+ classname = node.get('{%s}type' % node.nsmap['xsi'])
+ if classname is not None:
+ names = classname.split(':')
+ if len(names) == 2:
+ classname = names[1]
+ class_obj2 = globals().get(classname)
+ if class_obj2 is not None:
+ class_obj1 = class_obj2
+ return class_obj1
+ def gds_build_any(self, node, type_name=None):
+ # provide default value in case option --disable-xml is used.
+ content = ""
+ content = etree_.tostring(node, encoding="unicode")
+ return content
+ @classmethod
+ def gds_reverse_node_mapping(cls, mapping):
+ return dict(((v, k) for k, v in mapping.items()))
+ @staticmethod
+ def gds_encode(instring):
+ if sys.version_info.major == 2:
+ if ExternalEncoding:
+ encoding = ExternalEncoding
+ else:
+ encoding = 'utf-8'
+ return instring.encode(encoding)
+ else:
+ return instring
+ @staticmethod
+ def convert_unicode(instring):
+ if isinstance(instring, str):
+ result = quote_xml(instring)
+ elif sys.version_info.major == 2 and isinstance(instring, unicode):
+ result = quote_xml(instring).encode('utf8')
+ else:
+ result = GeneratedsSuper.gds_encode(str(instring))
+ return result
+ def __eq__(self, other):
+ def excl_select_objs_(obj):
+ return (obj[0] != 'parent_object_' and
+ obj[0] != 'gds_collector_')
+ if type(self) != type(other):
+ return False
+ return all(x == y for x, y in zip_longest(
+ filter(excl_select_objs_, self.__dict__.items()),
+ filter(excl_select_objs_, other.__dict__.items())))
+ def __ne__(self, other):
+ return not self.__eq__(other)
+ # Django ETL transform hooks.
+ def gds_djo_etl_transform(self):
+ pass
+ def gds_djo_etl_transform_db_obj(self, dbobj):
+ pass
+ # SQLAlchemy ETL transform hooks.
+ def gds_sqa_etl_transform(self):
+ return 0, None
+ def gds_sqa_etl_transform_db_obj(self, dbobj):
+ pass
+ def gds_get_node_lineno_(self):
+ if (hasattr(self, "gds_elementtree_node_") and
+ self.gds_elementtree_node_ is not None):
+ return ' near line {}'.format(
+ self.gds_elementtree_node_.sourceline)
+ else:
+ return ""
+
+
+ def getSubclassFromModule_(module, class_):
+ '''Get the subclass of a class from a specific module.'''
+ name = class_.__name__ + 'Sub'
+ if hasattr(module, name):
+ return getattr(module, name)
+ else:
+ return None
+
+
+#
+# If you have installed IPython you can uncomment and use the following.
+# IPython is available from http://ipython.scipy.org/.
+#
+
+## from IPython.Shell import IPShellEmbed
+## args = ''
+## ipshell = IPShellEmbed(args,
+## banner = 'Dropping into IPython',
+## exit_msg = 'Leaving Interpreter, back to program.')
+
+# Then use the following line where and when you want to drop into the
+# IPython shell:
+# ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit')
+
+#
+# Globals
+#
+
+ExternalEncoding = ''
+# Set this to false in order to deactivate during export, the use of
+# name space prefixes captured from the input document.
+UseCapturedNS_ = True
+CapturedNsmap_ = {}
+Tag_pattern_ = re_.compile(r'({.*})?(.*)')
+String_cleanup_pat_ = re_.compile(r"[\n\r\s]+")
+Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)')
+CDATA_pattern_ = re_.compile(r"<!\[CDATA\[.*?\]\]>", re_.DOTALL)
+
+# Change this to redirect the generated superclass module to use a
+# specific subclass module.
+CurrentSubclassModule_ = None
+
+#
+# Support/utility functions.
+#
+
+
+def showIndent(outfile, level, pretty_print=True):
+ if pretty_print:
+ for idx in range(level):
+ outfile.write(' ')
+
+
+def quote_xml(inStr):
+ "Escape markup chars, but do not modify CDATA sections."
+ if not inStr:
+ return ''
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
+ s2 = ''
+ pos = 0
+ matchobjects = CDATA_pattern_.finditer(s1)
+ for mo in matchobjects:
+ s3 = s1[pos:mo.start()]
+ s2 += quote_xml_aux(s3)
+ s2 += s1[mo.start():mo.end()]
+ pos = mo.end()
+ s3 = s1[pos:]
+ s2 += quote_xml_aux(s3)
+ return s2
+
+
+def quote_xml_aux(inStr):
+ s1 = inStr.replace('&', '&amp;')
+ s1 = s1.replace('<', '&lt;')
+ s1 = s1.replace('>', '&gt;')
+ return s1
+
+
+def quote_attrib(inStr):
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
+ s1 = s1.replace('&', '&amp;')
+ s1 = s1.replace('<', '&lt;')
+ s1 = s1.replace('>', '&gt;')
+ if '"' in s1:
+ if "'" in s1:
+ s1 = '"%s"' % s1.replace('"', "&quot;")
+ else:
+ s1 = "'%s'" % s1
+ else:
+ s1 = '"%s"' % s1
+ return s1
+
+
+def quote_python(inStr):
+ s1 = inStr
+ if s1.find("'") == -1:
+ if s1.find('\n') == -1:
+ return "'%s'" % s1
+ else:
+ return "'''%s'''" % s1
+ else:
+ if s1.find('"') != -1:
+ s1 = s1.replace('"', '\\"')
+ if s1.find('\n') == -1:
+ return '"%s"' % s1
+ else:
+ return '"""%s"""' % s1
+
+
+def get_all_text_(node):
+ if node.text is not None:
+ text = node.text
+ else:
+ text = ''
+ for child in node:
+ if child.tail is not None:
+ text += child.tail
+ return text
+
+
+def find_attr_value_(attr_name, node):
+ attrs = node.attrib
+ attr_parts = attr_name.split(':')
+ value = None
+ if len(attr_parts) == 1:
+ value = attrs.get(attr_name)
+ elif len(attr_parts) == 2:
+ prefix, name = attr_parts
+ if prefix == 'xml':
+ namespace = 'http://www.w3.org/XML/1998/namespace'
+ else:
+ namespace = node.nsmap.get(prefix)
+ if namespace is not None:
+ value = attrs.get('{%s}%s' % (namespace, name, ))
+ return value
+
+
+def encode_str_2_3(instr):
+ return instr
+
+
+class GDSParseError(Exception):
+ pass
+
+
+def raise_parse_error(node, msg):
+ if node is not None:
+ msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, )
+ raise GDSParseError(msg)
+
+
+class MixedContainer:
+ # Constants for category:
+ CategoryNone = 0
+ CategoryText = 1
+ CategorySimple = 2
+ CategoryComplex = 3
+ # Constants for content_type:
+ TypeNone = 0
+ TypeText = 1
+ TypeString = 2
+ TypeInteger = 3
+ TypeFloat = 4
+ TypeDecimal = 5
+ TypeDouble = 6
+ TypeBoolean = 7
+ TypeBase64 = 8
+ def __init__(self, category, content_type, name, value):
+ self.category = category
+ self.content_type = content_type
+ self.name = name
+ self.value = value
+ def getCategory(self):
+ return self.category
+ def getContenttype(self, content_type):
+ return self.content_type
+ def getValue(self):
+ return self.value
+ def getName(self):
+ return self.name
+ def export(self, outfile, level, name, namespace,
+ pretty_print=True):
+ if self.category == MixedContainer.CategoryText:
+ # Prevent exporting empty content as empty lines.
+ if self.value.strip():
+ outfile.write(self.value)
+ elif self.category == MixedContainer.CategorySimple:
+ self.exportSimple(outfile, level, name)
+ else: # category == MixedContainer.CategoryComplex
+ self.value.export(
+ outfile, level, namespace, name_=name,
+ pretty_print=pretty_print)
+ def exportSimple(self, outfile, level, name):
+ if self.content_type == MixedContainer.TypeString:
+ outfile.write('<%s>%s</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeInteger or \
+ self.content_type == MixedContainer.TypeBoolean:
+ outfile.write('<%s>%d</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeFloat or \
+ self.content_type == MixedContainer.TypeDecimal:
+ outfile.write('<%s>%f</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeDouble:
+ outfile.write('<%s>%g</%s>' % (
+ self.name, self.value, self.name))
+ elif self.content_type == MixedContainer.TypeBase64:
+ outfile.write('<%s>%s</%s>' % (
+ self.name,
+ base64.b64encode(self.value),
+ self.name))
+ def to_etree(self, element, mapping_=None, nsmap_=None):
+ if self.category == MixedContainer.CategoryText:
+ # Prevent exporting empty content as empty lines.
+ if self.value.strip():
+ if len(element) > 0:
+ if element[-1].tail is None:
+ element[-1].tail = self.value
+ else:
+ element[-1].tail += self.value
+ else:
+ if element.text is None:
+ element.text = self.value
+ else:
+ element.text += self.value
+ elif self.category == MixedContainer.CategorySimple:
+ subelement = etree_.SubElement(
+ element, '%s' % self.name)
+ subelement.text = self.to_etree_simple()
+ else: # category == MixedContainer.CategoryComplex
+ self.value.to_etree(element)
+ def to_etree_simple(self, mapping_=None, nsmap_=None):
+ if self.content_type == MixedContainer.TypeString:
+ text = self.value
+ elif (self.content_type == MixedContainer.TypeInteger or
+ self.content_type == MixedContainer.TypeBoolean):
+ text = '%d' % self.value
+ elif (self.content_type == MixedContainer.TypeFloat or
+ self.content_type == MixedContainer.TypeDecimal):
+ text = '%f' % self.value
+ elif self.content_type == MixedContainer.TypeDouble:
+ text = '%g' % self.value
+ elif self.content_type == MixedContainer.TypeBase64:
+ text = '%s' % base64.b64encode(self.value)
+ return text
+ def exportLiteral(self, outfile, level, name):
+ if self.category == MixedContainer.CategoryText:
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
+ self.category, self.content_type,
+ self.name, self.value))
+ elif self.category == MixedContainer.CategorySimple:
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
+ self.category, self.content_type,
+ self.name, self.value))
+ else: # category == MixedContainer.CategoryComplex
+ showIndent(outfile, level)
+ outfile.write(
+ 'model_.MixedContainer(%d, %d, "%s",\n' % (
+ self.category, self.content_type, self.name,))
+ self.value.exportLiteral(outfile, level + 1)
+ showIndent(outfile, level)
+ outfile.write(')\n')
+
+
+class MemberSpec_(object):
+ def __init__(self, name='', data_type='', container=0,
+ optional=0, child_attrs=None, choice=None):
+ self.name = name
+ self.data_type = data_type
+ self.container = container
+ self.child_attrs = child_attrs
+ self.choice = choice
+ self.optional = optional
+ def set_name(self, name): self.name = name
+ def get_name(self): return self.name
+ def set_data_type(self, data_type): self.data_type = data_type
+ def get_data_type_chain(self): return self.data_type
+ def get_data_type(self):
+ if isinstance(self.data_type, list):
+ if len(self.data_type) > 0:
+ return self.data_type[-1]
+ else:
+ return 'xs:string'
+ else:
+ return self.data_type
+ def set_container(self, container): self.container = container
+ def get_container(self): return self.container
+ def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs
+ def get_child_attrs(self): return self.child_attrs
+ def set_choice(self, choice): self.choice = choice
+ def get_choice(self): return self.choice
+ def set_optional(self, optional): self.optional = optional
+ def get_optional(self): return self.optional
+
+
+def _cast(typ, value):
+ if typ is None or value is None:
+ return value
+ return typ(value)
+
+#
+# Data representation classes.
+#
+
+
+class CompoundKind(str, Enum):
+ CLASS='class'
+ STRUCT='struct'
+ UNION='union'
+ INTERFACE='interface'
+ PROTOCOL='protocol'
+ CATEGORY='category'
+ EXCEPTION='exception'
+ FILE='file'
+ NAMESPACE='namespace'
+ GROUP='group'
+ PAGE='page'
+ EXAMPLE='example'
+ DIR='dir'
+ TYPE='type'
+
+
+class MemberKind(str, Enum):
+ DEFINE='define'
+ PROPERTY='property'
+ EVENT='event'
+ VARIABLE='variable'
+ TYPEDEF='typedef'
+ ENUM='enum'
+ ENUMVALUE='enumvalue'
+ FUNCTION='function'
+ SIGNAL='signal'
+ PROTOTYPE='prototype'
+ FRIEND='friend'
+ DCOP='dcop'
+ SLOT='slot'
+
+
+class DoxygenType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, version=None, lang=None, compound=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.version = _cast(None, version)
+ self.version_nsprefix_ = None
+ self.lang = _cast(None, lang)
+ self.lang_nsprefix_ = None
+ if compound is None:
+ self.compound = []
+ else:
+ self.compound = compound
+ self.compound_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, DoxygenType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if DoxygenType.subclass:
+ return DoxygenType.subclass(*args_, **kwargs_)
+ else:
+ return DoxygenType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_compound(self):
+ return self.compound
+ def set_compound(self, compound):
+ self.compound = compound
+ def add_compound(self, value):
+ self.compound.append(value)
+ def insert_compound_at(self, index, value):
+ self.compound.insert(index, value)
+ def replace_compound_at(self, index, value):
+ self.compound[index] = value
+ def get_version(self):
+ return self.version
+ def set_version(self, version):
+ self.version = version
+ def get_lang(self):
+ return self.lang
+ def set_lang(self, lang):
+ self.lang = lang
+ def hasContent_(self):
+ if (
+ self.compound
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('DoxygenType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'DoxygenType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='DoxygenType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='DoxygenType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='DoxygenType'):
+ if self.version is not None and 'version' not in already_processed:
+ already_processed.add('version')
+ outfile.write(' version=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.version), input_name='version')), ))
+ if self.lang is not None and 'lang' not in already_processed:
+ already_processed.add('lang')
+ outfile.write(' xml:lang=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.lang), input_name='lang')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='DoxygenType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ for compound_ in self.compound:
+ namespaceprefix_ = self.compound_nsprefix_ + ':' if (UseCapturedNS_ and self.compound_nsprefix_) else ''
+ compound_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='compound', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('version', node)
+ if value is not None and 'version' not in already_processed:
+ already_processed.add('version')
+ self.version = value
+ value = find_attr_value_('lang', node)
+ if value is not None and 'lang' not in already_processed:
+ already_processed.add('lang')
+ self.lang = value
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'compound':
+ obj_ = CompoundType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.compound.append(obj_)
+ obj_.original_tagname_ = 'compound'
+# end class DoxygenType
+
+
+class CompoundType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, kind=None, name=None, member=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ if member is None:
+ self.member = []
+ else:
+ self.member = member
+ self.member_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, CompoundType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if CompoundType.subclass:
+ return CompoundType.subclass(*args_, **kwargs_)
+ else:
+ return CompoundType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_member(self):
+ return self.member
+ def set_member(self, member):
+ self.member = member
+ def add_member(self, value):
+ self.member.append(value)
+ def insert_member_at(self, index, value):
+ self.member.insert(index, value)
+ def replace_member_at(self, index, value):
+ self.member[index] = value
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def validate_CompoundKind(self, value):
+ # Validate type CompoundKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['class', 'struct', 'union', 'interface', 'protocol', 'category', 'exception', 'file', 'namespace', 'group', 'page', 'example', 'dir', 'type']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on CompoundKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.name is not None or
+ self.member
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CompoundType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('CompoundType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'CompoundType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CompoundType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='CompoundType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CompoundType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CompoundType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ for member_ in self.member:
+ namespaceprefix_ = self.member_nsprefix_ + ':' if (UseCapturedNS_ and self.member_nsprefix_) else ''
+ member_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='member', pretty_print=pretty_print)
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_CompoundKind(self.kind) # validate type CompoundKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'name':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'name')
+ value_ = self.gds_validate_string(value_, node, 'name')
+ self.name = value_
+ self.name_nsprefix_ = child_.prefix
+ elif nodeName_ == 'member':
+ obj_ = MemberType.factory(parent_object_=self)
+ obj_.build(child_, gds_collector_=gds_collector_)
+ self.member.append(obj_)
+ obj_.original_tagname_ = 'member'
+# end class CompoundType
+
+
+class MemberType(GeneratedsSuper):
+ __hash__ = GeneratedsSuper.__hash__
+ subclass = None
+ superclass = None
+ def __init__(self, refid=None, kind=None, name=None, gds_collector_=None, **kwargs_):
+ self.gds_collector_ = gds_collector_
+ self.gds_elementtree_node_ = None
+ self.original_tagname_ = None
+ self.parent_object_ = kwargs_.get('parent_object_')
+ self.ns_prefix_ = None
+ self.refid = _cast(None, refid)
+ self.refid_nsprefix_ = None
+ self.kind = _cast(None, kind)
+ self.kind_nsprefix_ = None
+ self.name = name
+ self.name_nsprefix_ = None
+ def factory(*args_, **kwargs_):
+ if CurrentSubclassModule_ is not None:
+ subclass = getSubclassFromModule_(
+ CurrentSubclassModule_, MemberType)
+ if subclass is not None:
+ return subclass(*args_, **kwargs_)
+ if MemberType.subclass:
+ return MemberType.subclass(*args_, **kwargs_)
+ else:
+ return MemberType(*args_, **kwargs_)
+ factory = staticmethod(factory)
+ def get_ns_prefix_(self):
+ return self.ns_prefix_
+ def set_ns_prefix_(self, ns_prefix):
+ self.ns_prefix_ = ns_prefix
+ def get_name(self):
+ return self.name
+ def set_name(self, name):
+ self.name = name
+ def get_refid(self):
+ return self.refid
+ def set_refid(self, refid):
+ self.refid = refid
+ def get_kind(self):
+ return self.kind
+ def set_kind(self, kind):
+ self.kind = kind
+ def validate_MemberKind(self, value):
+ # Validate type MemberKind, a restriction on xsd:string.
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
+ if not isinstance(value, str):
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
+ return False
+ value = value
+ enumerations = ['define', 'property', 'event', 'variable', 'typedef', 'enum', 'enumvalue', 'function', 'signal', 'prototype', 'friend', 'dcop', 'slot']
+ if value not in enumerations:
+ lineno = self.gds_get_node_lineno_()
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on MemberKind' % {"value" : encode_str_2_3(value), "lineno": lineno} )
+ result = False
+ def hasContent_(self):
+ if (
+ self.name is not None
+ ):
+ return True
+ else:
+ return False
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', pretty_print=True):
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('MemberType')
+ if imported_ns_def_ is not None:
+ namespacedef_ = imported_ns_def_
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.original_tagname_ is not None and name_ == 'MemberType':
+ name_ = self.original_tagname_
+ if UseCapturedNS_ and self.ns_prefix_:
+ namespaceprefix_ = self.ns_prefix_ + ':'
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
+ already_processed = set()
+ self.exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='MemberType')
+ if self.hasContent_():
+ outfile.write('>%s' % (eol_, ))
+ self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='MemberType', pretty_print=pretty_print)
+ showIndent(outfile, level, pretty_print)
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
+ else:
+ outfile.write('/>%s' % (eol_, ))
+ def exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='MemberType'):
+ if self.refid is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ outfile.write(' refid=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.refid), input_name='refid')), ))
+ if self.kind is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ outfile.write(' kind=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.kind), input_name='kind')), ))
+ def exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MemberType', fromsubclass_=False, pretty_print=True):
+ if pretty_print:
+ eol_ = '\n'
+ else:
+ eol_ = ''
+ if self.name is not None:
+ namespaceprefix_ = self.name_nsprefix_ + ':' if (UseCapturedNS_ and self.name_nsprefix_) else ''
+ showIndent(outfile, level, pretty_print)
+ outfile.write('<%sname>%s</%sname>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.name), input_name='name')), namespaceprefix_ , eol_))
+ def build(self, node, gds_collector_=None):
+ self.gds_collector_ = gds_collector_
+ if SaveElementTreeNode:
+ self.gds_elementtree_node_ = node
+ already_processed = set()
+ self.ns_prefix_ = node.prefix
+ self.buildAttributes(node, node.attrib, already_processed)
+ for child in node:
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
+ self.buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
+ return self
+ def buildAttributes(self, node, attrs, already_processed):
+ value = find_attr_value_('refid', node)
+ if value is not None and 'refid' not in already_processed:
+ already_processed.add('refid')
+ self.refid = value
+ value = find_attr_value_('kind', node)
+ if value is not None and 'kind' not in already_processed:
+ already_processed.add('kind')
+ self.kind = value
+ self.validate_MemberKind(self.kind) # validate type MemberKind
+ def buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
+ if nodeName_ == 'name':
+ value_ = child_.text
+ value_ = self.gds_parse_string(value_, node, 'name')
+ value_ = self.gds_validate_string(value_, node, 'name')
+ self.name = value_
+ self.name_nsprefix_ = child_.prefix
+# end class MemberType
+
+
+GDSClassesMapping = {
+ 'doxygenindex': DoxygenType,
+}
+
+
+USAGE_TEXT = """
+Usage: python <Parser>.py [ -s ] <in_xml_file>
+"""
+
+
+def usage():
+ print(USAGE_TEXT)
+ sys.exit(1)
+
+
+def get_root_tag(node):
+ tag = Tag_pattern_.match(node.tag).groups()[-1]
+ rootClass = GDSClassesMapping.get(tag)
+ if rootClass is None:
+ rootClass = globals().get(tag)
+ return tag, rootClass
+
+
+def get_required_ns_prefix_defs(rootNode):
+ '''Get all name space prefix definitions required in this XML doc.
+ Return a dictionary of definitions and a char string of definitions.
+ '''
+ nsmap = {
+ prefix: uri
+ for node in rootNode.iter()
+ for (prefix, uri) in node.nsmap.items()
+ if prefix is not None
+ }
+ namespacedefs = ' '.join([
+ 'xmlns:{}="{}"'.format(prefix, uri)
+ for prefix, uri in nsmap.items()
+ ])
+ return nsmap, namespacedefs
+
+
+def parse(inFileName, silence=False, print_warnings=True):
+ global CapturedNsmap_
+ gds_collector = GdsCollector_()
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ sys.stdout.write('<?xml version="1.0" ?>\n')
+ rootObj.export(
+ sys.stdout, 0, name_=rootTag,
+ namespacedef_=namespacedefs,
+ pretty_print=True)
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def parseEtree(inFileName, silence=False, print_warnings=True,
+ mapping=None, nsmap=None):
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ gds_collector = GdsCollector_()
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ # Enable Python to collect the space used by the DOM.
+ if mapping is None:
+ mapping = {}
+ rootElement = rootObj.to_etree(
+ None, name_=rootTag, mapping_=mapping, nsmap_=nsmap)
+ reverse_mapping = rootObj.gds_reverse_node_mapping(mapping)
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ content = etree_.tostring(
+ rootElement, pretty_print=True,
+ xml_declaration=True, encoding="utf-8")
+ sys.stdout.write(str(content))
+ sys.stdout.write('\n')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj, rootElement, mapping, reverse_mapping
+
+
+def parseString(inString, silence=False, print_warnings=True):
+ '''Parse a string, create the object tree, and export it.
+
+ Arguments:
+ - inString -- A string. This XML fragment should not start
+ with an XML declaration containing an encoding.
+ - silence -- A boolean. If False, export the object.
+ Returns -- The root object in the tree.
+ '''
+ parser = None
+ rootNode= parsexmlstring_(inString, parser)
+ gds_collector = GdsCollector_()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ if not SaveElementTreeNode:
+ rootNode = None
+ if not silence:
+ sys.stdout.write('<?xml version="1.0" ?>\n')
+ rootObj.export(
+ sys.stdout, 0, name_=rootTag,
+ namespacedef_='')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def parseLiteral(inFileName, silence=False, print_warnings=True):
+ parser = None
+ doc = parsexml_(inFileName, parser)
+ gds_collector = GdsCollector_()
+ rootNode = doc.getroot()
+ rootTag, rootClass = get_root_tag(rootNode)
+ if rootClass is None:
+ rootTag = 'DoxygenType'
+ rootClass = DoxygenType
+ rootObj = rootClass.factory()
+ rootObj.build(rootNode, gds_collector_=gds_collector)
+ # Enable Python to collect the space used by the DOM.
+ if not SaveElementTreeNode:
+ doc = None
+ rootNode = None
+ if not silence:
+ sys.stdout.write('#from index import *\n\n')
+ sys.stdout.write('import index as model_\n\n')
+ sys.stdout.write('rootObj = model_.rootClass(\n')
+ rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
+ sys.stdout.write(')\n')
+ if print_warnings and len(gds_collector.get_messages()) > 0:
+ separator = ('-' * 50) + '\n'
+ sys.stderr.write(separator)
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
+ len(gds_collector.get_messages()), ))
+ gds_collector.write_messages(sys.stderr)
+ sys.stderr.write(separator)
+ return rootObj
+
+
+def main():
+ args = sys.argv[1:]
+ if len(args) == 1:
+ parse(args[0])
+ else:
+ usage()
+
+
+if __name__ == '__main__':
+ #import pdb; pdb.set_trace()
+ main()
+
+RenameMappings_ = {
+}
+
+#
+# Mapping of namespaces to types defined in them
+# and the file in which each is defined.
+# simpleTypes are marked "ST" and complexTypes "CT".
+NamespaceToDefMappings_ = {'http://www.w3.org/XML/1998/namespace': []}
+
+__all__ = [
+ "CompoundType",
+ "DoxygenType",
+ "MemberType"
+]
diff --git a/addon/doxmlparser/examples/CMakeLists.txt b/addon/doxmlparser/examples/CMakeLists.txt
deleted file mode 100644
index 1e08d36..0000000
--- a/addon/doxmlparser/examples/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-add_subdirectory(metrics)
diff --git a/addon/doxmlparser/examples/dump/dump.py b/addon/doxmlparser/examples/dump/dump.py
new file mode 100644
index 0000000..240c14a
--- /dev/null
+++ b/addon/doxmlparser/examples/dump/dump.py
@@ -0,0 +1,31 @@
+# An minimal example showing how to use the python doxmlparser module to read
+# the XML output generated by doxygen for a project and dump it to the output again.
+
+import sys
+
+import doxmlparser
+
+# process a compound file and export the results to stdout
+def parse_compound(inDirName,baseName):
+ doxmlparser.compound.parse(inDirName+"/"+baseName+".xml",False)
+
+# process the index file and export the results to stdout
+def parse_index(inDirName):
+ rootObj = doxmlparser.index.parse(inDirName+"/index.xml",False)
+ for compound in rootObj.get_compound(): # for each compound defined in the index
+ parse_compound(inDirName,compound.get_refid())
+
+def usage():
+ print("Usage {0} <xml_output_dir>".format(sys.argv[0]))
+ sys.exit(1)
+
+def main():
+ args = sys.argv[1:]
+ if len(args)==1:
+ parse_index(args[0])
+ else:
+ usage()
+
+if __name__ == '__main__':
+ main()
+
diff --git a/addon/doxmlparser/examples/metrics/CMakeLists.txt b/addon/doxmlparser/examples/metrics/CMakeLists.txt
deleted file mode 100644
index 7e99a08..0000000
--- a/addon/doxmlparser/examples/metrics/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-include_directories(
- ../../include
- ${PROJECT_SOURCE_DIR}/libversion
-)
-
-add_executable(doxmlparser_metrics
-main.cpp
-)
-
-
-target_link_libraries(doxmlparser_metrics
- doxmlparser
- doxygen_version
- qtools
- ${COVERAGE_LINKER_FLAGS}
-)
-
diff --git a/addon/doxmlparser/examples/metrics/main.cpp b/addon/doxmlparser/examples/metrics/main.cpp
deleted file mode 100644
index 9e301b1..0000000
--- a/addon/doxmlparser/examples/metrics/main.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2006 by Dimitri van 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.
- *
- */
-
-/*! \mainpage Metrics
- * This is a small example that shows how to use doxygen's XML output and
- * the doxmlparser library. The example shows some very basic code metrics.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <doxmlintf.h>
-#include "version.h"
-
-bool isDocumented(IDocRoot *brief,IDocRoot *detailed)
-{
- bool found=false;
- if (brief)
- {
- IDocIterator *docIt = brief->contents();
- if (docIt->current()) // method has brief description
- {
- found=true;
- }
- docIt->release();
- }
- if (detailed && !found)
- {
- IDocIterator *docIt = detailed->contents();
- if (docIt->current())
- {
- found=true;
- }
- docIt->release();
- }
- return found;
-}
-
-int main(int argc,char **argv)
-{
- int locArgc = argc;
-
- if (locArgc == 2)
- {
- if (!strcmp(argv[1],"--help"))
- {
- printf("Usage: %s xml_dir\n",argv[0]);
- exit(0);
- }
- else if (!strcmp(argv[1],"--version"))
- {
- printf("%s version: %s\n",argv[0],getFullVersion());
- exit(0);
- }
- }
-
- if (locArgc!=2)
- {
- printf("Usage: %s xml_dir\n",argv[0]);
- exit(1);
- }
-
- int numClasses=0;
- int numDocClasses=0;
- int numStructs=0;
- int numUnions=0;
- int numInterfaces=0;
- int numExceptions=0;
- int numNamespaces=0;
- int numFiles=0;
- int numGroups=0;
- int numPages=0;
- int numPackages=0;
- int numPubMethods=0;
- int numProMethods=0;
- int numPriMethods=0;
- int numDocPubMethods=0;
- int numDocProMethods=0;
- int numDocPriMethods=0;
- int numFunctions=0;
- int numAttributes=0;
- int numVariables=0;
- int numDocFunctions=0;
- int numDocAttributes=0;
- int numDocVariables=0;
- int numParams=0;
-
- IDoxygen *dox = createObjectModel();
-
- dox->setDebugLevel(0);
-
- if (!dox->readXMLDir(argv[1]))
- {
- printf("Error reading %s/index.xml\n",argv[1]);
- exit(1);
- }
-
- ICompoundIterator *cli = dox->compounds();
- ICompound *comp;
- for (cli->toFirst();(comp=cli->current());cli->toNext())
- {
- printf("Processing %s...\n",comp->name()->latin1());
- bool hasDocs = isDocumented(comp->briefDescription(),comp->detailedDescription());
- switch (comp->kind())
- {
- case ICompound::Class:
- numClasses++;
- if (hasDocs) numDocClasses++;
- break;
- case ICompound::Struct: numStructs++; break;
- case ICompound::Union: numUnions++; break;
- case ICompound::Interface: numInterfaces++; break;
- case ICompound::Exception: numExceptions++; break;
- case ICompound::Namespace: numNamespaces++; break;
- case ICompound::File: numFiles++; break;
- case ICompound::Group: numGroups++; break;
- case ICompound::Page: numPages++; break;
- default: break;
- }
-
- ISectionIterator *sli = comp->sections();
- ISection *sec;
- for (sli->toFirst();(sec=sli->current());sli->toNext())
- {
- IMemberIterator *mli = sec->members();
- IMember *mem;
- for (mli->toFirst();(mem=mli->current());mli->toNext())
- {
- IParamIterator *pli = mem->parameters();
- IParam *par;
- if (comp->kind()==ICompound::Class ||
- comp->kind()==ICompound::Struct ||
- comp->kind()==ICompound::Interface
- )
- {
- if (mem->kind()==IMember::Function ||
- mem->kind()==IMember::Prototype ||
- mem->kind()==IMember::Signal ||
- mem->kind()==IMember::Slot ||
- mem->kind()==IMember::DCOP
- ) // is a "method"
- {
- if (mem->section()->isPublic())
- {
- numPubMethods++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocPubMethods++;
- }
- }
- else if (mem->section()->isProtected())
- {
- numProMethods++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocProMethods++;
- }
- }
- else if (mem->section()->isPrivate())
- {
- numPriMethods++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocPriMethods++;
- }
- }
- }
- else if (mem->kind()==IMember::Variable ||
- mem->kind()==IMember::Property
- ) // is an "attribute"
- {
- numAttributes++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocAttributes++;
- }
- }
- }
- else if (comp->kind()==ICompound::File ||
- comp->kind()==ICompound::Namespace
- )
- {
- if (mem->kind()==IMember::Function ||
- mem->kind()==IMember::Prototype ||
- mem->kind()==IMember::Signal ||
- mem->kind()==IMember::Slot ||
- mem->kind()==IMember::DCOP
- ) // is a "method"
- {
- numFunctions++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocFunctions++;
- }
- }
- else if (mem->kind()==IMember::Variable ||
- mem->kind()==IMember::Property
- ) // is an "attribute"
- {
- numVariables++;
- if (isDocumented(mem->briefDescription(),mem->detailedDescription()))
- {
- numDocVariables++;
- }
- }
- }
-
- for (pli->toFirst();(par=pli->current());pli->toNext())
- {
- numParams++;
- }
- const char *type = mem->typeString()->latin1();
- if (type && strcmp(type, "void"))
- {
- numParams++; // count non-void return types as well
- }
- pli->release();
- }
- mli->release();
- }
- sli->release();
-
- comp->release();
- }
- cli->release();
-
- dox->release();
-
- int numMethods = numPubMethods+numProMethods+numPriMethods;
- int numDocMethods = numDocPubMethods+numDocProMethods+numDocPriMethods;
-
- printf("Metrics:\n");
- printf("-----------------------------------\n");
- if (numClasses>0) printf("Classes: %10d (%d documented)\n",numClasses,numDocClasses);
- if (numStructs>0) printf("Structs: %10d\n",numStructs);
- if (numUnions>0) printf("Unions: %10d\n",numUnions);
- if (numInterfaces>0) printf("Interfaces: %10d\n",numInterfaces);
- if (numExceptions>0) printf("Exceptions: %10d\n",numExceptions);
- if (numNamespaces>0) printf("Namespaces: %10d\n",numNamespaces);
- if (numFiles>0) printf("Files: %10d\n",numFiles);
- if (numGroups>0) printf("Groups: %10d\n",numGroups);
- if (numPages>0) printf("Pages: %10d\n",numPages);
- if (numPackages>0) printf("Packages: %10d\n",numPackages);
- if (numMethods>0) printf("Methods: %10d (%d documented)\n",numMethods,numDocMethods);
- if (numPubMethods>0) printf(" Public: %10d (%d documented)\n",numPubMethods,numDocPubMethods);
- if (numProMethods>0) printf(" Protected: %10d (%d documented)\n",numProMethods,numDocProMethods);
- if (numPriMethods>0) printf(" Private: %10d (%d documented)\n",numPriMethods,numDocPriMethods);
- if (numFunctions>0) printf("Functions: %10d (%d documented)\n",numFunctions,numDocFunctions);
- if (numAttributes>0) printf("Attributes: %10d (%d documented)\n",numAttributes,numDocAttributes);
- if (numVariables>0) printf("Variables: %10d (%d documented)\n",numVariables,numDocVariables);
- if (numParams>0) printf("Params: %10d\n",numParams);
- printf("-----------------------------------\n");
- if (numClasses>0) printf("Avg. #methods/compound: %10f\n",(double)numMethods/(double)numClasses);
- if (numMethods>0) printf("Avg. #params/method: %10f\n",(double)numParams/(double)numMethods);
- printf("-----------------------------------\n");
-
- return 0;
-}
-
diff --git a/addon/doxmlparser/examples/metrics/metrics.py b/addon/doxmlparser/examples/metrics/metrics.py
new file mode 100644
index 0000000..a83e16f
--- /dev/null
+++ b/addon/doxmlparser/examples/metrics/metrics.py
@@ -0,0 +1,225 @@
+# An example showing how to use the python doxmlparser module to extract some metrics from
+# the XML output generated by doxygen for a project.
+
+import sys
+
+import doxmlparser
+
+from doxmlparser.compound import DoxCompoundKind, DoxMemberKind, DoxSectionKind, MixedContainer
+
+class Metrics:
+ def __init__(self):
+ self.numClasses = 0
+ self.numDocClasses = 0
+ self.numStructs = 0
+ self.numUnions = 0
+ self.numInterfaces = 0
+ self.numExceptions = 0
+ self.numNamespaces = 0
+ self.numFiles = 0
+ self.numDocFiles = 0
+ self.numGroups = 0
+ self.numPages = 0
+ self.numPubMethods = 0
+ self.numDocPubMethods = 0
+ self.numProMethods = 0
+ self.numDocProMethods = 0
+ self.numPriMethods = 0
+ self.numDocPriMethods = 0
+ self.numAttributes = 0
+ self.numDocAttributes = 0
+ self.numFunctions = 0
+ self.numDocFunctions = 0
+ self.numVariables = 0
+ self.numDocVariables = 0
+ self.numParams = 0
+ def print(self):
+ numMethods = self.numPubMethods + self.numProMethods + self.numPriMethods
+ numDocMethods = self.numDocPubMethods + self.numDocProMethods + self.numDocPriMethods
+ print("Metrics:");
+ print("-----------------------------------");
+ if self.numClasses>0:
+ print("Classes: {:=10} ({} documented)".format(self.numClasses,self.numDocClasses))
+ if self.numStructs>0:
+ print("Structs: {:=10}".format(self.numStructs))
+ if self.numUnions>0:
+ print("Unions: {:=10}".format(self.numUnions))
+ if self.numExceptions>0:
+ print("Exceptions: {:=10}".format(self.numExceptions))
+ if self.numNamespaces>0:
+ print("Namespaces: {:=10}".format(self.numNamespaces))
+ if self.numFiles>0:
+ print("Files: {:=10} ({} documented)".format(self.numFiles,self.numDocFiles))
+ if self.numGroups>0:
+ print("Groups: {:=10}".format(self.numGroups))
+ if self.numPages>0:
+ print("Pages: {:=10}".format(self.numPages))
+ if numMethods>0:
+ print("Methods: {:=10} ({} documented)".format(numMethods,numDocMethods))
+ if self.numPubMethods>0:
+ print(" Public: {:=10} ({} documented)".format(self.numPubMethods,self.numDocPubMethods))
+ if self.numProMethods>0:
+ print(" Protected: {:=10} ({} documented)".format(self.numProMethods,self.numDocProMethods))
+ if self.numPriMethods>0:
+ print(" Private: {:=10} ({} documented)".format(self.numPriMethods,self.numDocPriMethods))
+ if self.numFunctions>0:
+ print("Functions: {:=10} ({} documented)".format(self.numFunctions,self.numDocFunctions))
+ if self.numAttributes>0:
+ print("Attributes: {:=10} ({} documented)".format(self.numAttributes,self.numDocAttributes))
+ if self.numVariables>0:
+ print("Variables: {:=10} ({} documented)".format(self.numVariables,self.numDocVariables))
+ if self.numParams>0:
+ print("Params: {:=10}".format(self.numParams))
+ print("-----------------------------------");
+ if self.numClasses>0:
+ print("Avg. #methods/compound: {:=10}".format(float(numMethods)/float(self.numClasses)))
+ if numMethods>0:
+ print("Avg. #params/method: {:=10}".format(float(self.numParams)/float(numMethods)))
+ print("-----------------------------------");
+
+
+def description_is_empty(description):
+ for content in description.content_:
+ if content.getCategory()==MixedContainer.CategoryText:
+ if not content.getValue().isspace():
+ return False # non space-only text
+ elif not content.getCategory()==MixedContainer.CategoryNone:
+ return False # some internal object like a paragraph
+ return True
+
+def is_documented(definition):
+ return not description_is_empty(definition.get_briefdescription()) or \
+ not description_is_empty(definition.get_detaileddescription())
+
+def section_is_protected(sectionkind):
+ return sectionkind in [DoxSectionKind.PROTECTEDTYPE,
+ DoxSectionKind.PROTECTEDFUNC,
+ DoxSectionKind.PROTECTEDATTRIB,
+ DoxSectionKind.PROTECTEDSLOT,
+ DoxSectionKind.PROTECTEDSTATICFUNC,
+ DoxSectionKind.PROTECTEDSTATICATTRIB]
+
+def section_is_private(sectionkind):
+ return sectionkind in [DoxSectionKind.PRIVATETYPE,
+ DoxSectionKind.PRIVATEFUNC,
+ DoxSectionKind.PRIVATEATTRIB,
+ DoxSectionKind.PRIVATESLOT,
+ DoxSectionKind.PRIVATESTATICFUNC,
+ DoxSectionKind.PRIVATESTATICATTRIB]
+
+def section_is_public(sectionkind):
+ return not section_is_protected(sectionkind) and not section_is_private(sectionkind)
+
+def linked_text_to_string(linkedtext):
+ str=''
+ if linkedtext:
+ for text_or_ref in linkedtext.content_:
+ if text_or_ref.getCategory()==MixedContainer.CategoryText:
+ str+=text_or_ref.getValue()
+ else:
+ str+=text_or_ref.getValue().get_valueOf_()
+ return str
+
+def parse_members(compounddef,sectiondef,metrics):
+ functionLikeKind = [DoxMemberKind.FUNCTION,
+ DoxMemberKind.PROTOTYPE,
+ DoxMemberKind.SIGNAL,
+ DoxMemberKind.SLOT,
+ DoxMemberKind.DCOP]
+ variableLikeKind = [DoxMemberKind.VARIABLE, DoxMemberKind.PROPERTY]
+ for memberdef in sectiondef.get_memberdef():
+ if compounddef.get_kind() in [DoxCompoundKind.CLASS, DoxCompoundKind.STRUCT, DoxCompoundKind.INTERFACE]:
+ if memberdef.get_kind() in functionLikeKind:
+ if section_is_public(sectiondef.get_kind()):
+ metrics.numPubMethods+=1
+ if is_documented(memberdef):
+ metrics.numDocPubMethods+=1
+ elif section_is_protected(sectiondef.get_kind()):
+ metrics.numProMethods+=1
+ if is_documented(memberdef):
+ metrics.numDocProMethods+=1
+ elif section_is_private(sectiondef.get_kind()):
+ metrics.numPriMethods+=1
+ if is_documented(memberdef):
+ metrics.numDocPriMethods+=1
+ elif memberdef.get_kind() in variableLikeKind:
+ metrics.numAttributes+=1
+ if is_documented(memberdef):
+ metrics.numDocAttributes+=1
+ elif compounddef.get_kind() in [DoxCompoundKind.FILE, DoxCompoundKind.NAMESPACE]:
+ if memberdef.get_kind() in functionLikeKind:
+ metrics.numFunctions+=1
+ if is_documented(memberdef):
+ metrics.numDocFunctions+=1
+ elif memberdef.get_kind() in variableLikeKind:
+ metrics.numVariables+=1
+ if is_documented(memberdef):
+ metrics.numDocVariables+=1
+ #for param in memberdef.get_param():
+ # name = ''
+ # if param.get_defname():
+ # name = param.get_defname()
+ # if param.get_declname():
+ # name = param.get_declname()
+ # print("param '{}':'{}'".format(linked_text_to_string(param.get_type()),name))
+ metrics.numParams+=len(memberdef.get_param())
+ if memberdef.get_type() and memberdef.get_type()!="void" and linked_text_to_string(memberdef.get_type()):
+ metrics.numParams+=1 # count non-void return types as well
+ #print("returns '{}'".format(linked_text_to_string(memberdef.get_type())))
+
+def parse_sections(compounddef,metrics):
+ for sectiondef in compounddef.get_sectiondef():
+ parse_members(compounddef,sectiondef,metrics)
+
+def parse_compound(inDirName,baseName,metrics):
+ rootObj = doxmlparser.compound.parse(inDirName+"/"+baseName+".xml",True)
+ for compounddef in rootObj.get_compounddef():
+ kind = compounddef.get_kind()
+ if kind==DoxCompoundKind.CLASS:
+ metrics.numClasses+=1
+ if is_documented(compounddef):
+ metrics.numDocClasses+=1
+ elif kind==DoxCompoundKind.STRUCT:
+ metrics.numStructs+=1
+ elif kind==DoxCompoundKind.UNION:
+ metrics.numUnions+=1
+ elif kind==DoxCompoundKind.INTERFACE:
+ metrics.numInterfaces+=1
+ elif kind==DoxCompoundKind.EXCEPTION:
+ metrics.numExceptions+=1
+ elif kind==DoxCompoundKind.NAMESPACE:
+ metrics.numNamespaces+=1
+ elif kind==DoxCompoundKind.FILE:
+ metrics.numFiles+=1
+ if is_documented(compounddef):
+ metrics.numDocFiles+=1
+ elif kind==DoxCompoundKind.GROUP:
+ metrics.numGroups+=1
+ elif kind==DoxCompoundKind.PAGE:
+ metrics.numPages+=1
+ else:
+ continue
+ parse_sections(compounddef,metrics)
+
+def parse_index(inDirName):
+ metrics = Metrics()
+ rootObj = doxmlparser.index.parse(inDirName+"/index.xml",True)
+ for compound in rootObj.get_compound(): # for each compound defined in the index
+ print("Processing {0}...".format(compound.get_name()))
+ parse_compound(inDirName,compound.get_refid(),metrics)
+ metrics.print()
+
+def usage():
+ print("Usage {0} <xml_output_dir>".format(sys.argv[0]))
+ sys.exit(1)
+
+def main():
+ args = sys.argv[1:]
+ if len(args)==1:
+ parse_index(args[0])
+ else:
+ usage()
+
+if __name__ == '__main__':
+ main()
+
diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h
deleted file mode 100644
index cb4a9eb..0000000
--- a/addon/doxmlparser/include/doxmlintf.h
+++ /dev/null
@@ -1,1141 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _DOXMLINTF_H
-#define _DOXMLINTF_H
-
-/*! \file
- * \brief The interface to the object model provided by the XML parser
- * library.
- *
- * To start using this library one calls createObjectModel() and then
- * uses the returned IDoxygen interface to read doxygen generated
- * XML output and navigate through the information contained in it.
- *
- * @see createObjectModel()
- */
-
-class IMember;
-class IDocIterator;
-class ICompound;
-class ISection;
-class INode;
-class IDocInternal;
-class IDocRoot;
-
-#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {}
-
-/*! \brief Read only interface to a string.
- */
-class IString
-{
- public:
- VIRTUAL_DESTRUCTOR(IString)
- /*! Returns a latin1 character representation of the string. */
- virtual const char *latin1() const = 0;
- /*! Returns a utf8 character representation of the string. */
- virtual const char *utf8() const = 0;
- /*! Returns a 16-bit unicode character representation of the character at
- * position \a index in the string. The first character is at index 0.
- */
- virtual unsigned short unicodeCharAt(int index) const = 0;
- /*! Returns true if this string is empty or false otherwise */
- virtual bool isEmpty() const = 0;
- /*! Returns the number of characters in the string. */
- virtual int length() const = 0;
-};
-
-/*! \brief Base interface for hyperlinked text
- *
- * Depending on the result of kind() the interface is extended by
- * ILT_Text or ILT_Ref.
- */
-class ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILinkedText)
- enum Kind { Kind_Text, Kind_Ref };
- virtual Kind kind() const = 0;
-};
-
-/*! \brief Plain text fragment.
- */
-class ILT_Text : public ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILT_Text)
- virtual const IString *text() const = 0;
-};
-
-/*! \brief Reference to an object.
- */
-class ILT_Ref : public ILinkedText
-{
- public:
- VIRTUAL_DESTRUCTOR(ILT_Ref)
- enum TargetKind { Member, Compound };
- virtual const IString *id() const = 0;
- virtual TargetKind targetKind() const = 0;
- virtual const IString *external() const = 0;
- virtual const IString *text() const = 0;
-};
-
-/*! \brief Iterates over a list of ILinkedText fragments.
- */
-class ILinkedTextIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ILinkedTextIterator)
- virtual ILinkedText *toFirst() = 0;
- virtual ILinkedText *toLast() = 0;
- virtual ILinkedText *toNext() = 0;
- virtual ILinkedText *toPrev() = 0;
- virtual ILinkedText *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief Representation of a parameter of a function. */
-class IParam
-{
- public:
- VIRTUAL_DESTRUCTOR(IParam)
- virtual ILinkedTextIterator *type() const = 0;
- virtual const IString * declarationName() const = 0;
- virtual const IString * definitionName() const = 0;
- virtual const IString * attrib() const = 0;
- virtual const IString * arraySpecifier() const = 0;
- virtual ILinkedTextIterator *defaultValue() const = 0;
- virtual IDocRoot *briefDescription() const = 0;
-};
-
-class IParamIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IParamIterator)
- virtual IParam *toFirst() = 0;
- virtual IParam *toLast() = 0;
- virtual IParam *toNext() = 0;
- virtual IParam *toPrev() = 0;
- virtual IParam *current() const = 0;
- virtual void release() = 0;
-};
-
-class IMemberReference
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberReference)
- virtual IMember *member() const = 0;
- virtual const IString * name() const = 0;
- virtual const IString * scope() const = 0;
- virtual const IString * protection() const = 0;
- virtual const IString * virtualness() const = 0;
- virtual const IString * ambiguityScope() const = 0;
-};
-
-class IMemberReferenceIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberReferenceIterator)
- virtual IMemberReference *toFirst() = 0;
- virtual IMemberReference *toLast() = 0;
- virtual IMemberReference *toNext() = 0;
- virtual IMemberReference *toPrev() = 0;
- virtual IMemberReference *current() const = 0;
- virtual void release() = 0;
-};
-
-class IDoc
-{
- public:
- VIRTUAL_DESTRUCTOR(IDoc)
- enum Kind
- {
- Invalid = 0, // 0
- Para, // 1 -> IDocPara
- Text, // 2 -> IDocText
- MarkupModifier, // 3 -> IDocMarkupModifier
- ItemizedList, // 4 -> IDocItemizedList
- OrderedList, // 5 -> IDocOrderedList
- ListItem, // 6 -> IDocListItem
- ParameterList, // 7 -> IDocParameterList
- Parameter, // 8 -> IDocParameter
- SimpleSect, // 9 -> IDocSimpleSect
- Title, // 10 -> IDocTitle
- Ref, // 11 -> IDocRef
- VariableList, // 12 -> IDocVariableList
- VariableListEntry, // 13 -> IDocVariableListEntry
- HRuler, // 14 -> IDocHRuler
- LineBreak, // 15 -> IDocLineBreak
- ULink, // 16 -> IDocULink
- EMail, // 17 -> IDocEMail
- Link, // 18 -> IDocLink
- ProgramListing, // 19 -> IDocProgramListing
- CodeLine, // 20 -> IDocCodeLine
- Highlight, // 21 -> IDocHighlight
- Formula, // 22 -> IDocFormula
- Image, // 23 -> IDocImage
- DotFile, // 24 -> IDocDotFile
- IndexEntry, // 25 -> IDocIndexEntry
- Table, // 26 -> IDocTable
- Row, // 27 -> IDocRow
- Entry, // 28 -> IDocEntry
- Section, // 29 -> IDocSection
- Verbatim, // 30 -> IDocVerbatim
- Copy, // 31 -> IDocCopy
- TocList, // 32 -> IDocTocList
- TocItem, // 33 -> IDocTocItem
- Anchor, // 34 -> IDocAnchor
- Symbol, // 35 -> IDocSymbol
- Internal, // 36 -> IDocInternal
- Root, // 37 -> IDocRoot
- ParameterItem // 38 -> IDocParameterItem
- };
- virtual Kind kind() const = 0;
-};
-
-class IDocMarkup : public IDoc
-{
- public:
- enum Markup
- {
- Normal = 0x000,
- Bold = 0x001,
- Emphasis = 0x002,
- ComputerOutput = 0x004,
- Subscript = 0x008,
- Superscript = 0x010,
- SmallFont = 0x020,
- Center = 0x040,
- Preformatted = 0x080,
- Heading = 0x100
- };
-};
-
-class IDocPara : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocText : public IDocMarkup
-{
- public:
- virtual const IString * text() const = 0;
- virtual int markup() const = 0;
- virtual int headingLevel() const = 0;
-};
-
-class IDocMarkupModifier : public IDoc
-{
- public:
- virtual bool enabled() const = 0;
- virtual int markup() const = 0;
- virtual int headingLevel() const = 0;
-};
-
-class IDocItemizedList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocOrderedList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocListItem : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocParameterList : public IDoc
-{
- public:
- enum Types { Param, RetVal, Exception };
- virtual Types sectType() const = 0;
- virtual IDocIterator *params() const = 0;
-};
-
-class IDocParameterItem : public IDoc
-{
- public:
- virtual IDocIterator *paramNames() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocParameter : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
-};
-
-class IDocTitle : public IDoc
-{
- public:
- virtual IDocIterator *title() const = 0;
-};
-
-class IDocSimpleSect : public IDoc
-{
- public:
- enum Types { Invalid = 0,
- See, Return, Author, Version,
- Since, Date, Bug, Note,
- Warning, Par, Deprecated, Pre,
- Post, Invar, Remark, Attention,
- Todo, Test, RCS, EnumValues,
- Examples
- };
- virtual Types type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual IDocTitle *title() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocRef : public IDoc
-{
- public:
- enum TargetKind { Member, Compound };
- virtual const IString * refId() const = 0;
- virtual TargetKind targetKind() const = 0;
- virtual const IString * external() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocVariableList : public IDoc
-{
- public:
- virtual IDocIterator *entries() const = 0;
-};
-
-class IDocVariableListEntry : public IDoc
-{
- public:
- virtual ILinkedTextIterator * term() const = 0;
- virtual IDocPara *description() const = 0;
-};
-
-class IDocHRuler : public IDoc
-{
-};
-
-class IDocLineBreak : public IDoc
-{
-};
-
-class IDocULink : public IDoc
-{
- public:
- virtual const IString * url() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocEMail : public IDoc
-{
- public:
- virtual const IString * address() const = 0;
-};
-
-class IDocLink : public IDoc
-{
- public:
- virtual const IString * refId() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocProgramListing : public IDoc
-{
- public:
- virtual IDocIterator *codeLines() const = 0;
-};
-
-class IDocCodeLine : public IDoc
-{
- public:
- virtual int lineNumber() const = 0;
- virtual const IString * refId() const = 0;
- virtual IDocIterator *codeElements() const = 0;
-};
-
-class IDocHighlight : public IDoc
-{
- public:
- enum HighlightKind
- { Invalid=0,
- Comment, Keyword,
- KeywordType, KeywordFlow, CharLiteral,
- StringLiteral, Preprocessor
- };
- virtual HighlightKind highlightKind() const = 0;
- virtual IDocIterator *codeElements() const = 0;
-};
-
-class IDocFormula : public IDoc
-{
- public:
- virtual const IString * id() const = 0;
- virtual const IString * text() const = 0;
-};
-
-class IDocImage : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocDotFile : public IDoc
-{
- public:
- virtual const IString * name() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocIndexEntry : public IDoc
-{
- public:
- virtual const IString * primary() const = 0;
- virtual const IString * secondary() const = 0;
-};
-
-class IDocTable : public IDoc
-{
- public:
- virtual IDocIterator *rows() const = 0;
- virtual int numColumns() const = 0;
- virtual const IString * caption() const = 0;
-};
-
-class IDocRow : public IDoc
-{
- public:
- virtual IDocIterator *entries() const = 0;
-};
-
-class IDocEntry : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocSection : public IDoc
-{
- public:
- virtual const IString * id() const = 0;
- virtual int level() const = 0;
- virtual IDocTitle *title() const = 0;
- virtual IDocIterator *paragraphs() const = 0;
- virtual IDocIterator *subSections() const = 0;
- virtual IDocInternal *internal() const = 0;
-};
-
-class IDocInternal : public IDoc
-{
- public:
- virtual IDocIterator *paragraphs() const = 0;
- virtual IDocIterator *subSections() const = 0;
-};
-
-class IDocTocList : public IDoc
-{
- public:
- virtual IDocIterator *elements() const = 0;
-};
-
-class IDocTocItem : public IDoc
-{
- public:
- virtual const IString *id() const = 0;
- virtual const IString *title() const = 0;
-};
-
-class IDocCopy : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
-};
-
-class IDocVerbatim : public IDoc
-{
- public:
- enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim };
- virtual const IString *text() const = 0;
- virtual Types type() const = 0;
-};
-
-class IDocAnchor : public IDoc
-{
- public:
- virtual const IString *id() const = 0;
-};
-
-class IDocSymbol : public IDoc
-{
- public:
- enum Types
- { Invalid = 0,
- Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy
- };
- virtual Types type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual char letter() const = 0;
-};
-
-class IDocRoot : public IDoc
-{
- public:
- virtual IDocIterator *contents() const = 0;
- virtual IDocInternal *internal() const = 0;
-};
-
-class IDocIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IDocIterator)
- virtual IDoc *toFirst() = 0;
- virtual IDoc *toLast() = 0;
- virtual IDoc *toNext() = 0;
- virtual IDoc *toPrev() = 0;
- virtual IDoc *current() const = 0;
- virtual void release() = 0;
-};
-
-class IEdgeLabel
-{
- public:
- VIRTUAL_DESTRUCTOR(IEdgeLabel)
- virtual const IString * label() const = 0;
-};
-
-class IEdgeLabelIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IEdgeLabelIterator)
- virtual IEdgeLabel *toFirst() = 0;
- virtual IEdgeLabel *toLast() = 0;
- virtual IEdgeLabel *toNext() = 0;
- virtual IEdgeLabel *toPrev() = 0;
- virtual IEdgeLabel *current() const = 0;
- virtual void release() = 0;
-};
-
-class IChildNode
-{
- public:
- VIRTUAL_DESTRUCTOR(IChildNode)
- enum NodeRelation { PublicInheritance, ProtectedInheritance,
- PrivateInheritance, Usage, TemplateInstance
- };
- virtual INode * node() const = 0;
- virtual NodeRelation relation() const = 0;
- virtual const IString * relationString() const = 0;
- virtual IEdgeLabelIterator *edgeLabels() const = 0;
-};
-
-class IChildNodeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IChildNodeIterator)
- virtual IChildNode *toFirst() = 0;
- virtual IChildNode *toLast() = 0;
- virtual IChildNode *toNext() = 0;
- virtual IChildNode *toPrev() = 0;
- virtual IChildNode *current() const = 0;
- virtual void release() = 0;
-};
-
-class INode
-{
- public:
- VIRTUAL_DESTRUCTOR(INode)
- virtual const IString * id() const = 0;
- virtual const IString * label() const = 0;
- virtual const IString * linkId() const = 0;
- virtual IChildNodeIterator *children() const = 0;
-};
-
-class INodeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(INodeIterator)
- virtual INode *toFirst() = 0;
- virtual INode *toLast() = 0;
- virtual INode *toNext() = 0;
- virtual INode *toPrev() = 0;
- virtual INode *current() const = 0;
- virtual void release() = 0;
-};
-
-class IGraph
-{
- public:
- VIRTUAL_DESTRUCTOR(IGraph)
- virtual INodeIterator *nodes() const = 0;
-};
-
-class IMember
-{
- public:
- VIRTUAL_DESTRUCTOR(IMember)
- enum MemberKind { Invalid=0,
- Define, Property, Variable, Typedef, Enum,
- Function, Signal, Prototype, Friend, DCOP, Slot,
- EnumValue
- };
- virtual ICompound *compound() const = 0;
- virtual ISection *section() const = 0;
- virtual MemberKind kind() const = 0;
- virtual const IString * kindString() const = 0;
- virtual const IString * id() const = 0;
- virtual const IString * protection() const = 0;
- virtual const IString * virtualness() const = 0;
- virtual ILinkedTextIterator *type() const = 0;
- virtual const IString * typeString() const = 0;
- virtual const IString * name() const = 0;
- virtual const IString * readAccessor() const = 0;
- virtual const IString * writeAccessor() const = 0;
- virtual const IString * definition() const = 0;
- virtual const IString * argsstring() const = 0;
- virtual bool isConst() const = 0;
- virtual bool isVolatile() const = 0;
- virtual bool isStatic() const = 0;
- virtual bool isExplicit() const = 0;
- virtual bool isInline() const = 0;
- virtual bool isMutable() const = 0;
- virtual bool isReadable() const = 0;
- virtual bool isWritable() const = 0;
- virtual IParamIterator *parameters() const = 0;
- virtual IParamIterator *templateParameters() const = 0;
- virtual ILinkedTextIterator *initializer() const = 0;
- virtual ILinkedTextIterator *exceptions() const = 0;
- virtual IMemberReferenceIterator *references() const = 0;
- virtual IMemberReferenceIterator *referencedBy() const = 0;
- virtual const IString *bodyFile() const = 0;
- virtual int bodyStart() const = 0;
- virtual int bodyEnd() const = 0;
- virtual const IString * definitionFile() const = 0;
- virtual int definitionLine() const = 0;
- virtual IMemberReference *reimplements() const = 0;
- virtual IMemberReferenceIterator *reimplementedBy() const = 0;
- virtual IDocRoot *briefDescription() const = 0;
- virtual IDocRoot *detailedDescription() const = 0;
- virtual IDocRoot *inbodyDescription() const = 0;
-};
-
-class IDefine : public IMember
-{
- public:
-};
-
-class IProperty : public IMember
-{
- public:
-};
-
-class IVariable : public IMember
-{
- public:
-};
-
-class ITypedef : public IMember
-{
- public:
-};
-
-class IFunction : public IMember
-{
- public:
-};
-
-class ISignal : public IMember
-{
- public:
-};
-
-class IPrototype : public IMember
-{
- public:
-};
-
-class IFriend : public IMember
-{
- public:
-};
-
-class IDCOP : public IMember
-{
- public:
-};
-
-class ISlot : public IMember
-{
- public:
-};
-
-class IEnumValue : public IMember
-{
- public:
- virtual const IString * name() const = 0;
-};
-
-/*! \brief Include relation
- */
-class IInclude
-{
- public:
- VIRTUAL_DESTRUCTOR(IInclude)
- virtual const IString * name() const = 0;
- virtual const IString * refId() const = 0;
- virtual bool isLocal() const = 0;
-};
-
-class IIncludeIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IIncludeIterator)
- virtual IInclude *toFirst() = 0;
- virtual IInclude *toLast() = 0;
- virtual IInclude *toNext() = 0;
- virtual IInclude *toPrev() = 0;
- virtual IInclude *current() const = 0;
- virtual void release() = 0;
-};
-
-class IMemberIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IMemberIterator)
- virtual IMember *toFirst() = 0;
- virtual IMember *toLast() = 0;
- virtual IMember *toNext() = 0;
- virtual IMember *toPrev() = 0;
- virtual IMember *current() const = 0;
- virtual void release() = 0;
-};
-
-class IEnum : public IMember
-{
- public:
- virtual IMemberIterator *enumValues() const = 0;
-};
-
-/*! \brief The interface to a section in the object model.
- *
- * A compound can have a number of sections, where each
- * section contains a set of members with the properties implied by
- * the section kind. The kind() method returns the kind of the section.
- * The members of the section can be accessed via members(). Apart
- * from using kind(), some of the individual properties of the section can
- * also be inspected via isStatic(), isPublic(), isProtected() and
- * isPrivate().
- */
-class ISection
-{
- public:
- VIRTUAL_DESTRUCTOR(ISection)
- /*! Possible section types */
- enum SectionKind
- { Invalid=0,
- UserDefined, //!< A user defined member group
- PubTypes, //!< Public member typedefs
- PubFuncs, //!< Public member functions
- PubAttribs, //!< Public member attributes
- PubSlots, //!< Public Qt Slots
- Signals, //!< Qt Signals
- DCOPFuncs, //!< KDE-DCOP interface functions
- Properties, //!< IDL properties
- Events, //!< C# events
- PubStatFuncs, //!< Public static member functions
- PubStatAttribs, //!< Public static attributes
- ProTypes, //!< Protected member typedefs
- ProFuncs, //!< Protected member functions
- ProAttribs, //!< Protected member attributes
- ProSlots, //!< Protected slots
- ProStatFuncs, //!< Protected static member functions
- ProStatAttribs, //!< Protected static member attributes
- PacTypes, //!< Package member typedefs
- PacFuncs, //!< Package member functions
- PacAttribs, //!< Package member attributes
- PacStatFuncs, //!< Package static member functions
- PacStatAttribs, //!< Package static member attributes
- PriTypes, //!< Private member typedefs
- PriFuncs, //!< Private member functions
- PriAttribs, //!< Private member attributes
- PriSlots, //!< Private Qt slots
- PriStatFuncs, //!< Private static member functions
- PriStatAttribs, //!< Private static member attributes
- Friend, //!< Friends
- Related, //!< Function marked as related
- Defines, //!< Preprocessor defines
- Prototypes, //!< Global function prototypes
- Typedefs, //!< Global typedefs
- Enums, //!< Enumerations
- Functions, //!< Global functions
- Variables //!< Global variables
- };
-
- /*! Returns a string representation of the value returned by kind() */
- virtual const IString * kindString() const = 0;
-
- /*! Returns what kind of section this is */
- virtual SectionKind kind() const = 0;
-
- /*! Returns the description attached to this section (for user defined
- * sections, also known as member groups).
- */
- virtual IDocRoot *description() const = 0;
-
- /*! Returns an iterator for the members of this section */
- virtual IMemberIterator *members() const = 0;
-
- /*! Returns \c true if this section contains statics */
- virtual bool isStatic() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * public section of a class
- */
- virtual bool isPublic() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * private section of a class
- */
- virtual bool isPrivate() const = 0;
-
- /*! Returns \c true if this section belongs to a
- * protected section of a class
- * */
- virtual bool isProtected() const = 0;
-};
-
-class IUserDefined : public ISection
-{
- public:
- virtual const IString * header() const = 0;
-};
-
-class ISectionIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ISectionIterator)
- virtual ISection *toFirst() = 0;
- virtual ISection *toLast() = 0;
- virtual ISection *toNext() = 0;
- virtual ISection *toPrev() = 0;
- virtual ISection *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief The interface to a compound in the object model.
- *
- * A compound has a name which can be obtained via the name() method
- * and a unique id, which is return via the id() method.
- * A compound consists zero or more members which are grouped into sections.
- * The sections() method can be used to access the individual sections.
- * Alternatively, members can be obtained by name or id. There are
- * different types of compounds. The kind() method returns what kind of
- * compound this is. Depending on the return value one can dynamically
- * cast an interface pointer to an more specialised interface that provides
- * additional methods.
- * Example:
- * \code
- * ICompound *comp=...;
- * if (comp->kind()==ICompound::Class)
- * {
- * IClass *cls = dynamic_cast<IClass*>(comp);
- * // use methods of IClass
- * }
- * \endcode
- * The documentation that is provided by a compound is available via
- * the briefDescription() and detailedDescription() methods.
- * To avoid excessive memory usage, release() should be called (once) on each
- * compound interface pointer that is no longer needed.
- */
-class ICompound
-{
- public:
- VIRTUAL_DESTRUCTOR(ICompound)
- /*! Represents the kind of compounds recognised by doxygen. */
- enum CompoundKind { Invalid=0,
- Class, Struct, Union, Interface, Protocol, Category,
- Exception, File, Namespace, Group, Page, Example, Dir
- };
-
- /*! Returns the name of this compound */
- virtual const IString * name() const = 0;
-
- /*! Returns the id of this compound. The id is a
- * unique string representing a specific compound object.
- */
- virtual const IString * id() const = 0;
-
- /*! Returns the kind of compound. See #CompoundKind for possible
- * values.
- */
- virtual CompoundKind kind() const = 0;
-
- /*! Returns a string representation of the compound kind.
- * @see kind()
- */
- virtual const IString * kindString() const = 0;
-
- /*! Returns an iterator for the different member sections in this
- * compound.
- */
- virtual ISectionIterator *sections() const = 0;
-
- /*! Returns a tree-structured representation of the brief
- * description that is attached to this compound.
- */
- virtual IDocRoot *briefDescription() const = 0;
-
- /*! Returns a tree-structured representation of the detailed
- * description that is attached to this compound.
- */
- virtual IDocRoot *detailedDescription() const = 0;
-
- /*! Returns an interface to a member given its id.
- * @param id The member id.
- */
- virtual IMember *memberById(const char * id) const = 0;
-
- /*! Returns a list of all members within the compound having a certain
- * name. Member overloading is the reason why there can be more than
- * one member.
- * @param name The name of the member.
- */
- virtual IMemberIterator *memberByName(const char * name) const = 0;
-
- /*! Decreases the reference counter for this compound. If it reaches
- * zero, the memory for the compound will be released.
- */
- virtual void release() = 0;
-};
-
-class ICompoundIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(ICompoundIterator)
- virtual void toFirst() = 0;
- virtual void toLast() = 0;
- virtual void toNext() = 0;
- virtual void toPrev() = 0;
- virtual ICompound *current() const = 0;
- virtual void release() = 0;
-};
-
-class IRelatedCompound
-{
- public:
- VIRTUAL_DESTRUCTOR(IRelatedCompound)
- enum Protection { Public, Protected, Private };
- enum Kind { Normal, Virtual };
- virtual ICompound *compound() const = 0;
- virtual Protection protection() const = 0;
- virtual Kind kind() const = 0;
- virtual const IString *name() const = 0;
-
-};
-
-class IRelatedCompoundIterator
-{
- public:
- VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator)
- virtual IRelatedCompound *toFirst() = 0;
- virtual IRelatedCompound *toLast() = 0;
- virtual IRelatedCompound *toNext() = 0;
- virtual IRelatedCompound *toPrev() = 0;
- virtual IRelatedCompound *current() const = 0;
- virtual void release() = 0;
-};
-
-/*! \brief The interface to a class in the object model.
- */
-class IClass : public ICompound
-{
- public:
- virtual IGraph *inheritanceGraph() const = 0;
- virtual IGraph *collaborationGraph() const = 0;
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
- virtual ICompoundIterator *nestedCompounds() const = 0;
- virtual IParamIterator *templateParameters() const = 0;
- virtual const IString *locationFile() const = 0;
- virtual int locationLine() const = 0;
- virtual const IString *locationBodyFile() const = 0;
- virtual int locationBodyStartLine() const = 0;
- virtual int locationBodyEndLine() const = 0;
-
- // TODO:
- // class:
- // listOfAllMembers()
- // protection()
- // isAbstract()
-};
-
-/*! \brief The interface to a struct in the object model.
- */
-class IStruct : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
- virtual const IString *locationFile() const = 0;
- virtual int locationLine() const = 0;
- virtual int locationBodyStartLine() const = 0;
- virtual int locationBodyEndLine() const = 0;
-};
-
-/*! \brief The interface to a union in the object model.
- */
-class IUnion : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! \brief The interface to a Java/IDL interface in the object model.
- */
-class IInterface : public ICompound
-{
- public:
- virtual IRelatedCompoundIterator *baseCompounds() const = 0;
- virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
-};
-
-
-/*! \brief The interface to a Java/IDL exception in the object model.
- */
-class IException : public ICompound
-{
-};
-
-/*! \brief The interface to a namespace in the object model.
- */
-class INamespace : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! \brief The interface to a file in the object model.
- */
-class IFile : public ICompound
-{
- public:
- virtual IGraph *includeDependencyGraph() const = 0;
- virtual IGraph *includedByDependencyGraph() const = 0;
- virtual IDocProgramListing *source() const = 0;
- virtual ICompoundIterator *nestedCompounds() const = 0;
-
- virtual IIncludeIterator *includes() const = 0;
- virtual IIncludeIterator *includedBy() const = 0;
-
- // ICompound *innerNamespaces()
- // ICompoundIterator *innerClasses()
-};
-
-/*! \brief The interface to a group in the object model.
- */
-class IGroup : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
- // group:
- // Title()
- // innerFile()
- // innerPage()
-};
-
-/*! \brief The interface to a page in the object model.
- */
-class IPage : public ICompound
-{
- public:
- virtual const IDocTitle *title() const = 0;
-};
-
-/** \brief Interface to a directory in the object model. */
-class IDir : public ICompound
-{
- public:
- virtual ICompoundIterator *nestedCompounds() const = 0;
-};
-
-/*! Root node of the object model. */
-class IDoxygen
-{
- public:
- VIRTUAL_DESTRUCTOR(IDoxygen)
-
- /*! Returns an iterator that can be used to iterate over the list
- * of compounds found in the project.
- */
- virtual ICompoundIterator *compounds() const = 0;
-
- /*! Returns a compound given its unique \a id. If you have a
- * compound id this function is much more efficient than iterating
- * over the compound list. Returns 0 if the id is not valid.
- */
- virtual ICompound *compoundById(const char * id) const = 0;
-
- /*! Returns a compound given its name (including the scope).
- * Returns 0 if the name is not found in the project.
- */
- virtual ICompound *compoundByName(const char * name) const = 0;
-
- /*! Returns an interface to a compound containing a member given it the
- * member's id. Given the ICompound interface one can use the same id
- * to obtain the IMember interface.
- * @param id The member id.
- */
- virtual ICompound *memberById(const char * id) const = 0;
-
- /*! Returns a list of all compounds containing at least one members
- * with a certain name. Each compound can be asked to return the
- * list of members with that name.
- * @param name The name of the member.
- */
- virtual ICompoundIterator *memberByName(const char * name) const = 0;
-
- /*! Releases the memory for the object hierarchy obtained by
- * createdObjectModel(). First release all iterators before calling
- * this function.
- */
- virtual void release() = 0;
-
- /*! Sets the debug level.
- * - 0 all debugging messages are disabled (the default).
- * - 1 display important messages only
- * - 2 display any messages.
- */
- virtual void setDebugLevel(int level) = 0;
-
- /*! Reads an XML directory produced by doxygen and builds up a data
- * structure representing the contents of the XML files in the directory.
- */
- virtual bool readXMLDir(const char *xmlDirName) = 0;
-};
-
-/*! Factory method that creates an empty object model for a doxygen generated XML file.
- * Use the readXMLDir() method to build the model from an XML output
- * directory containing doxygen output.
- */
-IDoxygen *createObjectModel();
-
-#endif
diff --git a/addon/doxmlparser/requirements.txt b/addon/doxmlparser/requirements.txt
new file mode 100644
index 0000000..d7a63aa
--- /dev/null
+++ b/addon/doxmlparser/requirements.txt
@@ -0,0 +1,2 @@
+lxml>=4.0.0
+six>=1.0.0
diff --git a/addon/doxmlparser/setup.py b/addon/doxmlparser/setup.py
new file mode 100644
index 0000000..02a0496
--- /dev/null
+++ b/addon/doxmlparser/setup.py
@@ -0,0 +1,19 @@
+from setuptools import setup, find_packages
+
+with open('README.md') as f:
+ readme = f.read()
+
+with open('LICENSE') as f:
+ license = f.read()
+
+setup(
+ name='doxmlparser',
+ version='0.1',
+ description='Python API to access doxygen generated XML output',
+ long_description=readme,
+ author='Dimitri van Heesch',
+ author_email='doxygen@gmail.com',
+ url='https://github.com/doxygen/doxygen/addon/doxmlparser',
+ license=license,
+ packages=find_packages(exclude=('tests', 'docs'))
+)
diff --git a/addon/doxmlparser/src/CMakeLists.txt b/addon/doxmlparser/src/CMakeLists.txt
deleted file mode 100644
index cbd5811..0000000
--- a/addon/doxmlparser/src/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-include_directories(
- .
- ../include
- ${PROJECT_SOURCE_DIR}/qtools
-)
-add_library(doxmlparser STATIC
- basehandler.cpp
- compoundhandler.cpp
- debug.cpp
- dochandler.cpp
- graphhandler.cpp
- linkedtexthandler.cpp
- loamhandler.cpp
- mainhandler.cpp
- memberhandler.cpp
- paramhandler.cpp
- sectionhandler.cpp
-)
diff --git a/addon/doxmlparser/src/basehandler.cpp b/addon/doxmlparser/src/basehandler.cpp
deleted file mode 100644
index 02d98c2..0000000
--- a/addon/doxmlparser/src/basehandler.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "basehandler.h"
-
-QXmlLocator * LocatorContainer::s_theLocator=0;
diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h
deleted file mode 100644
index 1772d8a..0000000
--- a/addon/doxmlparser/src/basehandler.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _BASEHANDLER_H
-#define _BASEHANDLER_H
-
-#include <qxml.h>
-#include <qdict.h>
-#include <qstring.h>
-
-#include "debug.h"
-
-//-----------------------------------------------------------------------------
-
-class IBaseHandler
-{
- public:
- virtual void setDelegate(QXmlDefaultHandler *delegate) = 0;
- virtual QXmlDefaultHandler *delegate() const = 0;
- virtual ~IBaseHandler() {}
-};
-
-//-----------------------------------------------------------------------------
-
-class IFallBackHandler
-{
- public:
- virtual bool handleStartElement(const QString & name,
- const QXmlAttributes & attrib) = 0;
- virtual bool handleEndElement(const QString &name) = 0;
- virtual ~IFallBackHandler() {}
-};
-
-//-----------------------------------------------------------------------------
-
-template<class T> class ElementMapper
-{
- class StartElementHandler
- {
- typedef void (T::*Handler)(const QXmlAttributes &attrib);
- public:
- StartElementHandler() : m_parent(0) {}
- StartElementHandler(T *parent, Handler h)
- : m_parent(parent), m_handler(h) {}
- void operator()(const QXmlAttributes &attrib)
- { if (m_parent) (m_parent->*m_handler)(attrib); }
- private:
- T *m_parent = 0;
- Handler m_handler;
- };
-
- class EndElementHandler
- {
- typedef void (T::*Handler)();
- public:
- EndElementHandler() : m_parent(0) {}
- EndElementHandler(T *parent, Handler h)
- : m_parent(parent), m_handler(h) {}
- void operator()()
- { if (m_parent) (m_parent->*m_handler)(); }
- private:
- T *m_parent = 0;
- Handler m_handler;
- };
-
- public:
- typedef StartElementHandler StartElementHandlerT;
- typedef EndElementHandler EndElementHandlerT;
-
- ElementMapper() : m_startHandlers(67), m_endHandlers(67)
- {
- m_startHandlers.setAutoDelete(TRUE);
- m_endHandlers.setAutoDelete(TRUE);
- }
- virtual ~ElementMapper()
- {
- }
-
- void addStartHandler(const char *key)
- {
- m_startHandlers.insert(key,new StartElementHandlerT);
- }
-
- void addStartHandler(const char *key, T *obj, void (T::*handler)(const QXmlAttributes &))
- {
- m_startHandlers.insert(key,new StartElementHandlerT(obj,handler));
- }
-
- void addEndHandler(const char *key)
- {
- m_endHandlers.insert(key,new EndElementHandlerT);
- }
-
- void addEndHandler(const char *key, T *obj, void (T::*handler)())
- {
- m_endHandlers.insert(key,new EndElementHandlerT(obj,handler));
- }
-
-
- protected:
- QDict<StartElementHandlerT> m_startHandlers;
- QDict<EndElementHandlerT> m_endHandlers;
-};
-
-//-----------------------------------------------------------------------------
-
-struct LocatorContainer
-{
- static QXmlLocator *s_theLocator;
-};
-
-//-----------------------------------------------------------------------------
-
-template<class T> class BaseHandler : public QXmlDefaultHandler,
- public ElementMapper<T>,
- public LocatorContainer,
- public IBaseHandler
-{
- public:
- typedef typename ElementMapper<T>::StartElementHandlerT StartElementHandlerT;
- typedef typename ElementMapper<T>::EndElementHandlerT EndElementHandlerT;
-
- BaseHandler() : m_skipCount(0), m_delegateHandler(0), m_fallBackHandler(0)
- {
- }
-
- virtual ~BaseHandler()
- {
- ASSERT(m_delegateHandler==0);
- }
-
- virtual bool startDocument()
- {
- return TRUE;
- }
-
- virtual bool startElement( const QString & namespaceURI,
- const QString & localName,
- const QString & name,
- const QXmlAttributes & attrib
- )
- {
- if (m_delegateHandler)
- {
- return m_delegateHandler->startElement(namespaceURI,localName,name,attrib);
- }
- if (!m_skipUntil.isEmpty()) // skip mode
- {
- if (m_skipUntil==name) m_skipCount++;
- debug(1,"line %d, col %d: skipping start tag %s count=%d\n",
- s_theLocator->lineNumber(),s_theLocator->columnNumber(),
- name.data(),m_skipCount);
- return TRUE;
- }
-
- StartElementHandlerT *handler = ElementMapper<T>::m_startHandlers[name.utf8()];
- if (handler)
- {
- (*handler)(attrib);
- //printf("found start tag %s\n",name.data());
- }
- else if (!m_fallBackHandler ||
- !m_fallBackHandler->handleStartElement(name,attrib)
- )
- {
- debug(1,"line %d, col %d: found unexpected tag '%s', skipping until matching end tag\n",
- s_theLocator->lineNumber(),s_theLocator->columnNumber(),
- name.data());
- m_skipUntil = name;
- m_skipCount=1;
- }
- return TRUE;
- }
-
- virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& name )
- {
- if (m_delegateHandler)
- {
- return m_delegateHandler->endElement(namespaceURI,localName,name);
- }
-
- if (name==m_skipUntil)
- {
- m_skipCount--;
- debug(1,"line %d, col %d: skipping end tag %s count=%d\n",
- s_theLocator->lineNumber(),s_theLocator->columnNumber(),
- name.data(),m_skipCount);
- if (m_skipCount==0)
- {
- m_skipUntil="";
- }
- //printf("found end tag %s\n",name.data());
- }
- else if (m_skipUntil.isEmpty())
- {
- EndElementHandlerT *handler = ElementMapper<T>::m_endHandlers[name.utf8()];
- if (handler)
- {
- (*handler)();
- //printf("found end tag %s\n",name.data());
- }
- else if (m_fallBackHandler)
- {
- m_fallBackHandler->handleEndElement(name);
- }
- }
- m_curString="";
- return TRUE;
- }
-
- bool skippedEntity ( const QString &s )
- {
- if (m_delegateHandler)
- {
- return m_delegateHandler->skippedEntity(s);
- }
-
- debug(1,"line %d, col %d: Skipped unhandled entity %s\n",
- s_theLocator->lineNumber(),s_theLocator->columnNumber(),
- s.data());
- return TRUE;
- }
-
- /*! called when a number of characters are received by the parser.
- * \param ch the characters.
- */
- virtual bool characters ( const QString & ch )
- {
- if (m_delegateHandler)
- {
- return m_delegateHandler->characters(ch);
- }
-
- //printf("Found characters \"%s\"\n",ch.data());
- m_curString+=ch;
- return TRUE;
- }
-
- void setDelegate(QXmlDefaultHandler *delegate)
- {
- m_delegateHandler = delegate;
- }
-
- QXmlDefaultHandler *delegate() const
- {
- return m_delegateHandler;
- }
-
- void setFallBackHandler(IFallBackHandler *h)
- {
- m_fallBackHandler = h;
- }
-
- IFallBackHandler *fallBackHandler() const
- {
- return m_fallBackHandler;
- }
-
- void setDocumentLocator( QXmlLocator * locator )
- {
- debug(2,"setDocumentLocator(%p)\n",locator);
- s_theLocator = locator;
- }
-
- protected:
- QString m_curString;
- QString m_skipUntil;
- int m_skipCount = 0;
- QXmlDefaultHandler *m_delegateHandler = 0;
- IFallBackHandler *m_fallBackHandler = 0;
-};
-
-//-----------------------------------------------------------------------------
-
-template<class T> class BaseFallBackHandler : public ElementMapper<T>,
- public IFallBackHandler
-{
- public:
- typedef typename ElementMapper<T>::StartElementHandlerT StartElementHandlerT;
- typedef typename ElementMapper<T>::EndElementHandlerT EndElementHandlerT;
-
- BaseFallBackHandler()
- {
- }
- virtual ~BaseFallBackHandler()
- {
- }
-
- bool handleStartElement(const QString & name,
- const QXmlAttributes & attrib)
- {
- StartElementHandlerT *handler = ElementMapper<T>::m_startHandlers[name.utf8()];
- if (handler)
- {
- (*handler)(attrib);
- return TRUE;
- }
- return FALSE;
- }
- bool handleEndElement(const QString &name)
- {
- EndElementHandlerT *handler = ElementMapper<T>::m_endHandlers[name.utf8()];
- if (handler)
- {
- (*handler)();
- return TRUE;
- }
- return FALSE;
- }
-};
-
-
-#endif
diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h
deleted file mode 100644
index 3325f54..0000000
--- a/addon/doxmlparser/src/baseiterator.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-#ifndef BASEITERATOR_H
-#define BASEITERATOR_H
-
-#include <qlist.h>
-#include <doxmlintf.h>
-
-template<class Intf,class ElemIntf,class ElemImpl> class BaseIterator :
- public Intf, public QListIterator<ElemImpl>
-{
- public:
- BaseIterator(const QList<ElemImpl> &list) : QListIterator<ElemImpl>(list) {}
- virtual ~BaseIterator() {}
- virtual ElemIntf *toFirst() { return QListIterator<ElemImpl>::toFirst(); }
- virtual ElemIntf *toLast() { return QListIterator<ElemImpl>::toLast(); }
- virtual ElemIntf *toNext() { return QListIterator<ElemImpl>::operator++(); }
- virtual ElemIntf *toPrev() { return QListIterator<ElemImpl>::operator--(); }
- virtual ElemIntf *current() const { return QListIterator<ElemImpl>::current(); }
- virtual void release() { delete this; }
-};
-
-template<class Intf,class ElemIntf,class ElemImpl,class Intermediate>
- class BaseIteratorVia :
- public Intf, public QListIterator<ElemImpl>
-{
- public:
- BaseIteratorVia(const QList<ElemImpl> &list) : QListIterator<ElemImpl>(list) {}
- virtual ~BaseIteratorVia() {}
- virtual ElemIntf *toFirst() { return static_cast<Intermediate *>(QListIterator<ElemImpl>::toFirst()); }
- virtual ElemIntf *toLast() { return static_cast<Intermediate *>(QListIterator<ElemImpl>::toLast()); }
- virtual ElemIntf *toNext() { return static_cast<Intermediate *>(QListIterator<ElemImpl>::operator++()); }
- virtual ElemIntf *toPrev() { return static_cast<Intermediate *>(QListIterator<ElemImpl>::operator--()); }
- virtual ElemIntf *current() const { return static_cast<Intermediate *>(QListIterator<ElemImpl>::current()); }
- virtual void release() { delete this; }
-};
-
-#endif
diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp
deleted file mode 100644
index 69fb70c..0000000
--- a/addon/doxmlparser/src/compoundhandler.cpp
+++ /dev/null
@@ -1,655 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include "mainhandler.h"
-#include "compoundhandler.h"
-#include "dochandler.h"
-#include "debug.h"
-#include "graphhandler.h"
-#include "sectionhandler.h"
-#include "paramhandler.h"
-#include "loamhandler.h"
-#include "memberhandler.h"
-#include "linkedtexthandler.h"
-
-//----------------------------------------------------------------------------
-
-IncludeHandler::IncludeHandler(IBaseHandler *parent,const char *endtag) :
- m_parent(parent)
-{
- addEndHandler(endtag,this,&IncludeHandler::endInclude);
-}
-
-IncludeHandler::~IncludeHandler()
-{
-}
-
-void IncludeHandler::startInclude(const QXmlAttributes &attrib)
-{
- m_curString = "";
- m_refId = attrib.value("refid");
- m_isLocal = attrib.value("local")=="yes";
- m_parent->setDelegate(this);
-}
-
-void IncludeHandler::endInclude()
-{
- m_name = m_curString;
- m_parent->setDelegate(0);
- debug(2,"Found include %s\n",m_name.data());
-}
-
-//----------------------------------------------------------------------------
-
-class CompoundIdIterator : public ICompoundIterator,
- public QListIterator<QString>
-{
- public:
- CompoundIdIterator(const MainHandler *m,const QList<QString> &list) :
- QListIterator<QString>(list), m_mainHandler(m) {}
- virtual ~CompoundIdIterator() {}
-
- virtual void toFirst()
- {
- QListIterator<QString>::toFirst();
- }
- virtual void toLast()
- {
- QListIterator<QString>::toLast();
- }
- virtual void toNext()
- {
- QListIterator<QString>::operator++();
- }
- virtual void toPrev()
- {
- QListIterator<QString>::operator--();
- }
- virtual ICompound *current() const
- {
- QString *id = QListIterator<QString>::current();
- return id ? m_mainHandler->compoundById(id->utf8()) : 0;
- }
- virtual void release()
- { delete this; }
-
- private:
- const MainHandler *m_mainHandler = 0;
-};
-
-//----------------------------------------------------------------------------
-
-ICompound *RelatedCompound::compound() const
-{
- return m_parent->m_mainHandler->compoundById(m_id.utf8());
-}
-
-//----------------------------------------------------------------------------
-
-class CompoundErrorHandler : public QXmlErrorHandler
-{
- public:
- virtual ~CompoundErrorHandler() {}
- bool warning( const QXmlParseException & )
- {
- return FALSE;
- }
- bool error( const QXmlParseException & )
- {
- return FALSE;
- }
- bool fatalError( const QXmlParseException &exception )
- {
- debug(1,"Fatal error at line %d column %d: %s\n",
- exception.lineNumber(),exception.columnNumber(),
- exception.message().data());
- return FALSE;
- }
- QString errorString() { return ""; }
-
- private:
- QString errorMsg;
-};
-
-//----------------------------------------------------------------------------
-
-class CompoundTypeMap
-{
- public:
- CompoundTypeMap()
- {
- m_map.setAutoDelete(TRUE);
- m_map.insert("class", new int(ICompound::Class));
- m_map.insert("struct", new int(ICompound::Struct));
- m_map.insert("union", new int(ICompound::Union));
- m_map.insert("interface",new int(ICompound::Interface));
- m_map.insert("protocol", new int(ICompound::Protocol));
- m_map.insert("category", new int(ICompound::Category));
- m_map.insert("exception",new int(ICompound::Exception));
- m_map.insert("file", new int(ICompound::File));
- m_map.insert("namespace",new int(ICompound::Namespace));
- m_map.insert("group", new int(ICompound::Group));
- m_map.insert("page", new int(ICompound::Page));
- m_map.insert("example", new int(ICompound::Example));
- m_map.insert("dir", new int(ICompound::Dir));
- }
- virtual ~CompoundTypeMap()
- {
- }
- ICompound::CompoundKind map(const QString &s)
- {
- int *val = m_map.find(s.utf8());
- if (val==0)
- {
- debug(1,"Warning: '%s' is an invalid compound type\n",s.data());
- return ICompound::Invalid;
- }
- else return (ICompound::CompoundKind)*val;
- }
- private:
- QDict<int> m_map;
-};
-
-static CompoundTypeMap *s_typeMap;
-
-void compoundhandler_init()
-{
- s_typeMap = new CompoundTypeMap;
-}
-
-void compoundhandler_exit()
-{
- delete s_typeMap;
-}
-
-//----------------------------------------------------------------------------
-
-CompoundHandler::CompoundHandler(const QString &xmlDir)
- : m_titleHandler(0),
- m_includeDependencyGraph(0),
- m_includedByDependencyGraph(0),
- m_templateParamList(0),
- m_brief(0),
- m_detailed(0),
- m_inheritanceGraph(0),
- m_collaborationGraph(0),
- m_programListing(0),
- m_members(0),
- m_xmlDir(xmlDir),
- m_refCount(1),
- m_memberDict(257),
- m_memberNameDict(257),
- m_mainHandler(0)
-{
- m_superClasses.setAutoDelete(TRUE);
- m_subClasses.setAutoDelete(TRUE);
- m_sections.setAutoDelete(TRUE);
- m_memberNameDict.setAutoDelete(TRUE);
- m_innerCompounds.setAutoDelete(TRUE);
- m_includes.setAutoDelete(TRUE);
- m_includedBy.setAutoDelete(TRUE);
-
- addStartHandler("doxygen");
- addEndHandler("doxygen");
-
- addStartHandler("compounddef",this,&CompoundHandler::startCompound);
- addEndHandler("compounddef",this,&CompoundHandler::endCompound);
-
- addStartHandler("compoundname");
- addEndHandler("compoundname",this,&CompoundHandler::endCompoundName);
-
- addStartHandler("title",this,&CompoundHandler::startTitle);
-
- addStartHandler("basecompoundref",this,&CompoundHandler::startSuperClass);
- addEndHandler("basecompoundref",this,&CompoundHandler::endSuperClass);
-
- addStartHandler("derivedcompoundref",this,&CompoundHandler::startSubClass);
- addEndHandler("derivedcompoundref",this,&CompoundHandler::endSubClass);
-
- addStartHandler("includes",this,&CompoundHandler::startIncludes);
- addStartHandler("includedby",this,&CompoundHandler::startIncludedBy);
-
- addStartHandler("incdepgraph",this,&CompoundHandler::startIncludeDependencyGraph);
-
- addStartHandler("invincdepgraph",this,&CompoundHandler::startIncludedByDependencyGraph);
-
- addStartHandler("innerdir",this,&CompoundHandler::startInnerDir);
- addEndHandler("innerdir");
-
- addStartHandler("innerfile",this,&CompoundHandler::startInnerFile);
- addEndHandler("innerfile");
-
- addStartHandler("innerclass",this,&CompoundHandler::startInnerClass);
- addEndHandler("innerclass");
-
- addStartHandler("innernamespace",this,&CompoundHandler::startInnerNamespace);
- addEndHandler("innernamespace");
-
- addStartHandler("innerpage",this,&CompoundHandler::startInnerPage);
- addEndHandler("innerpage");
-
- addStartHandler("innergroup",this,&CompoundHandler::startInnerGroup);
- addEndHandler("innergroup");
-
- addStartHandler("templateparamlist",this,&CompoundHandler::startTemplateParamList);
-
- addStartHandler("sectiondef",this,&CompoundHandler::startSection);
-
- addStartHandler("briefdescription",this,&CompoundHandler::startBriefDesc);
-
- addStartHandler("detaileddescription",this,&CompoundHandler::startDetailedDesc);
-
- addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph);
-
- addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph);
-
- addStartHandler("programlisting",this,&CompoundHandler::startProgramListing);
-
- addStartHandler("location",this,&CompoundHandler::startLocation);
- addEndHandler("location");
-
- addStartHandler("listofallmembers",this,&CompoundHandler::startListOfAllMembers);
-}
-
-CompoundHandler::~CompoundHandler()
-{
- debug(2,"CompoundHandler::~CompoundHandler()\n");
- delete m_titleHandler;
- delete m_brief;
- delete m_detailed;
- delete m_programListing;
- delete m_inheritanceGraph;
- delete m_collaborationGraph;
- delete m_includeDependencyGraph;
- delete m_includedByDependencyGraph;
- delete m_templateParamList;
- delete m_members;
-}
-
-void CompoundHandler::startSection(const QXmlAttributes& attrib)
-{
- SectionHandler *sectHandler = new SectionHandler(this);
- sectHandler->startSection(attrib);
- m_sections.append(sectHandler);
-}
-
-void CompoundHandler::startBriefDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_brief = docHandler;
-}
-
-void CompoundHandler::startDetailedDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_detailed = docHandler;
-}
-
-void CompoundHandler::startProgramListing(const QXmlAttributes& attrib)
-{
- ProgramListingHandler *plHandler = new ProgramListingHandler(this);
- plHandler->startProgramListing(attrib);
- m_programListing = plHandler;
-}
-
-void CompoundHandler::startIncludes(const QXmlAttributes& attrib)
-{
- IncludeHandler *inc = new IncludeHandler(this,"includes");
- m_includes.append(inc);
- inc->startInclude(attrib);
-}
-
-void CompoundHandler::startIncludedBy(const QXmlAttributes& attrib)
-{
- IncludeHandler *inc = new IncludeHandler(this,"includedby");
- m_includedBy.append(inc);
- inc->startInclude(attrib);
-}
-
-void CompoundHandler::startCompound(const QXmlAttributes& attrib)
-{
- m_id = attrib.value("id");
- m_kindString = attrib.value("kind");
- m_kind = s_typeMap->map(m_kindString);
- m_protection = attrib.value("prot");
- debug(2,"startCompound(id='%s' type='%s')\n",m_id.data(),m_kindString.data());
-}
-
-void CompoundHandler::endCompound()
-{
- debug(2,"endCompound()\n");
-}
-
-void CompoundHandler::startLocation(const QXmlAttributes& attrib)
-{
- m_defFile = attrib.value("file");
- m_defLine = attrib.value("line").toInt();
- m_defBodyFile = attrib.value("bodyfile");
- m_defBodyStart = attrib.value("bodystart").toInt();
- m_defBodyEnd = attrib.value("bodyend").toInt();
-}
-
-void CompoundHandler::endCompoundName()
-{
- m_name = m_curString.stripWhiteSpace();
- debug(2,"Compound name '%s'\n",m_name.data());
-}
-
-void CompoundHandler::startInnerClass(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startInnerNamespace(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startInnerFile(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startInnerGroup(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startInnerPage(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startInnerDir(const QXmlAttributes& attrib)
-{
- m_innerCompounds.append(new QString(attrib.value("refid")));
-}
-
-void CompoundHandler::startTemplateParamList(const QXmlAttributes& attrib)
-{
- m_templateParamList = new TemplateParamListHandler(this);
- m_templateParamList->startTemplateParamList(attrib);
-}
-
-void CompoundHandler::startListOfAllMembers(const QXmlAttributes& attrib)
-{
- m_members = new ListOfAllMembersHandler(this);
- m_members->startListOfAllMembers(attrib);
-}
-
-void CompoundHandler::startSuperClass(const QXmlAttributes& attrib)
-{
- IRelatedCompound::Protection prot = IRelatedCompound::Public;
- QString protString = attrib.value("prot");
- if (protString=="protected")
- {
- prot = IRelatedCompound::Protected;
- }
- else if (protString=="private")
- {
- prot = IRelatedCompound::Private;
- }
- IRelatedCompound::Kind kind = IRelatedCompound::Normal;
- QString kindString = attrib.value("virt");
- if (kindString=="virtual") kind = IRelatedCompound::Virtual;
-
- RelatedCompound *sc=new RelatedCompound(
- this,
- attrib.value("refid"),
- prot,
- kind
- );
- debug(2,"super class id='%s' prot='%s' virt='%s'\n",
- attrib.value("refid").data(),
- protString.data(),
- kindString.data());
- m_superClasses.append(sc);
- m_curString = "";
-}
-
-void CompoundHandler::endSuperClass()
-{
- m_superClasses.getLast()->setName(m_curString);
-}
-
-void CompoundHandler::startSubClass(const QXmlAttributes& attrib)
-{
- IRelatedCompound::Protection prot = IRelatedCompound::Public;
- QString protString = attrib.value("prot");
- if (protString=="protected") prot = IRelatedCompound::Protected;
- else if (protString=="private") prot = IRelatedCompound::Private;
-
- IRelatedCompound::Kind kind = IRelatedCompound::Normal;
- QString kindString = attrib.value("virt");
- if (kindString=="virtual") kind = IRelatedCompound::Virtual;
-
- RelatedCompound *sc = new RelatedCompound(
- this,
- attrib.value("refid"),
- prot,
- kind
- );
- debug(2,"sub class id='%s' prot='%s' virt='%s'\n",
- attrib.value("refid").data(),
- protString.data(),
- kindString.data());
- m_subClasses.append(sc);
- m_curString = "";
-}
-
-void CompoundHandler::endSubClass()
-{
- m_subClasses.getLast()->setName(m_curString);
-}
-
-void CompoundHandler::startTitle(const QXmlAttributes& attrib)
-{
- ASSERT(m_titleHandler==0);
- m_titleHandler = new TitleHandler(this);
- m_titleHandler->startTitle(attrib);
-}
-
-bool CompoundHandler::parseXML(const char *compId)
-{
- QFile xmlFile(m_xmlDir+"/"+compId+".xml");
- if (!xmlFile.exists()) return FALSE;
- CompoundErrorHandler errorHandler;
- QXmlInputSource source( xmlFile );
- QXmlSimpleReader reader;
- reader.setContentHandler( this );
- reader.setErrorHandler( &errorHandler );
- reader.parse( source );
- return TRUE;
-}
-
-void CompoundHandler::initialize(MainHandler *mh)
-{
- m_mainHandler = mh;
- QListIterator<SectionHandler> msi(m_sections);
- SectionHandler *sec;
- for (;(sec=msi.current());++msi)
- {
- sec->initialize(this);
- }
- if (m_members)
- {
- m_members->initialize(mh);
- }
-}
-
-void CompoundHandler::insertMember(MemberHandler *mh)
-{
- m_memberDict.insert(mh->id()->latin1(),mh);
- mh->initialize(m_mainHandler);
- QList<MemberHandler> *mhl = m_memberNameDict.find(mh->id()->latin1());
- if (mhl==0)
- {
- mhl = new QList<MemberHandler>;
- m_memberNameDict.insert(mh->name()->latin1(),mhl);
- }
- mhl->append(mh);
-}
-
-ICompound *CompoundHandler::toICompound() const
-{
- switch (m_kind)
- {
- case ICompound::Class: return (IClass *)this;
- case ICompound::Struct: return (IStruct *)this;
- case ICompound::Union: return (IUnion *)this;
- case ICompound::Interface: return (IInterface *)this;
- case ICompound::Protocol: return (IClass *)this;
- case ICompound::Category: return (IClass *)this;
- case ICompound::Exception: return (IException *)this;
- case ICompound::File: return (IFile *)this;
- case ICompound::Namespace: return (INamespace *)this;
- case ICompound::Group: return (IGroup *)this;
- case ICompound::Page: return (IPage *)this;
- case ICompound::Example: return (IPage *)this;
- case ICompound::Dir: return (IDir *)this;
- default: return 0;
- }
- return 0;
-}
-
-void CompoundHandler::release()
-{
- debug(2,"CompoundHandler::release() %d->%d\n",m_refCount,m_refCount-1);
- if (--m_refCount<=0)
- {
- m_mainHandler->unloadCompound(this);
- delete this;
- }
-}
-
-ISectionIterator *CompoundHandler::sections() const
-{
- return new SectionIterator(m_sections);
-}
-
-IMemberIterator *CompoundHandler::memberByName(const char *name) const
-{
- QList<MemberHandler> *ml = m_memberNameDict[name];
- if (ml==0) return 0;
- return new MemberIterator(*ml);
-}
-
-void CompoundHandler::startInheritanceGraph(const QXmlAttributes &attrib)
-{
- m_inheritanceGraph = new GraphHandler(this,"inheritancegraph");
- m_inheritanceGraph->startGraph(attrib);
-}
-
-void CompoundHandler::startCollaborationGraph(const QXmlAttributes &attrib)
-{
- m_collaborationGraph = new GraphHandler(this,"collaborationgraph");
- m_collaborationGraph->startGraph(attrib);
-}
-
-void CompoundHandler::startIncludeDependencyGraph(const QXmlAttributes &attrib)
-{
- m_includeDependencyGraph = new GraphHandler(this,"incdepgraph");
- m_includeDependencyGraph->startGraph(attrib);
-}
-
-void CompoundHandler::startIncludedByDependencyGraph(const QXmlAttributes &attrib)
-{
- m_includedByDependencyGraph = new GraphHandler(this,"invincdepgraph");
- m_includedByDependencyGraph->startGraph(attrib);
-}
-
-IDocRoot *CompoundHandler::briefDescription() const
-{
- return m_brief;
-}
-
-IDocRoot *CompoundHandler::detailedDescription() const
-{
- return m_detailed;
-}
-
-IMember *CompoundHandler::memberById(const char *id) const
-{
- return (IFunction*)m_memberDict[id];
-}
-
-IGraph *CompoundHandler::inheritanceGraph() const
-{
- return m_inheritanceGraph;
-}
-
-IGraph *CompoundHandler::collaborationGraph() const
-{
- return m_collaborationGraph;
-}
-
-IGraph *CompoundHandler::includeDependencyGraph() const
-{
- return m_includeDependencyGraph;
-}
-
-IGraph *CompoundHandler::includedByDependencyGraph() const
-{
- return m_includedByDependencyGraph;
-}
-
-IRelatedCompoundIterator *CompoundHandler::baseCompounds() const
-{
- return new RelatedCompoundIterator(m_superClasses);
-}
-
-IRelatedCompoundIterator *CompoundHandler::derivedCompounds() const
-{
- return new RelatedCompoundIterator(m_subClasses);
-}
-
-ICompoundIterator *CompoundHandler::nestedCompounds() const
-{
- return new CompoundIdIterator(m_mainHandler,m_innerCompounds);
-}
-
-IDocProgramListing *CompoundHandler::source() const
-{
- return m_programListing;
-}
-
-IIncludeIterator *CompoundHandler::includes() const
-{
- return new IncludeIterator(m_includes);
-}
-
-IIncludeIterator *CompoundHandler::includedBy() const
-{
- return new IncludeIterator(m_includedBy);
-}
-
-IParamIterator *CompoundHandler::templateParameters() const
-{
- return m_templateParamList ? m_templateParamList->templateParams() : 0;
-}
-
-const IDocTitle *CompoundHandler::title() const
-{
- return m_titleHandler;
-}
-
-IMemberReferenceIterator *CompoundHandler::members() const
-{
- return m_members ? m_members->members() : 0;
-}
-
-
diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h
deleted file mode 100644
index 6f191dc..0000000
--- a/addon/doxmlparser/src/compoundhandler.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-#ifndef _COMPOUNDHANDLER_H
-#define _COMPOUNDHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <qxml.h>
-#include <doxmlintf.h>
-
-#include "stringimpl.h"
-#include "basehandler.h"
-#include "baseiterator.h"
-
-class MainHandler;
-class DocHandler;
-class ProgramListingHandler;
-class GraphHandler;
-class MemberHandler;
-class CompoundHandler;
-class SectionHandler;
-class ParamHandler;
-class TemplateParamListHandler;
-class TitleHandler;
-class ListOfAllMembersHandler;
-
-class IncludeHandler : public IInclude, public BaseHandler<IncludeHandler>
-{
- public:
- IncludeHandler(IBaseHandler *parent,const char *endtag);
- virtual ~IncludeHandler();
-
- void startInclude(const QXmlAttributes &attrib);
- void endInclude();
-
- // IInclude
- virtual const IString * name() const
- { return &m_name; }
- virtual const IString * refId() const
- { return &m_refId; }
- virtual bool isLocal() const
- { return m_isLocal; }
-
- private:
- IBaseHandler *m_parent = 0;
- StringImpl m_name; // element's content
- StringImpl m_refId; // refid
- bool m_isLocal = false; // local
-};
-
-class IncludeIterator : public BaseIterator<IIncludeIterator,IInclude,IncludeHandler>
-{
- public:
- IncludeIterator(const QList<IncludeHandler> &list) :
- BaseIterator<IIncludeIterator,IInclude,IncludeHandler>(list) {}
-};
-
-
-class RelatedCompound : public IRelatedCompound
-{
- public:
- RelatedCompound(CompoundHandler *parent,
- const QString &id,
- Protection prot,
- Kind kind
- ) :
- m_parent(parent), m_id(id), m_protection(prot), m_kind(kind) {}
- virtual ~RelatedCompound() {}
- void setName(const QString &str) { m_name = str; }
-
- virtual ICompound *compound() const;
- virtual Protection protection() const { return m_protection; }
- virtual Kind kind() const { return m_kind; }
- virtual const IString *name() const { return &m_name; }
-
- private:
- CompoundHandler *m_parent = 0;
- QString m_id; // refid
- Protection m_protection = Public; // prot
- Kind m_kind = Normal; // virt
- StringImpl m_name; // element's content
-};
-
-class RelatedCompoundIterator : public BaseIterator<IRelatedCompoundIterator,IRelatedCompound,RelatedCompound>
-{
- public:
- RelatedCompoundIterator(const QList<RelatedCompound> &list) :
- BaseIterator<IRelatedCompoundIterator,IRelatedCompound,RelatedCompound>(list) {}
-};
-
-
-class CompoundHandler : public IClass,
- public IStruct,
- public IUnion,
- public IException,
- public IInterface,
- public INamespace,
- public IFile,
- public IGroup,
- public IPage,
- public IDir,
- public BaseHandler<CompoundHandler>
-{
- friend class RelatedCompound;
-
- public:
- virtual void startSection(const QXmlAttributes& attrib);
- virtual void startCompound(const QXmlAttributes& attrib);
- virtual void startSuperClass(const QXmlAttributes& attrib);
- virtual void endSuperClass();
- virtual void startSubClass(const QXmlAttributes& attrib);
- virtual void endSubClass();
- virtual void endCompound();
- virtual void endCompoundName();
- virtual void startBriefDesc(const QXmlAttributes& attrib);
- virtual void startDetailedDesc(const QXmlAttributes& attrib);
- virtual void startLocation(const QXmlAttributes& attrib);
- virtual void startProgramListing(const QXmlAttributes& attrib);
- virtual void startInheritanceGraph(const QXmlAttributes& attrib);
- virtual void startCollaborationGraph(const QXmlAttributes& attrib);
- virtual void startIncludeDependencyGraph(const QXmlAttributes& attrib);
- virtual void startIncludedByDependencyGraph(const QXmlAttributes& attrib);
- virtual void startIncludes(const QXmlAttributes& attrib);
- virtual void startIncludedBy(const QXmlAttributes& attrib);
- virtual void startInnerDir(const QXmlAttributes& attrib);
- virtual void startInnerClass(const QXmlAttributes& attrib);
- virtual void startInnerNamespace(const QXmlAttributes& attrib);
- virtual void startInnerFile(const QXmlAttributes& attrib);
- virtual void startInnerGroup(const QXmlAttributes& attrib);
- virtual void startInnerPage(const QXmlAttributes& attrib);
- virtual void startTitle(const QXmlAttributes& attrib);
- virtual void startTemplateParamList(const QXmlAttributes& attrib);
- virtual void startListOfAllMembers(const QXmlAttributes& attrib);
- virtual void addref() { m_refCount++; }
-
- CompoundHandler(const QString &dirName);
- virtual ~CompoundHandler();
- bool parseXML(const char *compId);
- void initialize(MainHandler *mh);
- void insertMember(MemberHandler *mh);
- ICompound *toICompound() const;
-
- // ICompound implementation
- const IString *name() const { return &m_name; }
- const IString *id() const { return &m_id; }
- CompoundKind kind() const { return m_kind; }
- const IString *kindString() const { return &m_kindString; }
- ISectionIterator *sections() const;
- IDocRoot *briefDescription() const;
- IDocRoot *detailedDescription() const;
- IMember *memberById(const char *id) const;
- IMemberIterator *memberByName(const char *name) const;
- IParamIterator *templateParameters() const;
- void release();
-
- // IClass implementation
- IGraph *inheritanceGraph() const;
- IGraph *collaborationGraph() const;
- IRelatedCompoundIterator *baseCompounds() const;
- IRelatedCompoundIterator *derivedCompounds() const;
- ICompoundIterator *nestedCompounds() const;
- ICompoundIterator *nestedGroup() const;
- const IString *locationFile() const { return &m_defFile; }
- int locationLine() const { return m_defLine; }
- const IString *locationBodyFile() const { return &m_defBodyFile; }
- int locationBodyStartLine() const { return m_defBodyStart; }
- int locationBodyEndLine() const { return m_defBodyEnd; }
- IMemberReferenceIterator *members() const;
-
- // IFile implementation
- IGraph *includeDependencyGraph() const;
- IGraph *includedByDependencyGraph() const;
- IDocProgramListing *source() const;
- IIncludeIterator *includes() const;
- IIncludeIterator *includedBy() const;
-
- // IPage implementation
- const IDocTitle *title() const;
-
- private:
- // XML elements:
- // -------------
- StringImpl m_name; // compoundname
- TitleHandler* m_titleHandler = 0; // title
- QList<RelatedCompound> m_subClasses; // basecompoundref
- QList<RelatedCompound> m_superClasses; // derivedcompoundref
- QList<IncludeHandler> m_includes; // includes
- QList<IncludeHandler> m_includedBy; // includedBy
- GraphHandler* m_includeDependencyGraph = 0;// incdepgraph
- GraphHandler* m_includedByDependencyGraph = 0; // invincdepgraph
- QList<QString> m_innerCompounds; // innerdir/innerfile/innerclass/innernamespace/innergroup
- TemplateParamListHandler* m_templateParamList; // templateparamlist
- QList<SectionHandler> m_sections; // sectiondef
- DocHandler* m_brief = 0; // briefdescription
- DocHandler* m_detailed = 0; // detaileddescription
- GraphHandler* m_inheritanceGraph = 0; // inheritancegraph
- GraphHandler* m_collaborationGraph = 0; // collaborationgraph
- ProgramListingHandler* m_programListing = 0; // programlisting
- // location
- StringImpl m_defFile; // - file
- int m_defLine = 0; // - line
- StringImpl m_defBodyFile; // - bodyfile
- int m_defBodyStart = 0; // - bodystart
- int m_defBodyEnd = 0; // - bodyend
- ListOfAllMembersHandler* m_members = 0; // listofallmember
-
- // XML attributes:
- // ---------------
- StringImpl m_id; // id
- CompoundKind m_kind = Invalid; // kind
- StringImpl m_kindString; // kind as a string
- StringImpl m_protection; // prot
-
- // local variables
- QString m_xmlDir; // directory where the info is found
- int m_refCount = 0; // object reference counter
- QDict<MemberHandler> m_memberDict; // id->member lookup
- QDict<QList<MemberHandler> > m_memberNameDict; // name->memberlist lookup
- MainHandler* m_mainHandler = 0; // parent object
-};
-
-void compoundhandler_init();
-void compoundhandler_exit();
-
-#endif
diff --git a/addon/doxmlparser/src/debug.cpp b/addon/doxmlparser/src/debug.cpp
deleted file mode 100644
index a8be32c..0000000
--- a/addon/doxmlparser/src/debug.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include "debug.h"
-
-static int s_debugLevel = 0;
-
-void debug(int level,const char *msg,...)
-{
- if (level<=s_debugLevel)
- {
- va_list args;
- va_start(args, msg);
- vfprintf(stderr, msg, args);
- va_end(args);
- }
-}
-
-void setDebugLevel(int level)
-{
- s_debugLevel = level;
-}
-
diff --git a/addon/doxmlparser/src/debug.h b/addon/doxmlparser/src/debug.h
deleted file mode 100644
index c77f7fe..0000000
--- a/addon/doxmlparser/src/debug.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _DEBUG_H
-#define _DEBUG_H
-
-void debug(int level,const char *msg,...);
-void setDebugLevel(int level);
-
-#endif
diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp
deleted file mode 100644
index 1ce581b..0000000
--- a/addon/doxmlparser/src/dochandler.cpp
+++ /dev/null
@@ -1,2240 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include <qmap_p.h>
-
-#include "dochandler.h"
-#include "debug.h"
-#include "linkedtexthandler.h"
-
-
-//----------------------------------------------------------------------
-
-class TypeNameMapper
-{
- public:
- TypeNameMapper()
- {
- m_map.insert("see", SimpleSectHandler::See);
- m_map.insert("return", SimpleSectHandler::Return);
- m_map.insert("author", SimpleSectHandler::Author);
- m_map.insert("version", SimpleSectHandler::Version);
- m_map.insert("since", SimpleSectHandler::Since);
- m_map.insert("date", SimpleSectHandler::Date);
- m_map.insert("bug", SimpleSectHandler::Bug);
- m_map.insert("note", SimpleSectHandler::Note);
- m_map.insert("warning", SimpleSectHandler::Warning);
- m_map.insert("par", SimpleSectHandler::Par);
- m_map.insert("deprecated",SimpleSectHandler::Deprecated);
- m_map.insert("pre", SimpleSectHandler::Pre);
- m_map.insert("post", SimpleSectHandler::Post);
- m_map.insert("invariant", SimpleSectHandler::Invar);
- m_map.insert("remark", SimpleSectHandler::Remark);
- m_map.insert("attention", SimpleSectHandler::Attention);
- m_map.insert("todo", SimpleSectHandler::Todo);
- m_map.insert("test", SimpleSectHandler::Test);
- m_map.insert("rcs", SimpleSectHandler::RCS);
- m_map.insert("enumvalues",SimpleSectHandler::EnumValues);
- m_map.insert("examples", SimpleSectHandler::Examples);
- }
- SimpleSectHandler::Types stringToType(const QString &typeStr)
- {
- return m_map[typeStr];
- }
- private:
- QMap<QString,SimpleSectHandler::Types> m_map;
-};
-
-class HighlightMapper
-{
- public:
- HighlightMapper()
- {
- m_map.insert("comment", HighlightHandler::Comment);
- m_map.insert("keyword", HighlightHandler::Keyword);
- m_map.insert("keywordtype", HighlightHandler::KeywordType);
- m_map.insert("keywordflow", HighlightHandler::KeywordFlow);
- m_map.insert("charliteral", HighlightHandler::CharLiteral);
- m_map.insert("stringliteral", HighlightHandler::StringLiteral);
- m_map.insert("preprocessor", HighlightHandler::Preprocessor);
- }
- HighlightHandler::HighlightKind stringToKind(const QString &kindStr)
- {
- return m_map[kindStr];
- }
- private:
- QMap<QString,HighlightHandler::HighlightKind> m_map;
-};
-
-static TypeNameMapper *s_typeMapper;
-static HighlightMapper *s_highlightMapper;
-
-void dochandler_init()
-{
- s_typeMapper = new TypeNameMapper;
- s_highlightMapper = new HighlightMapper;
-}
-
-void dochandler_exit()
-{
- delete s_typeMapper;
- delete s_highlightMapper;
-}
-
-//----------------------------------------------------------------------
-// MarkupHandler
-//----------------------------------------------------------------------
-
-MarkupHandler::MarkupHandler(QList<DocImpl> &children,QString &curString)
- : m_children(children), m_curString(curString),
- m_curMarkup(IDocMarkup::Normal), m_headingLevel(0)
-{
- addStartHandler("bold",this,&MarkupHandler::startBold);
- addEndHandler("bold",this,&MarkupHandler::endBold);
-
- addStartHandler("emphasis",this,&MarkupHandler::startEmphasis);
- addEndHandler("emphasis",this,&MarkupHandler::endEmphasis);
-
- addStartHandler("computeroutput",this,&MarkupHandler::startComputerOutput);
- addEndHandler("computeroutput",this,&MarkupHandler::endComputerOutput);
-
- addStartHandler("center",this,&MarkupHandler::startCenter);
- addEndHandler("center",this,&MarkupHandler::endCenter);
-
- addStartHandler("small",this,&MarkupHandler::startSmallFont);
- addEndHandler("small",this,&MarkupHandler::endSmallFont);
-
- addStartHandler("subscript",this,&MarkupHandler::startSubscript);
- addEndHandler("subscript",this,&MarkupHandler::endSubscript);
-
- addStartHandler("superscript",this,&MarkupHandler::startSuperscript);
- addEndHandler("superscript",this,&MarkupHandler::endSuperscript);
-
- addStartHandler("preformatted",this,&MarkupHandler::startPreformatted);
- addEndHandler("preformatted",this,&MarkupHandler::endPreformatted);
-
- addStartHandler("heading1",this,&MarkupHandler::startHeading1);
- addEndHandler("heading1",this,&MarkupHandler::endHeading1);
-
- addStartHandler("heading2",this,&MarkupHandler::startHeading2);
- addEndHandler("heading2",this,&MarkupHandler::endHeading2);
-
- addStartHandler("heading3",this,&MarkupHandler::startHeading3);
- addEndHandler("heading3",this,&MarkupHandler::endHeading3);
-
- addStartHandler("heading4",this,&MarkupHandler::startHeading4);
- addEndHandler("heading4",this,&MarkupHandler::endHeading4);
-
- addStartHandler("heading5",this,&MarkupHandler::startHeading5);
- addEndHandler("heading5",this,&MarkupHandler::endHeading5);
-
- addStartHandler("heading6",this,&MarkupHandler::startHeading6);
- addEndHandler("heading6",this,&MarkupHandler::endHeading6);
-}
-
-MarkupHandler::~MarkupHandler()
-{
-}
-
-void MarkupHandler::addTextNode()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(new TextNode(m_curString,m_curMarkup,m_headingLevel));
- debug(2,"addTextNode() text=%s markup=%x\n",m_curString.data(),m_curMarkup);
- m_curString="";
- }
-}
-
-void MarkupHandler::startBold(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Bold,TRUE));
- m_curMarkup |= IDocMarkup::Bold;
-}
-
-void MarkupHandler::endBold()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Bold,FALSE));
- m_curMarkup &= ~IDocMarkup::Bold;
-}
-
-void MarkupHandler::startEmphasis(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Emphasis,TRUE));
- m_curMarkup |= IDocMarkup::Emphasis;
-}
-
-void MarkupHandler::endEmphasis()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Emphasis,FALSE));
- m_curMarkup &= ~IDocMarkup::Emphasis;
-}
-
-void MarkupHandler::startComputerOutput(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::ComputerOutput,TRUE));
- m_curMarkup |= IDocMarkup::ComputerOutput;
-}
-
-void MarkupHandler::endComputerOutput()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::ComputerOutput,FALSE));
- m_curMarkup &= ~IDocMarkup::ComputerOutput;
-}
-
-void MarkupHandler::startCenter(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Center,TRUE));
- m_curMarkup |= IDocMarkup::Center;
-}
-
-void MarkupHandler::endCenter()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Center,FALSE));
- m_curMarkup &= ~IDocMarkup::Center;
-}
-
-void MarkupHandler::startSmallFont(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::SmallFont,TRUE));
- m_curMarkup |= IDocMarkup::SmallFont;
-}
-
-void MarkupHandler::endSmallFont()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::SmallFont,FALSE));
- m_curMarkup &= ~IDocMarkup::SmallFont;
-}
-
-void MarkupHandler::startSubscript(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Subscript,TRUE));
- m_curMarkup |= IDocMarkup::Subscript;
-}
-
-void MarkupHandler::endSubscript()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Subscript,FALSE));
- m_curMarkup &= ~IDocMarkup::Subscript;
-}
-
-void MarkupHandler::startSuperscript(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Superscript,TRUE));
- m_curMarkup |= IDocMarkup::Superscript;
-}
-
-void MarkupHandler::endSuperscript()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Superscript,FALSE));
- m_curMarkup &= ~IDocMarkup::Superscript;
-}
-
-void MarkupHandler::startPreformatted(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,TRUE));
- m_curMarkup |= IDocMarkup::Preformatted;
-}
-
-void MarkupHandler::endPreformatted()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,FALSE));
- m_curMarkup &= ~IDocMarkup::Preformatted;
-}
-
-void MarkupHandler::startHeading1(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,1));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=1;
-}
-
-void MarkupHandler::endHeading1()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,1));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-void MarkupHandler::startHeading2(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,2));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=2;
-}
-
-void MarkupHandler::endHeading2()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,2));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-void MarkupHandler::startHeading3(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,3));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=3;
-}
-
-void MarkupHandler::endHeading3()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,3));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-void MarkupHandler::startHeading4(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,4));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=4;
-}
-
-void MarkupHandler::endHeading4()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,4));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-void MarkupHandler::startHeading5(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,5));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=5;
-}
-
-void MarkupHandler::endHeading5()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,5));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-void MarkupHandler::startHeading6(const QXmlAttributes & /*attrib*/)
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,TRUE,6));
- m_curMarkup |= IDocMarkup::Heading;
- m_headingLevel=6;
-}
-
-void MarkupHandler::endHeading6()
-{
- addTextNode();
- m_children.append(new MarkupModifierNode(IDocMarkup::Heading,FALSE,6));
- m_curMarkup &= ~IDocMarkup::Heading;
- m_headingLevel=0;
-}
-
-
-//----------------------------------------------------------------------
-// ListItemHandler
-//----------------------------------------------------------------------
-
-ListItemHandler::ListItemHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
-
- addEndHandler("listitem",this,&ListItemHandler::endListItem);
-
- addStartHandler("para",this,&ListItemHandler::startParagraph);
-}
-
-ListItemHandler::~ListItemHandler()
-{
-}
-
-void ListItemHandler::startListItem(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start list item handler\n");
-}
-
-void ListItemHandler::endListItem()
-{
- debug(2,"end list item handler\n");
- m_parent->setDelegate(0);
-}
-
-void ListItemHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *parHandler = new ParagraphHandler(this);
- parHandler->startParagraph(attrib);
- m_children.append(parHandler);
-}
-
-IDocIterator *ListItemHandler::contents() const
-{
- return new ListItemIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// OrderedListHandler
-//----------------------------------------------------------------------
-
-OrderedListHandler::OrderedListHandler(IBaseHandler *parent) : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("orderedlist",this,&OrderedListHandler::endOrderedList);
- addStartHandler("listitem",this,&OrderedListHandler::startOrderedListItem);
-}
-
-OrderedListHandler::~OrderedListHandler()
-{
-}
-
-void OrderedListHandler::startOrderedList(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
-}
-
-void OrderedListHandler::endOrderedList()
-{
- m_parent->setDelegate(0);
-}
-
-void OrderedListHandler::startOrderedListItem(const QXmlAttributes& attrib)
-{
- ListItemHandler *liHandler = new ListItemHandler(this);
- liHandler->startListItem(attrib);
- m_children.append(liHandler);
-}
-
-IDocIterator *OrderedListHandler::elements() const
-{
- return new OrderedListIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// ItemizedListHandler
-//----------------------------------------------------------------------
-
-ItemizedListHandler::ItemizedListHandler(IBaseHandler *parent) : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("itemizedlist",this,&ItemizedListHandler::endItemizedList);
- addStartHandler("listitem",this,&ItemizedListHandler::startItemizedListItem);
-}
-
-ItemizedListHandler::~ItemizedListHandler()
-{
-}
-
-void ItemizedListHandler::startItemizedList(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
-}
-
-void ItemizedListHandler::endItemizedList()
-{
- m_parent->setDelegate(0);
-}
-
-void ItemizedListHandler::startItemizedListItem(const QXmlAttributes& attrib)
-{
- ListItemHandler *liHandler = new ListItemHandler(this);
- liHandler->startListItem(attrib);
- m_children.append(liHandler);
-}
-
-IDocIterator *ItemizedListHandler::elements() const
-{
- return new ItemizedListIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// TocListHandler
-//----------------------------------------------------------------------
-
-TocListHandler::TocListHandler(IBaseHandler *parent) : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("toclist",this,&TocListHandler::endTocList);
- addStartHandler("tocitem",this,&TocListHandler::startTocItem);
-}
-
-TocListHandler::~TocListHandler()
-{
-}
-
-void TocListHandler::startTocList(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
-}
-
-void TocListHandler::endTocList()
-{
- m_parent->setDelegate(0);
-}
-
-void TocListHandler::startTocItem(const QXmlAttributes& attrib)
-{
- TocItemHandler *tiHandler = new TocItemHandler(this);
- tiHandler->startTocItem(attrib);
- m_children.append(tiHandler);
-}
-
-IDocIterator *TocListHandler::elements() const
-{
- return new TocListIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// TocItemHandler
-//----------------------------------------------------------------------
-
-TocItemHandler::TocItemHandler(IBaseHandler *parent) : m_parent(parent)
-{
- addEndHandler("tocitem",this,&TocItemHandler::endTocItem);
-}
-
-TocItemHandler::~TocItemHandler()
-{
-}
-
-void TocItemHandler::startTocItem(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_id = attrib.value("id");
- m_curString="";
-}
-
-void TocItemHandler::endTocItem()
-{
- m_title = m_curString;
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// ParameterHandler
-//----------------------------------------------------------------------
-
-ParameterHandler::ParameterHandler(IBaseHandler *parent) :
- m_parent(parent)
-{
- addEndHandler("parametername",this,&ParameterHandler::endParameterName);
-}
-
-ParameterHandler::~ParameterHandler()
-{
-}
-
-void ParameterHandler::startParameterName(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
-}
-
-void ParameterHandler::endParameterName()
-{
- m_name = m_curString;
- debug(2,"parameter %s\n",m_name.data());
- m_curString="";
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// ParameterListHandler
-//----------------------------------------------------------------------
-
-ParameterItemHandler::ParameterItemHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("parameteritem",this,&ParameterItemHandler::endParameterItem);
- addStartHandler("parameternamelist");
- addEndHandler("parameternamelist");
- addStartHandler("parametername",this,&ParameterItemHandler::startParameterName);
- addStartHandler("parameterdescription");
- addEndHandler("parameterdescription");
- addStartHandler("para",this,&ParameterItemHandler::startParagraph);
- m_parameters.setAutoDelete(TRUE);
- m_description = 0;
-}
-
-ParameterItemHandler::~ParameterItemHandler()
-{
- delete m_description;
-}
-
-void ParameterItemHandler::startParameterItem(const QXmlAttributes&)
-{
- m_parent->setDelegate(this);
-}
-
-void ParameterItemHandler::endParameterItem()
-{
- m_parent->setDelegate(0);
-}
-
-void ParameterItemHandler::startParameterName(const QXmlAttributes& attrib)
-{
- ParameterHandler *param = new ParameterHandler(this);
- m_parameters.append(param);
- param->startParameterName(attrib);
-}
-
-void ParameterItemHandler::startParagraph(const QXmlAttributes& attrib)
-{
- m_description = new ParagraphHandler(this);
- m_description->startParagraph(attrib);
-}
-
-IDocIterator *ParameterItemHandler::paramNames() const
-{
- return new ParameterItemIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// ParameterListHandler
-//----------------------------------------------------------------------
-
-ParameterListHandler::ParameterListHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("parameterlist",this,&ParameterListHandler::endParameterList);
- addStartHandler("parameteritem",this,&ParameterListHandler::startParameterItem);
- m_paramItems.setAutoDelete(TRUE);
-}
-
-ParameterListHandler::~ParameterListHandler()
-{
-}
-
-void ParameterListHandler::startParameterList(const QXmlAttributes& attrib)
-{
- QString kind = attrib.value("kind");
- if (kind=="retval") m_type=RetVal;
- else if (kind=="exception") m_type=Exception;
- else if (kind=="param") m_type=Param;
- else
- {
- debug(1,"Error: invalid parameterlist type: %s\n",kind.data());
- }
- debug(2,"parameterlist kind=%s\n",kind.data());
- m_parent->setDelegate(this);
-}
-
-void ParameterListHandler::endParameterList()
-{
- m_parent->setDelegate(0);
-}
-
-void ParameterListHandler::startParameterItem(const QXmlAttributes& attrib)
-{
- ParameterItemHandler *paramItem = new ParameterItemHandler(this);
- m_paramItems.append(paramItem);
- paramItem->startParameterItem(attrib);
-}
-
-IDocIterator *ParameterListHandler::params() const
-{
- return new ParameterListIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// LinkHandler
-//----------------------------------------------------------------------
-
-LinkHandler::LinkHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("link",this,&LinkHandler::endLink);
-}
-
-LinkHandler::~LinkHandler()
-{
-}
-
-void LinkHandler::startLink(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- debug(2,"Start link\n");
- m_ref = attrib.value("linkend");
- m_curString="";
-}
-
-void LinkHandler::endLink()
-{
- m_text = m_curString;
- m_curString="";
- m_parent->setDelegate(0);
- debug(2,"End link\n");
-}
-
-//----------------------------------------------------------------------
-// EMailHandler
-//----------------------------------------------------------------------
-
-EMailHandler::EMailHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("email",this,&EMailHandler::endEMail);
-}
-
-EMailHandler::~EMailHandler()
-{
-}
-
-void EMailHandler::startEMail(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"Start email\n");
- m_curString="";
-}
-
-void EMailHandler::endEMail()
-{
- m_address = m_curString;
- m_curString="";
- m_parent->setDelegate(0);
- debug(2,"End email\n");
-}
-
-//----------------------------------------------------------------------
-// ULinkHandler
-//----------------------------------------------------------------------
-
-ULinkHandler::ULinkHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("ulink",this,&ULinkHandler::endULink);
-}
-
-ULinkHandler::~ULinkHandler()
-{
-}
-
-void ULinkHandler::startULink(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- debug(2,"Start ulink\n");
- m_url = attrib.value("url");
- m_curString="";
-}
-
-void ULinkHandler::endULink()
-{
- m_text = m_curString;
- m_curString="";
- m_parent->setDelegate(0);
- debug(2,"End ulink\n");
-}
-
-//----------------------------------------------------------------------
-// LineBreakHandler
-//----------------------------------------------------------------------
-
-LineBreakHandler::LineBreakHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("linebreak",this,&LineBreakHandler::endLineBreak);
-}
-
-LineBreakHandler::~LineBreakHandler()
-{
-}
-
-void LineBreakHandler::startLineBreak(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"Start linebreak\n");
-}
-
-void LineBreakHandler::endLineBreak()
-{
- m_parent->setDelegate(0);
- debug(2,"End linebreak\n");
-}
-
-//----------------------------------------------------------------------
-// HRulerHandler
-//----------------------------------------------------------------------
-
-HRulerHandler::HRulerHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("hruler",this,&HRulerHandler::endHRuler);
-}
-
-HRulerHandler::~HRulerHandler()
-{
-}
-
-void HRulerHandler::startHRuler(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"Start hruler\n");
-}
-
-void HRulerHandler::endHRuler()
-{
- m_parent->setDelegate(0);
- debug(2,"End hruler\n");
-}
-
-//----------------------------------------------------------------------
-// RefHandler
-//----------------------------------------------------------------------
-
-RefHandler::RefHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("ref",this,&RefHandler::endRef);
-}
-
-RefHandler::~RefHandler()
-{
-}
-
-void RefHandler::startRef(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_refId = attrib.value("refid");
- m_extId = attrib.value("external");
- ASSERT(attrib.value("kindref")=="compound" ||
- attrib.value("kindref")=="member");
- m_targetKind = attrib.value("kindref")=="compound" ? Compound : Member;
- debug(2,"Start ref refId=%s\n",m_refId.data());
- m_curString="";
-}
-
-void RefHandler::endRef()
-{
- m_linkText = m_curString;
- m_parent->setDelegate(0);
- debug(2,"End ref: text='%s'\n",m_linkText.data());
-}
-
-
-//----------------------------------------------------------------------
-// TitleHandler
-//----------------------------------------------------------------------
-
-TitleHandler::TitleHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- m_markupHandler = new MarkupHandler(m_children,m_curString);
- setFallBackHandler(m_markupHandler);
- addStartHandler("ref",this,&TitleHandler::startRef);
- addEndHandler("title",this,&TitleHandler::endTitle);
-}
-
-TitleHandler::~TitleHandler()
-{
- delete m_markupHandler;
-}
-
-void TitleHandler::startTitle(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"Start title\n");
- m_curString="";
-}
-
-void TitleHandler::endTitle()
-{
- addTextNode();
- m_parent->setDelegate(0);
- debug(2,"End title\n");
-}
-
-void TitleHandler::addTextNode()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(
- new TextNode(
- m_curString,
- m_markupHandler->markup(),
- m_markupHandler->headingLevel()
- )
- );
- debug(2,"addTextNode() text=\"%s\" markup=%x headingLevel=%d\n",
- m_curString.data(),m_markupHandler->markup(),m_markupHandler->headingLevel());
- m_curString="";
- }
-}
-
-void TitleHandler::startRef(const QXmlAttributes& attrib)
-{
- RefHandler *ref = new RefHandler(this);
- ref->startRef(attrib);
- m_children.append(ref);
-}
-
-IDocIterator *TitleHandler::title() const
-{
- return new TitleIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// SimpleSectHandler
-//----------------------------------------------------------------------
-
-SimpleSectHandler::SimpleSectHandler(IBaseHandler *parent)
- : m_parent(parent), m_paragraph(0), m_title(0)
-{
- addStartHandler("title",this,&SimpleSectHandler::startTitle);
- addStartHandler("para",this,&SimpleSectHandler::startParagraph);
- addEndHandler("simplesect",this,&SimpleSectHandler::endSimpleSect);
-}
-
-SimpleSectHandler::~SimpleSectHandler()
-{
-}
-
-void SimpleSectHandler::startSimpleSect(const QXmlAttributes& attrib)
-{
- m_typeString = attrib.value("kind");
- m_type = s_typeMapper->stringToType(m_typeString);
- debug(2,"start simple section %s\n",m_typeString.data());
- m_parent->setDelegate(this);
-}
-
-void SimpleSectHandler::endSimpleSect()
-{
- debug(2,"end simple section\n");
- m_parent->setDelegate(0);
-}
-
-void SimpleSectHandler::startTitle(const QXmlAttributes& attrib)
-{
- ASSERT(m_title==0);
- m_title = new TitleHandler(this);
- m_title->startTitle(attrib);
-}
-
-void SimpleSectHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ASSERT(m_paragraph==0);
- m_paragraph = new ParagraphHandler(this);
- m_paragraph->startParagraph(attrib);
-}
-
-//----------------------------------------------------------------------
-// VariableListEntryHandler
-//----------------------------------------------------------------------
-
-VariableListEntryHandler::VariableListEntryHandler(IBaseHandler *parent)
- : m_parent(parent), m_description(0), m_linkedTextHandler(0)
-{
- addStartHandler("term",this,&VariableListEntryHandler::startTerm);
- addEndHandler("term",this,&VariableListEntryHandler::endTerm);
- addStartHandler("para",this,&VariableListEntryHandler::startParagraph);
- addEndHandler("varlistentry",this,&VariableListEntryHandler::endVarListEntry);
- addEndHandler("listitem",this,&VariableListEntryHandler::endListItem);
-}
-
-VariableListEntryHandler::~VariableListEntryHandler()
-{
- delete m_description;
-}
-
-void VariableListEntryHandler::startVarListEntry(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start varlistentry\n");
-}
-
-void VariableListEntryHandler::endVarListEntry()
-{
- m_parent->setDelegate(0);
- debug(2,"end varlistentry\n");
-}
-
-void VariableListEntryHandler::startListItem(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start listitem\n");
-}
-
-void VariableListEntryHandler::endListItem()
-{
- m_parent->setDelegate(0);
- debug(2,"end listitem\n");
-}
-
-void VariableListEntryHandler::startTerm(const QXmlAttributes& /*attrib*/)
-{
- m_curString="";
- m_linkedTextHandler = new LinkedTextHandler(this,m_term);
- m_linkedTextHandler->start("term");
-}
-
-void VariableListEntryHandler::endTerm()
-{
- delete m_linkedTextHandler;
-}
-
-void VariableListEntryHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ASSERT(m_description==0);
- m_description = new ParagraphHandler(this);
- m_description->startParagraph(attrib);
-}
-
-ILinkedTextIterator *VariableListEntryHandler::term() const
-{
- return new LinkedTextIterator(m_term);
-}
-
-
-//----------------------------------------------------------------------
-// VariableListHandler
-//----------------------------------------------------------------------
-
-VariableListHandler::VariableListHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_entries.setAutoDelete(TRUE);
- addStartHandler("varlistentry",this,&VariableListHandler::startVarListEntry);
- addStartHandler("listitem",this,&VariableListHandler::startListItem);
- addEndHandler("variablelist",this,&VariableListHandler::endVariableList);
-}
-
-VariableListHandler::~VariableListHandler()
-{
-}
-
-void VariableListHandler::startVariableList(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start variablelist\n");
-}
-
-void VariableListHandler::endVariableList()
-{
- debug(2,"end variablelist\n");
- m_parent->setDelegate(0);
-}
-
-void VariableListHandler::startVarListEntry(const QXmlAttributes& attrib)
-{
- VariableListEntryHandler *vle = new VariableListEntryHandler(this);
- vle->startVarListEntry(attrib);
- m_curEntry = vle;
- m_entries.append(vle);
-}
-
-void VariableListHandler::startListItem(const QXmlAttributes& attrib)
-{
- ASSERT(m_curEntry!=0);
- m_curEntry->startListItem(attrib);
-}
-
-IDocIterator *VariableListHandler::entries() const
-{
- return new VariableListIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// HighlightHandler
-//----------------------------------------------------------------------
-
-HighlightHandler::HighlightHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("highlight",this,&HighlightHandler::endHighlight);
- addStartHandler("ref",this,&HighlightHandler::startRef);
- addStartHandler("sp",this,&HighlightHandler::startSpace);
- m_hl = IDocHighlight::Invalid;
-}
-
-HighlightHandler::~HighlightHandler()
-{
-}
-
-void HighlightHandler::startHighlight(const QXmlAttributes& attrib)
-{
- m_hlString = attrib.value("class");
- m_hl = s_highlightMapper->stringToKind(m_hlString);
- m_curString="";
- m_parent->setDelegate(this);
- debug(2,"start highlight\n");
-}
-
-void HighlightHandler::endHighlight()
-{
- addTextNode();
- debug(2,"end highlight class='%s'\n",m_hlString.data());
- m_parent->setDelegate(0);
-}
-
-void HighlightHandler::startRef(const QXmlAttributes& attrib)
-{
- addTextNode();
- RefHandler *rh = new RefHandler(this);
- m_children.append(rh);
- rh->startRef(attrib);
-}
-
-void HighlightHandler::startSpace(const QXmlAttributes&)
-{
- m_curString=" ";
- addTextNode();
-}
-
-void HighlightHandler::addTextNode()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0));
- debug(2,"addTextNode() text=\"%s\"\n",
- m_curString.data());
- m_curString="";
- }
-}
-
-IDocIterator *HighlightHandler::codeElements() const
-{
- return new HighlightIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// CodeLineHandler
-//----------------------------------------------------------------------
-
-CodeLineHandler::CodeLineHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("codeline",this,&CodeLineHandler::endCodeLine);
- addEndHandler("linenumber",this,&CodeLineHandler::endLineNumber);
- addStartHandler("highlight",this,&CodeLineHandler::startHighlight);
- addStartHandler("ref",this,&CodeLineHandler::startRef);
- m_lineNumber = 0;
-}
-
-CodeLineHandler::~CodeLineHandler()
-{
-}
-
-void CodeLineHandler::startCodeLine(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start codeline\n");
-}
-
-void CodeLineHandler::endCodeLine()
-{
- addTextNode();
- debug(2,"end codeline\n");
- m_parent->setDelegate(0);
-}
-
-void CodeLineHandler::startLineNumber(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- debug(2,"start linenumber\n");
- m_lineNumber = attrib.value("line").toInt();
- m_refId = attrib.value("refid");
-}
-
-void CodeLineHandler::endLineNumber()
-{
- m_parent->setDelegate(0);
-}
-
-void CodeLineHandler::startHighlight(const QXmlAttributes& attrib)
-{
- addTextNode();
- HighlightHandler *hlh = new HighlightHandler(this);
- m_children.append(hlh);
- hlh->startHighlight(attrib);
-}
-
-void CodeLineHandler::startRef(const QXmlAttributes& attrib)
-{
- addTextNode();
- RefHandler *rh = new RefHandler(this);
- m_children.append(rh);
- rh->startRef(attrib);
-}
-
-void CodeLineHandler::addTextNode()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0));
- debug(2,"addTextNode() text=\"%s\"\n",
- m_curString.data());
- m_curString="";
- }
-}
-
-IDocIterator *CodeLineHandler::codeElements() const
-{
- return new CodeLineIterator(*this);
-}
-
-
-//----------------------------------------------------------------------
-// ProgramListingHandler
-//----------------------------------------------------------------------
-
-ProgramListingHandler::ProgramListingHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- m_hasLineNumber=FALSE;
- addEndHandler("programlisting",this,&ProgramListingHandler::endProgramListing);
-
- addStartHandler("linenumber",this,&ProgramListingHandler::startLineNumber);
- addStartHandler("codeline",this,&ProgramListingHandler::startCodeLine);
-}
-
-ProgramListingHandler::~ProgramListingHandler()
-{
-}
-
-void ProgramListingHandler::startProgramListing(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start programlisting\n");
-}
-
-void ProgramListingHandler::endProgramListing()
-{
- debug(2,"end programlisting\n");
- m_parent->setDelegate(0);
-}
-
-void ProgramListingHandler::startLineNumber(const QXmlAttributes& attrib)
-{
- CodeLineHandler *clh = new CodeLineHandler(this);
- m_children.append(clh);
- m_hasLineNumber=TRUE;
- clh->startLineNumber(attrib);
-}
-
-void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib)
-{
- CodeLineHandler *clh = 0;
- if (!m_hasLineNumber)
- {
- clh = new CodeLineHandler(this);
- m_children.append(clh);
- }
- else
- {
- clh = m_children.getLast();
- }
- ASSERT(clh!=0);
- clh->startCodeLine(attrib);
- m_hasLineNumber=FALSE;
-}
-
-IDocIterator *ProgramListingHandler::codeLines() const
-{
- return new ProgramListingIterator(*this);
-}
-
-
-
-//----------------------------------------------------------------------
-// FormulaHandler
-//----------------------------------------------------------------------
-
-FormulaHandler::FormulaHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("formula",this,&FormulaHandler::endFormula);
-}
-
-FormulaHandler::~FormulaHandler()
-{
-}
-
-void FormulaHandler::startFormula(const QXmlAttributes& attrib)
-{
- m_id = attrib.value("id");
- m_curString="";
- m_parent->setDelegate(this);
-}
-
-void FormulaHandler::endFormula()
-{
- m_text = m_curString;
- debug(2,"formula id='%s' text='%s'\n",m_id.data(),m_text.data());
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// AnchorHandler
-//----------------------------------------------------------------------
-
-AnchorHandler::AnchorHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("anchor",this,&AnchorHandler::endAnchor);
-}
-
-AnchorHandler::~AnchorHandler()
-{
-}
-
-void AnchorHandler::startAnchor(const QXmlAttributes& attrib)
-{
- m_id = attrib.value("id");
- m_parent->setDelegate(this);
-}
-
-void AnchorHandler::endAnchor()
-{
- debug(2,"anchor id='%s'\n",m_id.data());
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// ImageHandler
-//----------------------------------------------------------------------
-
-ImageHandler::ImageHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("image",this,&ImageHandler::endImage);
-}
-
-ImageHandler::~ImageHandler()
-{
-}
-
-void ImageHandler::startImage(const QXmlAttributes& attrib)
-{
- m_name = attrib.value("name");
- m_curString="";
- m_parent->setDelegate(this);
-}
-
-void ImageHandler::endImage()
-{
- m_caption = m_curString;
- debug(2,"image name='%s' caption='%s'\n",m_name.data(),m_caption.data());
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// DotFileHandler
-//----------------------------------------------------------------------
-
-DotFileHandler::DotFileHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("dotfile",this,&DotFileHandler::endDotFile);
-}
-
-DotFileHandler::~DotFileHandler()
-{
-}
-
-void DotFileHandler::startDotFile(const QXmlAttributes& attrib)
-{
- m_name = attrib.value("name");
- m_curString="";
- m_parent->setDelegate(this);
-}
-
-void DotFileHandler::endDotFile()
-{
- m_caption = m_curString;
- debug(2,"image name='%s' caption='%s'\n",m_name.data(),m_caption.data());
- m_parent->setDelegate(0);
-}
-
-//----------------------------------------------------------------------
-// IndexEntryHandler
-//----------------------------------------------------------------------
-
-IndexEntryHandler::IndexEntryHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("indexentry",this,&IndexEntryHandler::endIndexEntry);
- addStartHandler("primaryie",this,&IndexEntryHandler::startPrimaryIE);
- addEndHandler("primaryie",this,&IndexEntryHandler::endPrimaryIE);
- addStartHandler("secondaryie",this,&IndexEntryHandler::startSecondaryIE);
- addEndHandler("secondaryie",this,&IndexEntryHandler::endSecondaryIE);
-}
-
-IndexEntryHandler::~IndexEntryHandler()
-{
-}
-
-void IndexEntryHandler::startIndexEntry(const QXmlAttributes& /*attrib*/)
-{
- debug(2,"start index entry\n");
- m_parent->setDelegate(this);
-}
-
-void IndexEntryHandler::endIndexEntry()
-{
- debug(2,"index entry primary='%s' secondary='%s'\n",
- m_primary.data(),m_secondary.data());
- m_parent->setDelegate(0);
-}
-
-void IndexEntryHandler::startPrimaryIE(const QXmlAttributes& /*attrib*/)
-{
- m_curString="";
-}
-
-void IndexEntryHandler::endPrimaryIE()
-{
- m_primary = m_curString;
-}
-
-void IndexEntryHandler::startSecondaryIE(const QXmlAttributes& /*attrib*/)
-{
- m_curString="";
-}
-
-void IndexEntryHandler::endSecondaryIE()
-{
- m_secondary = m_curString;
-}
-
-//----------------------------------------------------------------------
-// EntryHandler
-//----------------------------------------------------------------------
-
-EntryHandler::EntryHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("entry",this,&EntryHandler::endEntry);
- addStartHandler("para",this,&EntryHandler::startParagraph);
-}
-
-EntryHandler::~EntryHandler()
-{
-}
-
-void EntryHandler::startEntry(const QXmlAttributes&)
-{
- m_parent->setDelegate(this);
-}
-
-void EntryHandler::endEntry()
-{
- m_parent->setDelegate(0);
-}
-
-void EntryHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *ph = new ParagraphHandler(this);
- ph->startParagraph(attrib);
- m_children.append(ph);
-}
-
-IDocIterator *EntryHandler::contents() const
-{
- return new EntryIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// RowHandler
-//----------------------------------------------------------------------
-
-RowHandler::RowHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("row",this,&RowHandler::endRow);
- addStartHandler("entry",this,&RowHandler::startEntry);
-}
-
-RowHandler::~RowHandler()
-{
-}
-
-void RowHandler::startRow(const QXmlAttributes&)
-{
- m_parent->setDelegate(this);
-}
-
-void RowHandler::endRow()
-{
- m_parent->setDelegate(0);
-}
-
-void RowHandler::startEntry(const QXmlAttributes& attrib)
-{
- EntryHandler *eh = new EntryHandler(this);
- eh->startEntry(attrib);
- m_children.append(eh);
-}
-
-IDocIterator *RowHandler::entries() const
-{
- return new RowIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// TableHandler
-//----------------------------------------------------------------------
-
-TableHandler::TableHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
- addEndHandler("table",this,&TableHandler::endTable);
- addStartHandler("row",this,&TableHandler::startRow);
- addStartHandler("caption",this,&TableHandler::startCaption);
- addEndHandler("caption",this,&TableHandler::endCaption);
-}
-
-TableHandler::~TableHandler()
-{
-}
-
-void TableHandler::startTable(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_numColumns = attrib.value("cols").toInt();
- debug(2,"table cols=%d\n",m_numColumns);
-}
-
-void TableHandler::endTable()
-{
- m_parent->setDelegate(0);
-}
-
-void TableHandler::startRow(const QXmlAttributes& attrib)
-{
- RowHandler *rh = new RowHandler(this);
- rh->startRow(attrib);
- m_children.append(rh);
-}
-
-void TableHandler::startCaption(const QXmlAttributes& /*attrib*/)
-{
- m_curString="";
-}
-
-void TableHandler::endCaption()
-{
- m_caption = m_curString;
-}
-
-IDocIterator *TableHandler::rows() const
-{
- return new TableIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// CopyHandler
-//----------------------------------------------------------------------
-
-CopyHandler::CopyHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
-
- addEndHandler("copydoc",this,&CopyHandler::endCopy);
-
- addStartHandler("para",this,&CopyHandler::startParagraph);
-}
-
-CopyHandler::~CopyHandler()
-{
-}
-
-void CopyHandler::startCopy(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start copy handler\n");
-}
-
-void CopyHandler::endCopy()
-{
- debug(2,"end copy handler\n");
- m_parent->setDelegate(0);
-}
-
-void CopyHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *parHandler = new ParagraphHandler(this);
- parHandler->startParagraph(attrib);
- m_children.append(parHandler);
-}
-
-IDocIterator *CopyHandler::contents() const
-{
- return new CopyIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// VerbatimHandler
-//----------------------------------------------------------------------
-
-VerbatimHandler::VerbatimHandler(IBaseHandler *parent)
- : m_parent(parent), m_type(IDocVerbatim::Invalid)
-{
- addEndHandler("verbatim",this,&VerbatimHandler::endVerbatim);
- addEndHandler("latexonly",this,&VerbatimHandler::endVerbatim);
- addEndHandler("htmlonly",this,&VerbatimHandler::endVerbatim);
-}
-
-VerbatimHandler::~VerbatimHandler()
-{
-}
-
-void VerbatimHandler::startVerbatim(const QXmlAttributes&,Types type)
-{
- m_type = type;
- m_parent->setDelegate(this);
- m_curString="";
-}
-
-void VerbatimHandler::endVerbatim()
-{
- m_text = m_curString;
- m_parent->setDelegate(0);
-}
-
-
-//----------------------------------------------------------------------
-// SymbolHandler
-//----------------------------------------------------------------------
-
-SymbolHandler::SymbolHandler(IBaseHandler *parent,Types type)
- : m_parent(parent), m_letter('\0'), m_type(type)
-{
- addEndHandler("symbol");
- switch (type)
- {
- case IDocSymbol::Invalid: m_typeString="invalid"; break;
- case IDocSymbol::Umlaut: m_typeString="umlaut"; break;
- case IDocSymbol::Acute: m_typeString="acute"; break;
- case IDocSymbol::Grave: m_typeString="grave"; break;
- case IDocSymbol::Circ: m_typeString="circ"; break;
- case IDocSymbol::Tilde: m_typeString="tilde"; break;
- case IDocSymbol::Szlig: m_typeString="szlig"; break;
- case IDocSymbol::Cedil: m_typeString="cedil"; break;
- case IDocSymbol::Ring: m_typeString="ring"; break;
- case IDocSymbol::Nbsp: m_typeString="nbsp"; break;
- case IDocSymbol::Copy: m_typeString="copy"; break;
- }
-}
-
-SymbolHandler::~SymbolHandler()
-{
-}
-
-void SymbolHandler::startSymbol(const QXmlAttributes& attrib)
-{
- QString ls = attrib.value("char");
- if (!ls.isEmpty()) m_letter = ls.latin1()[0];
-}
-
-//----------------------------------------------------------------------
-// ParagraphHandler
-//----------------------------------------------------------------------
-
-ParagraphHandler::ParagraphHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
-
- m_markupHandler = new MarkupHandler(m_children,m_curString);
-
- // preformatted
- setFallBackHandler(m_markupHandler);
-
- addEndHandler("para",this,&ParagraphHandler::endParagraph);
-
- addStartHandler("linebreak",this,&ParagraphHandler::startLineBreak);
- addStartHandler("hruler",this,&ParagraphHandler::startHRuler);
- addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing);
- addStartHandler("verbatim",this,&ParagraphHandler::startVerbatim);
- addStartHandler("indexentry",this,&ParagraphHandler::startIndexEntry);
- addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList);
- addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList);
- addStartHandler("simplesect",this,&ParagraphHandler::startSimpleSect);
- // TODO: title
- addStartHandler("variablelist",this,&ParagraphHandler::startVariableList);
- addStartHandler("table",this,&ParagraphHandler::startTable);
- // TODO: heading
- addStartHandler("image",this,&ParagraphHandler::startImage);
- addStartHandler("dotfile",this,&ParagraphHandler::startDotFile);
- addStartHandler("toclist",this,&ParagraphHandler::startTocList);
- // TODO: language???
- addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList);
- // TODO: xrefsect
- addStartHandler("copydoc",this,&ParagraphHandler::startCopyDoc);
-
- addStartHandler("ref",this,&ParagraphHandler::startRef);
- addStartHandler("ulink",this,&ParagraphHandler::startULink);
- addStartHandler("email",this,&ParagraphHandler::startEMail);
- addStartHandler("link",this,&ParagraphHandler::startLink);
- addStartHandler("formula",this,&ParagraphHandler::startFormula);
- addStartHandler("latexonly",this,&ParagraphHandler::startHtmlOnly);
- addStartHandler("htmlonly",this,&ParagraphHandler::startLatexOnly);
- addStartHandler("umlaut",this,&ParagraphHandler::startUmlaut);
- addStartHandler("acute",this,&ParagraphHandler::startAcute);
- addStartHandler("grave",this,&ParagraphHandler::startGrave);
- addStartHandler("circ",this,&ParagraphHandler::startCirc);
- addStartHandler("tilde",this,&ParagraphHandler::startTilde);
- addStartHandler("szlig",this,&ParagraphHandler::startSzlig);
- addStartHandler("cedil",this,&ParagraphHandler::startCedil);
- addStartHandler("ring",this,&ParagraphHandler::startRing);
- addStartHandler("nbsp",this,&ParagraphHandler::startNbsp);
- addStartHandler("copy",this,&ParagraphHandler::startCopy);
- addStartHandler("anchor",this,&ParagraphHandler::startAnchor);
-}
-
-ParagraphHandler::~ParagraphHandler()
-{
- delete m_markupHandler;
-}
-
-void ParagraphHandler::startParagraph(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"para\n");
-}
-
-void ParagraphHandler::endParagraph()
-{
- addTextNode();
- debug(2,"end para\n");
- m_parent->setDelegate(0);
-}
-
-void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib)
-{
- addTextNode();
- ItemizedListHandler *listHandler = new ItemizedListHandler(this);
- listHandler->startItemizedList(attrib);
- m_children.append(listHandler);
-}
-
-void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib)
-{
- addTextNode();
- OrderedListHandler *listHandler = new OrderedListHandler(this);
- listHandler->startOrderedList(attrib);
- m_children.append(listHandler);
-}
-
-void ParagraphHandler::startParameterList(const QXmlAttributes& attrib)
-{
- addTextNode();
- ParameterListHandler *listHandler = new ParameterListHandler(this);
- listHandler->startParameterList(attrib);
- m_children.append(listHandler);
-}
-
-void ParagraphHandler::startSimpleSect(const QXmlAttributes& attrib)
-{
- addTextNode();
- SimpleSectHandler *sectHandler = new SimpleSectHandler(this);
- sectHandler->startSimpleSect(attrib);
- m_children.append(sectHandler);
-}
-
-void ParagraphHandler::startRef(const QXmlAttributes& attrib)
-{
- addTextNode();
- RefHandler *ref = new RefHandler(this);
- ref->startRef(attrib);
- m_children.append(ref);
-}
-
-void ParagraphHandler::startVariableList(const QXmlAttributes& attrib)
-{
- addTextNode();
- VariableListHandler *vl = new VariableListHandler(this);
- vl->startVariableList(attrib);
- m_children.append(vl);
-}
-
-void ParagraphHandler::startHRuler(const QXmlAttributes& attrib)
-{
- addTextNode();
- HRulerHandler *hr = new HRulerHandler(this);
- hr->startHRuler(attrib);
- m_children.append(hr);
-}
-
-void ParagraphHandler::startLineBreak(const QXmlAttributes& attrib)
-{
- addTextNode();
- LineBreakHandler *lb = new LineBreakHandler(this);
- lb->startLineBreak(attrib);
- m_children.append(lb);
-}
-
-void ParagraphHandler::startULink(const QXmlAttributes& attrib)
-{
- addTextNode();
- ULinkHandler *uh = new ULinkHandler(this);
- uh->startULink(attrib);
- m_children.append(uh);
-}
-
-void ParagraphHandler::startEMail(const QXmlAttributes& attrib)
-{
- addTextNode();
- EMailHandler *eh = new EMailHandler(this);
- eh->startEMail(attrib);
- m_children.append(eh);
-}
-
-void ParagraphHandler::startLink(const QXmlAttributes& attrib)
-{
- addTextNode();
- LinkHandler *lh = new LinkHandler(this);
- lh->startLink(attrib);
- m_children.append(lh);
-}
-
-void ParagraphHandler::startProgramListing(const QXmlAttributes& attrib)
-{
- addTextNode();
- ProgramListingHandler *pl = new ProgramListingHandler(this);
- pl->startProgramListing(attrib);
- m_children.append(pl);
-}
-
-void ParagraphHandler::startFormula(const QXmlAttributes& attrib)
-{
- addTextNode();
- FormulaHandler *fh = new FormulaHandler(this);
- fh->startFormula(attrib);
- m_children.append(fh);
-}
-
-void ParagraphHandler::startImage(const QXmlAttributes& attrib)
-{
- addTextNode();
- ImageHandler *ih = new ImageHandler(this);
- ih->startImage(attrib);
- m_children.append(ih);
-}
-
-void ParagraphHandler::startDotFile(const QXmlAttributes& attrib)
-{
- addTextNode();
- DotFileHandler *df = new DotFileHandler(this);
- df->startDotFile(attrib);
- m_children.append(df);
-}
-
-void ParagraphHandler::startIndexEntry(const QXmlAttributes& attrib)
-{
- addTextNode();
- IndexEntryHandler *df = new IndexEntryHandler(this);
- df->startIndexEntry(attrib);
- m_children.append(df);
-}
-
-void ParagraphHandler::startTable(const QXmlAttributes& attrib)
-{
- addTextNode();
- TableHandler *th = new TableHandler(this);
- th->startTable(attrib);
- m_children.append(th);
-}
-
-void ParagraphHandler::startVerbatim(const QXmlAttributes& attrib)
-{
- addTextNode();
- VerbatimHandler *vh = new VerbatimHandler(this);
- vh->startVerbatim(attrib,IDocVerbatim::Verbatim);
- m_children.append(vh);
-}
-
-void ParagraphHandler::startHtmlOnly(const QXmlAttributes& attrib)
-{
- addTextNode();
- VerbatimHandler *vh = new VerbatimHandler(this);
- vh->startVerbatim(attrib,IDocVerbatim::HtmlOnly);
- m_children.append(vh);
-}
-
-void ParagraphHandler::startLatexOnly(const QXmlAttributes& attrib)
-{
- addTextNode();
- VerbatimHandler *vh = new VerbatimHandler(this);
- vh->startVerbatim(attrib,IDocVerbatim::LatexOnly);
- m_children.append(vh);
-}
-
-void ParagraphHandler::startUmlaut(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Umlaut);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startAcute(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Acute);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startGrave(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Grave);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startCirc(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Circ);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startTilde(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Tilde);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startSzlig(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Szlig);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startCedil(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Cedil);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startRing(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Ring);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startNbsp(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Nbsp);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startCopy(const QXmlAttributes& attrib)
-{
- addTextNode();
- SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Copy);
- sh->startSymbol(attrib);
- m_children.append(sh);
-}
-
-void ParagraphHandler::startAnchor(const QXmlAttributes& attrib)
-{
- addTextNode();
- AnchorHandler *ah = new AnchorHandler(this);
- ah->startAnchor(attrib);
- m_children.append(ah);
-}
-
-void ParagraphHandler::startCopyDoc(const QXmlAttributes& attrib)
-{
- addTextNode();
- CopyHandler *ch = new CopyHandler(this);
- ch->startCopy(attrib);
- m_children.append(ch);
-}
-
-void ParagraphHandler::startTocList(const QXmlAttributes& attrib)
-{
- addTextNode();
- TocListHandler *th = new TocListHandler(this);
- th->startTocList(attrib);
- m_children.append(th);
-}
-
-void ParagraphHandler::addTextNode()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(
- new TextNode(
- m_curString,
- m_markupHandler->markup(),
- m_markupHandler->headingLevel()
- )
- );
- debug(2,"addTextNode() text=\"%s\" markup=%x headingLevel=%d\n",
- m_curString.data(),m_markupHandler->markup(),m_markupHandler->headingLevel());
- m_curString="";
- }
-}
-
-IDocIterator *ParagraphHandler::contents() const
-{
- return new ParagraphIterator(*this);
-}
-
-//----------------------------------------------------------------------
-// DocSectionHandler
-//----------------------------------------------------------------------
-
-DocSectionHandler::DocSectionHandler(IBaseHandler *parent,int level)
- : m_parent(parent), m_internal(0), m_level(level), m_title(0)
-{
- QString sectionKey;
- m_paragraphs.setAutoDelete(TRUE);
- m_subsections.setAutoDelete(TRUE);
- addStartHandler("title",this,&DocSectionHandler::startTitle);
- addStartHandler("para",this,&DocSectionHandler::startParagraph);
- if (level<6)
- {
- sectionKey.sprintf("sect%d",level+1);
- addStartHandler(sectionKey.utf8(),this,&DocSectionHandler::startSubSection);
- }
- addStartHandler("internal",this,&DocSectionHandler::startInternal);
- sectionKey.sprintf("sect%d",level);
- addEndHandler(sectionKey.utf8(),this,&DocSectionHandler::endDocSection);
-}
-
-DocSectionHandler::~DocSectionHandler()
-{
-}
-
-void DocSectionHandler::startDocSection(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- debug(2,"Start docsection\n");
- m_id = attrib.value("id");
-}
-
-void DocSectionHandler::endDocSection()
-{
- m_parent->setDelegate(0);
- debug(2,"End docsection\n");
-}
-
-void DocSectionHandler::startSubSection(const QXmlAttributes& attrib)
-{
- DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1);
- secHandler->startDocSection(attrib);
- m_subsections.append(secHandler);
-}
-
-void DocSectionHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *parHandler = new ParagraphHandler(this);
- parHandler->startParagraph(attrib);
- m_paragraphs.append(parHandler);
-}
-
-void DocSectionHandler::startInternal(const QXmlAttributes& attrib)
-{
- m_internal = new DocInternalHandler(this,m_level);
- m_internal->startInternal(attrib);
-}
-
-void DocSectionHandler::startTitle(const QXmlAttributes& attrib)
-{
- m_title = new TitleHandler(this);
- m_title->startTitle(attrib);
-}
-
-IDocIterator *DocSectionHandler::paragraphs() const
-{
- return new DocSectionParaIterator(*this);
-}
-
-IDocIterator *DocSectionHandler::subSections() const
-{
- return new DocSectionSubIterator(*this);
-}
-
-IDocInternal *DocSectionHandler::internal() const
-{
- return m_internal;
-}
-
-//----------------------------------------------------------------------
-// DocInternal
-//----------------------------------------------------------------------
-
-DocInternalHandler::DocInternalHandler(IBaseHandler *parent,int level)
- : m_parent(parent), m_level(level)
-{
- m_paragraphs.setAutoDelete(TRUE);
- m_subsections.setAutoDelete(TRUE);
- addStartHandler("para",this,&DocInternalHandler::startParagraph);
- QString sectionKey;
- sectionKey.sprintf("sect%d",level+1);
- addStartHandler(sectionKey.utf8(),this,&DocInternalHandler::startSubSection);
- addEndHandler("internal",this,&DocInternalHandler::endInternal);
-}
-
-DocInternalHandler::~DocInternalHandler()
-{
-}
-
-void DocInternalHandler::startInternal(const QXmlAttributes&)
-{
- m_parent->setDelegate(this);
- debug(2,"Start internal\n");
-}
-
-void DocInternalHandler::endInternal()
-{
- m_parent->setDelegate(0);
- debug(2,"End internal\n");
-}
-
-void DocInternalHandler::startSubSection(const QXmlAttributes& attrib)
-{
- DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1);
- secHandler->startDocSection(attrib);
- m_subsections.append(secHandler);
-}
-
-void DocInternalHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *parHandler = new ParagraphHandler(this);
- parHandler->startParagraph(attrib);
- m_paragraphs.append(parHandler);
-}
-
-IDocIterator *DocInternalHandler::paragraphs() const
-{
- return new DocInternalParaIterator(*this);
-}
-
-IDocIterator *DocInternalHandler::subSections() const
-{
- return new DocInternalSubIterator(*this);
-}
-
-
-//----------------------------------------------------------------------
-// DocHandler
-//----------------------------------------------------------------------
-
-DocHandler::DocHandler(IBaseHandler *parent) : m_parent(parent)
-{
- m_children.setAutoDelete(TRUE);
-
- addEndHandler("briefdescription",this,&DocHandler::endDoc);
- addEndHandler("detaileddescription",this,&DocHandler::endDoc);
- addEndHandler("inbodydescription",this,&DocHandler::endDoc);
- //addEndHandler("internal"); // TODO: implement this as a section
- addStartHandler("internal",this,&DocHandler::startInternal);
-
- addStartHandler("para",this,&DocHandler::startParagraph);
- addStartHandler("sect1",this,&DocHandler::startSect1);
- addStartHandler("title",this,&DocHandler::startTitle);
- //addStartHandler("internal");
-}
-
-DocHandler::~DocHandler()
-{
-}
-
-void DocHandler::startDoc(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"start dochandler\n");
-}
-
-void DocHandler::endDoc()
-{
- debug(2,"end dochandler\n");
- m_parent->setDelegate(0);
-}
-
-void DocHandler::startParagraph(const QXmlAttributes& attrib)
-{
- ParagraphHandler *parHandler = new ParagraphHandler(this);
- parHandler->startParagraph(attrib);
- m_children.append(parHandler);
-}
-
-void DocHandler::startSect1(const QXmlAttributes& attrib)
-{
- DocSectionHandler *secHandler = new DocSectionHandler(this,1);
- secHandler->startDocSection(attrib);
- m_children.append(secHandler);
-}
-
-void DocHandler::startTitle(const QXmlAttributes& attrib)
-{
- TitleHandler *titleHandler = new TitleHandler(this);
- titleHandler->startTitle(attrib);
- m_children.append(titleHandler);
-}
-
-void DocHandler::startInternal(const QXmlAttributes& attrib)
-{
- m_internal = new DocInternalHandler(this,1);
- m_internal->startInternal(attrib);
-}
-
-IDocIterator *DocHandler::contents() const
-{
- return new DocIterator(*this);
-}
-
-IDocInternal *DocHandler::internal() const
-{
- return m_internal;
-}
-
diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h
deleted file mode 100644
index 59af4e3..0000000
--- a/addon/doxmlparser/src/dochandler.h
+++ /dev/null
@@ -1,1352 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _DOCHANDLER_H
-#define _DOCHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <qxml.h>
-
-#include <doxmlintf.h>
-#include "stringimpl.h"
-#include "basehandler.h"
-#include "baseiterator.h"
-
-class ParagraphHandler;
-class DocInternalHandler;
-class LinkedTextImpl;
-class LinkedTextHandler;
-
-//-----------------------------------------------------------------------------
-
-class DocImpl : public IDoc { public: virtual ~DocImpl() {} };
-
-#define DEFINE_CLS_IMPL(cls) \
- class cls##Impl : public I##cls, public DocImpl { public: virtual ~cls##Impl() {} }
-
-DEFINE_CLS_IMPL(DocMarkup);
-DEFINE_CLS_IMPL(DocPara);
-DEFINE_CLS_IMPL(DocText);
-DEFINE_CLS_IMPL(DocMarkupModifier);
-DEFINE_CLS_IMPL(DocItemizedList);
-DEFINE_CLS_IMPL(DocOrderedList);
-DEFINE_CLS_IMPL(DocListItem);
-DEFINE_CLS_IMPL(DocParameterList);
-DEFINE_CLS_IMPL(DocParameterItem);
-DEFINE_CLS_IMPL(DocParameter);
-DEFINE_CLS_IMPL(DocTitle);
-DEFINE_CLS_IMPL(DocSimpleSect);
-DEFINE_CLS_IMPL(DocRef);
-DEFINE_CLS_IMPL(DocVariableList);
-DEFINE_CLS_IMPL(DocVariableListEntry);
-DEFINE_CLS_IMPL(DocHRuler);
-DEFINE_CLS_IMPL(DocLineBreak);
-DEFINE_CLS_IMPL(DocULink);
-DEFINE_CLS_IMPL(DocEMail);
-DEFINE_CLS_IMPL(DocLink);
-DEFINE_CLS_IMPL(DocProgramListing);
-DEFINE_CLS_IMPL(DocCodeLine);
-DEFINE_CLS_IMPL(DocHighlight);
-DEFINE_CLS_IMPL(DocFormula);
-DEFINE_CLS_IMPL(DocImage);
-DEFINE_CLS_IMPL(DocDotFile);
-DEFINE_CLS_IMPL(DocIndexEntry);
-DEFINE_CLS_IMPL(DocTable);
-DEFINE_CLS_IMPL(DocRow);
-DEFINE_CLS_IMPL(DocEntry);
-DEFINE_CLS_IMPL(DocSection);
-DEFINE_CLS_IMPL(DocVerbatim);
-DEFINE_CLS_IMPL(DocCopy);
-DEFINE_CLS_IMPL(DocTocList);
-DEFINE_CLS_IMPL(DocTocItem);
-DEFINE_CLS_IMPL(DocAnchor);
-DEFINE_CLS_IMPL(DocSymbol);
-DEFINE_CLS_IMPL(DocInternal);
-DEFINE_CLS_IMPL(DocRoot);
-
-//-----------------------------------------------------------------------------
-
-
-/*! \brief Node representing a piece of text.
- *
- */
-class TextNode : public DocTextImpl
-{
- public:
- TextNode(const QString &t,int markup,int level)
- : m_text(t), m_markup(markup), m_headingLevel(level) {}
- virtual ~TextNode() {}
-
- // IDocText
- virtual Kind kind() const { return DocImpl::Text; }
- virtual const IString *text() const { return &m_text; }
- virtual int markup() const { return m_markup; }
- virtual int headingLevel() const { return m_headingLevel; }
-
- private:
- StringImpl m_text;
- int m_markup;
- int m_headingLevel;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a change in the markup style.
- *
- */
-class MarkupModifierNode : public DocMarkupModifierImpl
-{
- public:
- MarkupModifierNode(int markup,bool enabled,int level=0)
- : m_markup(markup), m_enabled(enabled), m_headingLevel(level) {}
- virtual ~MarkupModifierNode() {}
-
- // IDocMarkupModifier
- virtual Kind kind() const { return DocImpl::MarkupModifier; }
- virtual bool enabled() const { return m_enabled; }
- virtual int markup() const { return m_markup; }
- virtual int headingLevel() const { return m_headingLevel; }
-
- private:
- int m_markup;
- bool m_enabled;
- int m_headingLevel;
-};
-
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Handles markup commands in the XML input.
- *
- */
-class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
-{
- public:
- MarkupHandler(QList<DocImpl> &children,QString &curString);
- virtual ~MarkupHandler();
- int markup() const { return m_curMarkup; }
- int headingLevel() const { return m_headingLevel; }
-
- virtual void startBold(const QXmlAttributes &attrib);
- virtual void endBold();
- virtual void startEmphasis(const QXmlAttributes &attrib);
- virtual void endEmphasis();
- virtual void startComputerOutput(const QXmlAttributes &attrib);
- virtual void endComputerOutput();
- virtual void startCenter(const QXmlAttributes &attrib);
- virtual void endCenter();
- virtual void startSmallFont(const QXmlAttributes &attrib);
- virtual void endSmallFont();
- virtual void startSubscript(const QXmlAttributes &attrib);
- virtual void endSubscript();
- virtual void startSuperscript(const QXmlAttributes &attrib);
- virtual void endSuperscript();
- virtual void startPreformatted(const QXmlAttributes &attrib);
- virtual void endPreformatted();
- virtual void startHeading1(const QXmlAttributes &attrib);
- virtual void endHeading1();
- virtual void startHeading2(const QXmlAttributes &attrib);
- virtual void endHeading2();
- virtual void startHeading3(const QXmlAttributes &attrib);
- virtual void endHeading3();
- virtual void startHeading4(const QXmlAttributes &attrib);
- virtual void endHeading4();
- virtual void startHeading5(const QXmlAttributes &attrib);
- virtual void endHeading5();
- virtual void startHeading6(const QXmlAttributes &attrib);
- virtual void endHeading6();
-
-
- private:
- void addTextNode();
-
- QList<DocImpl> &m_children;
- QString &m_curString;
- int m_curMarkup;
- int m_headingLevel;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a paragraph of text and commands.
- *
- */
-// children: itemizedlist, orderedlist, parameterlist, simplesect, ref,
-// variablelist, hruler, linebreak, ulink, email, link
-// programlisting, formula, image, dotfile, indexentry,
-// table
-//
-// children handled by MarkupHandler:
-// bold, computeroutput, emphasis, center,
-// small, subscript, superscript.
-//
-class ParagraphHandler : public DocParaImpl,
- public BaseHandler<ParagraphHandler>
-{
- friend class ParagraphIterator;
-
- public:
- virtual void startParagraph(const QXmlAttributes& attrib);
- virtual void endParagraph();
- virtual void startItemizedList(const QXmlAttributes& attrib);
- virtual void startOrderedList(const QXmlAttributes& attrib);
- virtual void startParameterList(const QXmlAttributes& attrib);
- virtual void startSimpleSect(const QXmlAttributes& attrib);
- virtual void startRef(const QXmlAttributes& attrib);
- virtual void startVariableList(const QXmlAttributes& attrib);
- virtual void startHRuler(const QXmlAttributes& attrib);
- virtual void startLineBreak(const QXmlAttributes& attrib);
- virtual void startULink(const QXmlAttributes& attrib);
- virtual void startEMail(const QXmlAttributes& attrib);
- virtual void startLink(const QXmlAttributes& attrib);
- virtual void startProgramListing(const QXmlAttributes& attrib);
- virtual void startFormula(const QXmlAttributes& attrib);
- virtual void startImage(const QXmlAttributes& attrib);
- virtual void startDotFile(const QXmlAttributes& attrib);
- virtual void startIndexEntry(const QXmlAttributes& attrib);
- virtual void startTable(const QXmlAttributes& attrib);
- virtual void startVerbatim(const QXmlAttributes& attrib);
- virtual void startHtmlOnly(const QXmlAttributes& attrib);
- virtual void startLatexOnly(const QXmlAttributes& attrib);
- virtual void startUmlaut(const QXmlAttributes& attrib);
- virtual void startAcute(const QXmlAttributes& attrib);
- virtual void startGrave(const QXmlAttributes& attrib);
- virtual void startCirc(const QXmlAttributes& attrib);
- virtual void startTilde(const QXmlAttributes& attrib);
- virtual void startSzlig(const QXmlAttributes& attrib);
- virtual void startCedil(const QXmlAttributes& attrib);
- virtual void startRing(const QXmlAttributes& attrib);
- virtual void startNbsp(const QXmlAttributes& attrib);
- virtual void startCopy(const QXmlAttributes& attrib);
- virtual void startAnchor(const QXmlAttributes& attrib);
- virtual void startCopyDoc(const QXmlAttributes& attrib);
- virtual void startTocList(const QXmlAttributes& attrib);
-
- ParagraphHandler(IBaseHandler *parent);
- virtual ~ParagraphHandler();
-
- // IDocPara
- virtual Kind kind() const { return DocImpl::Para; }
- virtual IDocIterator *contents() const;
-
- private:
- void addTextNode();
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
- MarkupHandler *m_markupHandler;
-};
-
-class ParagraphIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- ParagraphIterator(const ParagraphHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a list item.
- *
- */
-class ListItemHandler : public DocListItemImpl, public BaseHandler<ListItemHandler>
-{
- friend class ListItemIterator;
- public:
- ListItemHandler(IBaseHandler *parent);
- virtual ~ListItemHandler();
- virtual void startListItem(const QXmlAttributes& attrib);
- virtual void endListItem();
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- // IDocItem
- virtual Kind kind() const { return DocImpl::ListItem; }
- virtual IDocIterator *contents() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class ListItemIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- ListItemIterator(const ListItemHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing list of items.
- *
- */
-class OrderedListHandler : public DocOrderedListImpl, public BaseHandler<OrderedListHandler>
-{
- friend class OrderedListIterator;
- public:
- OrderedListHandler(IBaseHandler *parent);
- virtual ~OrderedListHandler();
- virtual void startOrderedList(const QXmlAttributes& attrib);
- virtual void endOrderedList();
- virtual void startOrderedListItem(const QXmlAttributes& attrib);
-
- // IDocOrderedList
- virtual Kind kind() const { return DocImpl::OrderedList; }
- virtual IDocIterator *elements() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class OrderedListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- OrderedListIterator(const OrderedListHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing table of contents list.
- *
- */
-class TocListHandler : public DocTocListImpl, public BaseHandler<TocListHandler>
-{
- friend class TocListIterator;
- public:
- TocListHandler(IBaseHandler *parent);
- virtual ~TocListHandler();
- virtual void startTocList(const QXmlAttributes& attrib);
- virtual void endTocList();
- virtual void startTocItem(const QXmlAttributes& attrib);
-
- // IDocTocList
- virtual Kind kind() const { return DocImpl::TocList; }
- virtual IDocIterator *elements() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class TocListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- TocListIterator(const TocListHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a table of contents item.
- *
- */
-class TocItemHandler : public DocTocItemImpl, public BaseHandler<TocItemHandler>
-{
- friend class TocItemIterator;
- public:
- TocItemHandler(IBaseHandler *parent);
- virtual ~TocItemHandler();
- virtual void startTocItem(const QXmlAttributes& attrib);
- virtual void endTocItem();
-
- // IDocItem
- virtual Kind kind() const { return DocImpl::TocItem; }
- virtual const IString *id() const { return &m_id; }
- virtual const IString *title() const { return &m_title; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_id;
- StringImpl m_title;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing list of items.
- *
- */
-class ItemizedListHandler : public DocItemizedListImpl, public BaseHandler<ItemizedListHandler>
-{
- friend class ItemizedListIterator;
- public:
- ItemizedListHandler(IBaseHandler *parent);
- virtual ~ItemizedListHandler();
- virtual void startItemizedList(const QXmlAttributes& attrib);
- virtual void endItemizedList();
- virtual void startItemizedListItem(const QXmlAttributes& attrib);
-
- // IDocItemizedList
- virtual Kind kind() const { return DocImpl::ItemizedList; }
- virtual IDocIterator *elements() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class ItemizedListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- ItemizedListIterator(const ItemizedListHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-
-//-----------------------------------------------------------------------------
-/*! \brief Node representing a parameter.
- *
- */
-class ParameterHandler : public DocParameterImpl,
- public BaseHandler<ParameterHandler>
-{
- public:
- ParameterHandler(IBaseHandler *parent);
- virtual ~ParameterHandler();
- virtual void startParameterName(const QXmlAttributes& attrib);
- virtual void endParameterName();
-
- // IDocParameter
- virtual Kind kind() const { return DocImpl::Parameter; }
- virtual const IString *name() const { return &m_name; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_name;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a list of param names with a single description.
- *
- */
-class ParameterItemHandler : public DocParameterItemImpl,
- public BaseHandler<ParameterItemHandler>
-{
- friend class ParameterItemIterator;
- public:
- ParameterItemHandler(IBaseHandler *parent);
- virtual ~ParameterItemHandler();
- virtual void startParameterItem(const QXmlAttributes& attrib);
- virtual void endParameterItem();
- virtual void startParameterName(const QXmlAttributes& attrib);
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- // IDocParameterItem
- virtual Kind kind() const { return DocImpl::ParameterItem; }
- virtual IDocIterator *paramNames() const;
- virtual IDocPara *description() const { return m_description; }
-
- private:
- IBaseHandler *m_parent;
- QList<ParameterHandler> m_parameters;
- ParagraphHandler *m_description;
-};
-
-class ParameterItemIterator : public BaseIteratorVia<IDocIterator,IDoc,ParameterHandler,DocImpl>
-{
- public:
- ParameterItemIterator(const ParameterItemHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,ParameterHandler,DocImpl>(handler.m_parameters) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a parameter section.
- *
- */
-class ParameterListHandler : public DocParameterListImpl,
- public BaseHandler<ParameterListHandler>
-{
- friend class ParameterListIterator;
- public:
- ParameterListHandler(IBaseHandler *parent);
- virtual ~ParameterListHandler();
- virtual void startParameterList(const QXmlAttributes& attrib);
- virtual void endParameterList();
- virtual void startParameterItem(const QXmlAttributes& attrib);
-
- // IDocParameterList
- virtual Kind kind() const { return DocImpl::ParameterList; }
- virtual Types sectType() const { return m_type; }
- virtual IDocIterator *params() const;
-
- private:
- IBaseHandler *m_parent;
- QList<ParameterItemHandler> m_paramItems;
- Types m_type;
-};
-
-class ParameterListIterator : public BaseIteratorVia<IDocIterator,IDoc,ParameterItemHandler,DocImpl>
-{
- public:
- ParameterListIterator(const ParameterListHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,ParameterItemHandler,DocImpl>(handler.m_paramItems) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a horizontal ruler
- *
- */
-class LineBreakHandler : public DocLineBreakImpl, public BaseHandler<LineBreakHandler>
-{
- public:
- LineBreakHandler(IBaseHandler *parent);
- virtual ~LineBreakHandler();
-
- void startLineBreak(const QXmlAttributes& attrib);
- void endLineBreak();
-
- // IDocLineBreak
- virtual Kind kind() const { return DocImpl::LineBreak; }
-
- private:
- IBaseHandler *m_parent;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a link to section
- *
- */
-class LinkHandler : public DocLinkImpl, public BaseHandler<LinkHandler>
-{
- public:
- LinkHandler(IBaseHandler *parent);
- virtual ~LinkHandler();
-
- void startLink(const QXmlAttributes& attrib);
- void endLink();
-
- // IDocLink
- virtual Kind kind() const { return DocImpl::Link; }
- virtual const IString *refId() const { return &m_ref; }
- virtual const IString *text() const { return &m_text; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_ref;
- StringImpl m_text;
-};
-
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a link to an email address
- *
- */
-class EMailHandler : public DocEMailImpl, public BaseHandler<EMailHandler>
-{
- public:
- EMailHandler(IBaseHandler *parent);
- virtual ~EMailHandler();
-
- void startEMail(const QXmlAttributes& attrib);
- void endEMail();
-
- // IDocEMail
- virtual Kind kind() const { return DocImpl::EMail; }
- virtual const IString *address() const { return &m_address; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_address;
-};
-
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a link to a URL
- *
- */
-class ULinkHandler : public DocULinkImpl, public BaseHandler<ULinkHandler>
-{
- public:
- ULinkHandler(IBaseHandler *parent);
- virtual ~ULinkHandler();
-
- void startULink(const QXmlAttributes& attrib);
- void endULink();
-
- // IDocULink
- virtual Kind kind() const { return DocImpl::ULink; }
- virtual const IString * url() const { return &m_url; }
- virtual const IString * text() const { return &m_text; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_url;
- StringImpl m_text;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a horizontal ruler
- *
- */
-class HRulerHandler : public DocHRulerImpl, public BaseHandler<HRulerHandler>
-{
- public:
- HRulerHandler(IBaseHandler *parent);
- virtual ~HRulerHandler();
-
- void startHRuler(const QXmlAttributes& attrib);
- void endHRuler();
-
- // IDocHRuler
- virtual Kind kind() const { return DocImpl::HRuler; }
-
- private:
- IBaseHandler *m_parent;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a reference to another item
- *
- */
-class RefHandler : public DocRefImpl, public BaseHandler<RefHandler>
-{
- public:
- RefHandler(IBaseHandler *parent);
- virtual ~RefHandler();
- void startRef(const QXmlAttributes& attrib);
- void endRef();
-
- // IDocRef
- virtual Kind kind() const { return DocImpl::Ref; }
- virtual const IString *refId() const { return &m_refId; }
- virtual TargetKind targetKind() const { return m_targetKind; }
- virtual const IString *external() const { return &m_extId; }
- virtual const IString *text() const { return &m_linkText; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_refId;
- StringImpl m_extId;
- StringImpl m_linkText;
- TargetKind m_targetKind;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing the title of a section
- *
- */
-// children: text, ref
-// children handled by MarkupHandler:
-// bold, computeroutput, emphasis, center,
-// small, subscript, superscript.
-class TitleHandler : public DocTitleImpl, public BaseHandler<TitleHandler>
-{
- friend class TitleIterator;
- public:
- TitleHandler(IBaseHandler *parent);
- virtual ~TitleHandler();
- virtual void startTitle(const QXmlAttributes& attrib);
- virtual void endTitle();
- virtual void startRef(const QXmlAttributes& attrib);
- void addTextNode();
-
- // IDocTitle
- virtual Kind kind() const { return DocImpl::Title; }
- virtual IDocIterator *title() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
- MarkupHandler *m_markupHandler;
-};
-
-class TitleIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- TitleIterator(const TitleHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing a simple section with an unnumbered header.
- *
- */
-// children: title, para
-class SimpleSectHandler : public DocSimpleSectImpl,
- public BaseHandler<SimpleSectHandler>
-{
- public:
- SimpleSectHandler(IBaseHandler *parent);
- virtual ~SimpleSectHandler();
- virtual void startSimpleSect(const QXmlAttributes& attrib);
- virtual void endSimpleSect();
- virtual void startTitle(const QXmlAttributes& attrib);
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- // IDocSimpleSect
- virtual Kind kind() const { return DocImpl::SimpleSect; }
- virtual Types type() const { return m_type; }
- virtual const IString *typeString() const { return &m_typeString; }
- virtual IDocTitle *title() const { return m_title; }
- virtual IDocPara *description() const { return m_paragraph; }
-
- private:
- IBaseHandler *m_parent;
- ParagraphHandler *m_paragraph;
- Types m_type;
- StringImpl m_typeString;
- TitleHandler *m_title;
-};
-
-//-----------------------------------------------------------------------------
-
-/* \brief Node representing an named item of a VariableList.
- *
- */
-class VariableListEntryHandler : public DocVariableListEntryImpl,
- public BaseHandler<VariableListEntryHandler>
-{
- public:
- virtual void startVarListEntry(const QXmlAttributes& attrib);
- virtual void endVarListEntry();
- virtual void startListItem(const QXmlAttributes& attrib);
- virtual void endListItem();
- virtual void startTerm(const QXmlAttributes& attrib);
- virtual void endTerm();
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- VariableListEntryHandler(IBaseHandler *parent);
- virtual ~VariableListEntryHandler();
-
- // IDocVariableListEntry
- virtual Kind kind() const { return DocImpl::VariableListEntry; }
- virtual ILinkedTextIterator *term() const;
- virtual IDocPara *description() const { return m_description; }
-
- private:
- IBaseHandler* m_parent;
- QList<LinkedTextImpl> m_term;
- ParagraphHandler* m_description;
- LinkedTextHandler* m_linkedTextHandler;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a list of named items.
- *
- */
-// children: varlistentry, listitem
-class VariableListHandler : public DocVariableListImpl,
- public BaseHandler<VariableListHandler>
-{
- friend class VariableListIterator;
-
- public:
- virtual void startVariableList(const QXmlAttributes& attrib);
- virtual void endVariableList();
- virtual void startVarListEntry(const QXmlAttributes& attrib);
- virtual void startListItem(const QXmlAttributes& attrib);
-
- VariableListHandler(IBaseHandler *parent);
- virtual ~VariableListHandler();
-
- // IDocVariableList
- virtual Kind kind() const { return DocImpl::VariableList; }
- virtual IDocIterator *entries() const;
-
- private:
- IBaseHandler *m_parent;
- QList<VariableListEntryHandler> m_entries;
- VariableListEntryHandler *m_curEntry;
-};
-
-class VariableListIterator : public BaseIteratorVia<IDocIterator,IDoc,VariableListEntryHandler,DocImpl>
-{
- public:
- VariableListIterator(const VariableListHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,VariableListEntryHandler,DocImpl>(handler.m_entries) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a highlighted text fragment.
- *
- */
-// children: ref
-class HighlightHandler : public DocHighlightImpl, public BaseHandler<HighlightHandler>
-{
- friend class HighlightIterator;
- public:
- HighlightHandler(IBaseHandler *parent);
- virtual ~HighlightHandler();
- void startHighlight(const QXmlAttributes& attrib);
- void endHighlight();
- virtual void startRef(const QXmlAttributes&);
- virtual void startSpace(const QXmlAttributes&);
-
- // IDocHighlight
- virtual Kind kind() const { return DocImpl::Highlight; }
- virtual HighlightKind highlightKind() const { return m_hl; }
- virtual IDocIterator *codeElements() const;
-
- private:
- void addTextNode();
-
- IBaseHandler *m_parent;
- HighlightKind m_hl;
- QString m_hlString;
- QList<DocImpl> m_children;
-};
-
-class HighlightIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- HighlightIterator(const HighlightHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a line of code.
- *
- */
-// children: linenumber, highlight, anchor, ref
-class CodeLineHandler : public DocCodeLineImpl, public BaseHandler<CodeLineHandler>
-{
- friend class CodeLineIterator;
- public:
-
- virtual void startCodeLine(const QXmlAttributes&);
- virtual void endCodeLine();
- virtual void startLineNumber(const QXmlAttributes&);
- virtual void endLineNumber();
- virtual void startHighlight(const QXmlAttributes&);
- virtual void startRef(const QXmlAttributes&);
-
- CodeLineHandler(IBaseHandler *parent);
- virtual ~CodeLineHandler();
-
- // IDocCodeLine
- virtual Kind kind() const { return DocImpl::CodeLine; }
- virtual int lineNumber() const { return m_lineNumber; }
- virtual const IString *refId() const { return &m_refId; }
- virtual IDocIterator *codeElements() const;
-
- private:
- void addTextNode();
-
- IBaseHandler *m_parent;
- int m_lineNumber;
- StringImpl m_refId;
- QList<DocImpl> m_children;
-};
-
-class CodeLineIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- CodeLineIterator(const CodeLineHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a program listing
- *
- */
-// children: codeline, linenumber
-class ProgramListingHandler : public DocProgramListingImpl, public BaseHandler<ProgramListingHandler>
-{
- friend class ProgramListingIterator;
- public:
- virtual void startProgramListing(const QXmlAttributes& attrib);
- virtual void endProgramListing();
- virtual void startCodeLine(const QXmlAttributes&);
- virtual void startLineNumber(const QXmlAttributes&);
-
- ProgramListingHandler(IBaseHandler *parent);
- virtual ~ProgramListingHandler();
-
- // IDocProgramListing
- virtual Kind kind() const { return DocImpl::ProgramListing; }
- virtual IDocIterator *codeLines() const;
-
- private:
- IBaseHandler *m_parent;
- QList<CodeLineHandler> m_children;
- bool m_hasLineNumber;
-};
-
-//-----------------------------------------------------------------------------
-
-class ProgramListingIterator : public BaseIteratorVia<IDocIterator,IDoc,CodeLineHandler,DocImpl>
-{
- public:
- ProgramListingIterator(const ProgramListingHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,CodeLineHandler,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a formula.
- *
- */
-// children: -
-class FormulaHandler : public DocFormulaImpl, public BaseHandler<FormulaHandler>
-{
- public:
- FormulaHandler(IBaseHandler *parent);
- virtual ~FormulaHandler();
- void startFormula(const QXmlAttributes& attrib);
- void endFormula();
-
- // IDocFormula
- virtual Kind kind() const { return DocImpl::Formula; }
- virtual const IString *id() const { return &m_id; }
- virtual const IString *text() const { return &m_text; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_id;
- StringImpl m_text;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an image.
- *
- */
-// children: -
-class ImageHandler : public DocImageImpl, public BaseHandler<ImageHandler>
-{
- public:
- ImageHandler(IBaseHandler *parent);
- virtual ~ImageHandler();
- void startImage(const QXmlAttributes& attrib);
- void endImage();
-
- // IDocImage
- virtual Kind kind() const { return DocImpl::Image; }
- virtual const IString *name() const { return &m_name; }
- virtual const IString *caption() const { return &m_caption; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_name;
- StringImpl m_caption;
-};
-
-
-//-----------------------------------------------------------------------------
-/*! \brief Node representing an anchor.
- *
- */
-// children: -
-class AnchorHandler : public DocAnchorImpl, public BaseHandler<AnchorHandler>
-{
- public:
- AnchorHandler(IBaseHandler *parent);
- virtual ~AnchorHandler();
- void startAnchor(const QXmlAttributes& attrib);
- void endAnchor();
-
- // IDocAnchor
- virtual Kind kind() const { return DocImpl::Anchor; }
- virtual const IString *id() const { return &m_id; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_id;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a dot file.
- *
- */
-// children: -
-class DotFileHandler : public DocDotFileImpl, public BaseHandler<DotFileHandler>
-{
- public:
- DotFileHandler(IBaseHandler *parent);
- virtual ~DotFileHandler();
- void startDotFile(const QXmlAttributes& attrib);
- void endDotFile();
-
- // IDocDotFile
- virtual Kind kind() const { return DocImpl::DotFile; }
- virtual const IString *name() const { return &m_name; }
- virtual const IString *caption() const { return &m_caption; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_name;
- StringImpl m_caption;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an entry in the index.
- *
- */
-// children: -
-class IndexEntryHandler : public DocIndexEntryImpl, public BaseHandler<IndexEntryHandler>
-{
- public:
- IndexEntryHandler(IBaseHandler *parent);
- virtual ~IndexEntryHandler();
- void startIndexEntry(const QXmlAttributes& attrib);
- void endIndexEntry();
- void startPrimaryIE(const QXmlAttributes& attrib);
- void endPrimaryIE();
- void startSecondaryIE(const QXmlAttributes& attrib);
- void endSecondaryIE();
-
- // IDocIndexEntry
- virtual Kind kind() const { return DocImpl::IndexEntry; }
- virtual const IString *primary() const { return &m_primary; }
- virtual const IString *secondary() const { return &m_secondary; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_primary;
- StringImpl m_secondary;
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an entry in the table entry.
- *
- */
-// children: para
-class EntryHandler : public DocEntryImpl, public BaseHandler<EntryHandler>
-{
- friend class EntryIterator;
- public:
- EntryHandler(IBaseHandler *parent);
- virtual ~EntryHandler();
- void startEntry(const QXmlAttributes& attrib);
- void endEntry();
- void startParagraph(const QXmlAttributes& attrib);
-
- // IDocEntry
- virtual Kind kind() const { return DocImpl::Entry; }
- virtual IDocIterator *contents() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class EntryIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- EntryIterator(const EntryHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an entry in the table row.
- *
- */
-// children: entry
-class RowHandler : public DocRowImpl, public BaseHandler<RowHandler>
-{
- friend class RowIterator;
- public:
- RowHandler(IBaseHandler *parent);
- virtual ~RowHandler();
- void startRow(const QXmlAttributes& attrib);
- void endRow();
- void startEntry(const QXmlAttributes& attrib);
-
- // IDocRow
- virtual Kind kind() const { return DocImpl::Row; }
- virtual IDocIterator *entries() const;
-
- private:
- IBaseHandler *m_parent;
- QList<EntryHandler> m_children;
-};
-
-class RowIterator : public BaseIteratorVia<IDocIterator,IDoc,EntryHandler,DocImpl>
-{
- public:
- RowIterator(const RowHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,EntryHandler,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an entry in the table.
- *
- */
-// children: row, caption
-class TableHandler : public DocTableImpl, public BaseHandler<TableHandler>
-{
- friend class TableIterator;
- public:
- TableHandler(IBaseHandler *parent);
- virtual ~TableHandler();
- void startTable(const QXmlAttributes& attrib);
- void endTable();
- void startRow(const QXmlAttributes& attrib);
- void startCaption(const QXmlAttributes& attrib);
- void endCaption();
-
- // IDocTable
- virtual Kind kind() const { return DocImpl::Table; }
- virtual IDocIterator *rows() const;
- virtual int numColumns() const { return m_numColumns; }
- virtual const IString *caption() const { return &m_caption; }
-
- private:
- IBaseHandler *m_parent;
- QList<RowHandler> m_children;
- int m_numColumns;
- StringImpl m_caption;
-};
-
-class TableIterator : public BaseIteratorVia<IDocIterator,IDoc,RowHandler,DocImpl>
-{
- public:
- TableIterator(const TableHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,RowHandler,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a copied piece of documentation.
- *
- */
-class CopyHandler : public DocCopyImpl, public BaseHandler<CopyHandler>
-{
- friend class CopyIterator;
- public:
- CopyHandler(IBaseHandler *parent);
- virtual ~CopyHandler();
- virtual void startCopy(const QXmlAttributes& attrib);
- virtual void endCopy();
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- // IDocCopy
- virtual Kind kind() const { return DocImpl::Copy; }
- virtual IDocIterator *contents() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
-};
-
-class CopyIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- CopyIterator(const CopyHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an preformatted section
- */
-class VerbatimHandler : public DocVerbatimImpl,
- public BaseHandler<VerbatimHandler>
-{
- public:
- VerbatimHandler(IBaseHandler *parent);
- virtual ~VerbatimHandler();
- void startVerbatim(const QXmlAttributes& attrib,Types type);
- void endVerbatim();
-
- // IDocVerbatim
- virtual Kind kind() const { return DocImpl::Verbatim; }
- virtual const IString *text() const { return &m_text; }
- virtual Types type() const { return m_type; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_text;
- Types m_type;
-};
-
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing an special symbol.
- *
- */
-// children: -
-class SymbolHandler : public DocSymbolImpl, public BaseHandler<SymbolHandler>
-{
- public:
- SymbolHandler(IBaseHandler *parent,Types type);
- virtual ~SymbolHandler();
- void startSymbol(const QXmlAttributes& attrib);
- void endSymbol();
-
- // IDocSymbol
- virtual Kind kind() const { return DocImpl::Symbol; }
- virtual Types type() const { return m_type; }
- virtual const IString *typeString() const { return &m_typeString; }
- virtual char letter() const { return m_letter; }
-
- private:
- IBaseHandler *m_parent;
- char m_letter;
- Types m_type;
- StringImpl m_typeString;
-};
-
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a section.
- *
- */
-// children: title, para, sect(n+1)
-class DocSectionHandler : public DocSectionImpl, public BaseHandler<DocSectionHandler>
-{
- friend class DocSectionParaIterator;
- friend class DocSectionSubIterator;
- public:
- DocSectionHandler(IBaseHandler *parent,int level);
- virtual ~DocSectionHandler();
- virtual void startDocSection(const QXmlAttributes& attrib);
- virtual void endDocSection();
- virtual void startTitle(const QXmlAttributes& attrib);
- virtual void startSubSection(const QXmlAttributes& attrib);
- virtual void startParagraph(const QXmlAttributes& attrib);
- virtual void startInternal(const QXmlAttributes& attrib);
-
- // IDocSection
- virtual Kind kind() const { return DocImpl::Section; }
- virtual const IString *id() const { return &m_id; }
- virtual int level() const { return m_level; }
- virtual IDocTitle *title() const { return m_title; }
- virtual IDocIterator *paragraphs() const;
- virtual IDocIterator *subSections() const;
- virtual IDocInternal *internal() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_paragraphs;
- QList<DocImpl> m_subsections;
- DocInternalHandler *m_internal;
- StringImpl m_id;
- int m_level;
- TitleHandler *m_title;
-};
-
-class DocSectionParaIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- DocSectionParaIterator(const DocSectionHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_paragraphs) {}
-};
-
-class DocSectionSubIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- DocSectionSubIterator(const DocSectionHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_subsections) {}
-};
-
-//-----------------------------------------------------------------------------
-
-class DocInternalHandler : public DocInternalImpl, public BaseHandler<DocInternalHandler>
-{
- public:
- friend class DocInternalParaIterator;
- friend class DocInternalSubIterator;
- DocInternalHandler(IBaseHandler *parent,int level);
- virtual ~DocInternalHandler();
- virtual void startInternal(const QXmlAttributes& attrib);
- virtual void endInternal();
- virtual void startSubSection(const QXmlAttributes& attrib);
- virtual void startParagraph(const QXmlAttributes& attrib);
-
- // IDocInternal
- virtual Kind kind() const { return DocImpl::Internal; }
- virtual IDocIterator *paragraphs() const;
- virtual IDocIterator *subSections() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_paragraphs;
- QList<DocImpl> m_subsections;
- int m_level;
-};
-
-class DocInternalParaIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- DocInternalParaIterator(const DocInternalHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_paragraphs) {}
-};
-
-class DocInternalSubIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- DocInternalSubIterator(const DocInternalHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_subsections) {}
-};
-
-
-//-----------------------------------------------------------------------------
-
-/*! \brief Node representing a documentation block.
- *
- */
-// children: para, title, sect1, internal
-class DocHandler : public DocRootImpl, public BaseHandler<DocHandler>
-{
- friend class DocIterator;
- public:
- virtual void startDoc(const QXmlAttributes& attrib);
- virtual void endDoc();
- virtual void startParagraph(const QXmlAttributes& attrib);
- virtual void startSect1(const QXmlAttributes& attrib);
- virtual void startTitle(const QXmlAttributes& attrib);
- virtual void startInternal(const QXmlAttributes& attrib);
-
- DocHandler(IBaseHandler *parent);
- virtual ~DocHandler();
-
- // IDocRoot
- virtual Kind kind() const { return DocImpl::Root; }
- virtual IDocIterator *contents() const;
- virtual IDocInternal *internal() const;
-
- private:
- IBaseHandler *m_parent;
- QList<DocImpl> m_children;
- DocInternalHandler *m_internal;
-};
-
-class DocIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
-{
- public:
- DocIterator(const DocHandler &handler) :
- BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
-};
-
-//-----------------------------------------------------------------------------
-
-void dochandler_init();
-void dochandler_exit();
-
-#endif
diff --git a/addon/doxmlparser/src/graphhandler.cpp b/addon/doxmlparser/src/graphhandler.cpp
deleted file mode 100644
index de30923..0000000
--- a/addon/doxmlparser/src/graphhandler.cpp
+++ /dev/null
@@ -1,216 +0,0 @@
-#include "graphhandler.h"
-
-class EdgeRelationMapper
-{
- public:
- EdgeRelationMapper()
- {
- m_map.insert("public-inheritance", IChildNode::PublicInheritance);
- m_map.insert("protected-inheritance", IChildNode::ProtectedInheritance);
- m_map.insert("private-inheritance", IChildNode::PrivateInheritance);
- m_map.insert("usage", IChildNode::Usage);
- m_map.insert("template-instance", IChildNode::TemplateInstance);
- }
- IChildNode::NodeRelation stringToNodeRelation(const QString &nrStr)
- {
- return m_map[nrStr];
- }
- private:
- QMap<QString,IChildNode::NodeRelation> m_map;
-};
-
-static EdgeRelationMapper *s_edgeRelationMapper;
-
-void graphhandler_init()
-{
- s_edgeRelationMapper = new EdgeRelationMapper;
-}
-
-void graphhandler_exit()
-{
- delete s_edgeRelationMapper;
-}
-
-//------------------------------------------------------------------------
-
-GraphHandler::GraphHandler(IBaseHandler *parent,const char *endTag)
- : m_parent(parent)
-{
- addEndHandler(endTag,this,&GraphHandler::endGraph);
- addStartHandler("node",this,&GraphHandler::startNode);
- m_nodes.setAutoDelete(TRUE);
- m_nodeDict = new QDict<NodeHandler>(1009);
-}
-
-GraphHandler::~GraphHandler()
-{
- delete m_nodeDict;
-}
-
-void GraphHandler::startGraph(const QXmlAttributes &)
-{
- debug(2,"startGraph\n");
- m_parent->setDelegate(this);
-}
-
-void GraphHandler::endGraph()
-{
- debug(2,"endGraph\n");
- m_parent->setDelegate(0);
-}
-
-void GraphHandler::startNode(const QXmlAttributes &attrib)
-{
- NodeHandler *n = new NodeHandler(this);
- n->startNode(attrib);
- m_nodes.append(n);
- m_nodeDict->insert(attrib.value("id").utf8(),n);
-}
-
-INodeIterator *GraphHandler::nodes() const
-{
- return new NodeIterator(*this);
-}
-
-NodeHandler *GraphHandler::getNodeById(const QString &id) const
-{
- return m_nodeDict->find(id.utf8());
-}
-
-//------------------------------------------------------------------------
-
-NodeHandler::NodeHandler(GraphHandler *gh)
- : m_parent(gh), m_graph(gh)
-{
- addEndHandler("node",this,&NodeHandler::endNode);
- addStartHandler("link",this,&NodeHandler::startLink);
- addEndHandler("link",this,&NodeHandler::endLink);
- addStartHandler("label",this,&NodeHandler::startLabel);
- addEndHandler("label",this,&NodeHandler::endLabel);
- addStartHandler("childnode",this,&NodeHandler::startChildNode);
- m_children.setAutoDelete(TRUE);
-}
-
-NodeHandler::~NodeHandler()
-{
-}
-
-void NodeHandler::startNode(const QXmlAttributes &attrib)
-{
- debug(2,"startNode\n");
- m_parent->setDelegate(this);
- m_id = attrib.value("id");
-}
-
-void NodeHandler::endNode()
-{
- debug(2,"endNode\n");
- m_parent->setDelegate(0);
-}
-
-void NodeHandler::startLink(const QXmlAttributes &attrib)
-{
- m_link = attrib.value("refid");
-}
-
-void NodeHandler::endLink()
-{
-}
-
-void NodeHandler::startLabel(const QXmlAttributes &/*attrib*/)
-{
- m_curString="";
-}
-
-void NodeHandler::endLabel()
-{
- m_label = m_curString;
-}
-
-void NodeHandler::startChildNode(const QXmlAttributes &attrib)
-{
- ChildNodeHandler *cnh = new ChildNodeHandler(this,m_graph);
- cnh->startChildNode(attrib);
- m_children.append(cnh);
-}
-
-IChildNodeIterator *NodeHandler::children() const
-{
- return new ChildNodeIterator(*this);
-}
-
-//------------------------------------------------------------------------
-
-ChildNodeHandler::ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh)
- : m_parent(parent), m_graph(gh)
-{
- addEndHandler("childnode",this,&ChildNodeHandler::endChildNode);
- addStartHandler("edgelabel",this,&ChildNodeHandler::startEdgeLabel);
- m_edgeLabels.setAutoDelete(TRUE);
-}
-
-ChildNodeHandler::~ChildNodeHandler()
-{
-}
-
-void ChildNodeHandler::startChildNode(const QXmlAttributes &attrib)
-{
- debug(2,"startChildNode\n");
- m_id = attrib.value("refid");
- m_relationString = attrib.value("relation");
- m_relation = s_edgeRelationMapper->stringToNodeRelation(m_relationString);
- m_parent->setDelegate(this);
-}
-
-void ChildNodeHandler::endChildNode()
-{
- debug(2,"endChildNode\n");
- m_parent->setDelegate(0);
-}
-
-
-void ChildNodeHandler::startEdgeLabel(const QXmlAttributes &attrib)
-{
- EdgeLabelHandler *elh = new EdgeLabelHandler(this);
- elh->startEdgeLabel(attrib);
- m_edgeLabels.append(elh);
-}
-
-IEdgeLabelIterator *ChildNodeHandler::edgeLabels() const
-{
- return new EdgeLabelIterator(*this);
-}
-
-INode *ChildNodeHandler::node() const
-{
- return m_graph->getNodeById(m_id);
-}
-
-//-----------------------------------------------------------------------
-
-EdgeLabelHandler::EdgeLabelHandler(IBaseHandler *parent)
- : m_parent(parent)
-{
- addEndHandler("edgelabel",this,&EdgeLabelHandler::endEdgeLabel);
-}
-
-EdgeLabelHandler::~EdgeLabelHandler()
-{
-}
-
-void EdgeLabelHandler::startEdgeLabel(const QXmlAttributes &)
-{
- m_parent->setDelegate(this);
- m_curString="";
-}
-
-void EdgeLabelHandler::endEdgeLabel()
-{
- m_label=m_curString;
- m_parent->setDelegate(0);
-}
-
-
-
-
-
diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h
deleted file mode 100644
index 783b9f2..0000000
--- a/addon/doxmlparser/src/graphhandler.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _GRAPHHANDLER_H
-#define _GRAPHHANDLER_H
-
-#include "stringimpl.h"
-#include "doxmlintf.h"
-#include "basehandler.h"
-#include "baseiterator.h"
-
-class NodeHandler;
-class ChildNodeHandler;
-class EdgeLabelHandler;
-
-class GraphHandler : public IGraph, public BaseHandler<GraphHandler>
-{
- friend class NodeIterator;
- public:
- GraphHandler(IBaseHandler *parent,const char *endTag);
- virtual ~GraphHandler();
-
- void startGraph(const QXmlAttributes &attrib);
- void endGraph();
- void startNode(const QXmlAttributes &attrib);
- NodeHandler *getNodeById(const QString &id) const;
-
- // IGraph
- virtual INodeIterator *nodes() const;
-
- private:
- IBaseHandler *m_parent;
- QList<NodeHandler> m_nodes;
- QDict<NodeHandler> *m_nodeDict;
-};
-
-//----------------------------------------------------------------------
-
-class NodeHandler : public INode, public BaseHandler<NodeHandler>
-{
- friend class ChildNodeIterator;
- public:
- NodeHandler(GraphHandler *gh);
- virtual ~NodeHandler();
-
- void startNode(const QXmlAttributes &attrib);
- void endNode();
- void startLabel(const QXmlAttributes &attrib);
- void endLabel();
- void startLink(const QXmlAttributes &attrib);
- void endLink();
- void startChildNode(const QXmlAttributes &attrib);
-
- // INode
- virtual const IString *id() const { return &m_id; }
- virtual const IString *label() const { return &m_label; }
- virtual const IString *linkId() const { return &m_link; }
- virtual IChildNodeIterator *children() const;
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_id;
- StringImpl m_label;
- StringImpl m_link;
- QList<ChildNodeHandler> m_children;
- GraphHandler *m_graph;
-};
-
-class NodeIterator : public BaseIterator<INodeIterator,INode,NodeHandler>
-{
- public:
- NodeIterator(const GraphHandler &handler) :
- BaseIterator<INodeIterator,INode,NodeHandler>(handler.m_nodes) {}
-};
-
-//----------------------------------------------------------------------
-
-class ChildNodeHandler : public IChildNode, public BaseHandler<ChildNodeHandler>
-{
- friend class EdgeLabelIterator;
- public:
- ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh);
- virtual ~ChildNodeHandler();
-
- void startChildNode(const QXmlAttributes &attrib);
- void endChildNode();
- void startEdgeLabel(const QXmlAttributes &attrib);
-
- // IChildNode
- virtual INode *node() const;
- virtual NodeRelation relation() const { return m_relation; }
- virtual const IString * relationString() const { return &m_relationString; }
- virtual IEdgeLabelIterator *edgeLabels() const;
-
- private:
- IBaseHandler *m_parent;
- QString m_id;
- NodeRelation m_relation;
- StringImpl m_relationString;
- QList<EdgeLabelHandler> m_edgeLabels;
- GraphHandler *m_graph;
-};
-
-class ChildNodeIterator : public BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>
-{
- public:
- ChildNodeIterator(const NodeHandler &handler) :
- BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>(handler.m_children) {}
-};
-
-//----------------------------------------------------------------------
-
-class EdgeLabelHandler : public IEdgeLabel, public BaseHandler<EdgeLabelHandler>
-{
- friend class EdgeLabelIterator;
- public:
- EdgeLabelHandler(IBaseHandler *parent);
- virtual ~EdgeLabelHandler();
-
- void startEdgeLabel(const QXmlAttributes &attrib);
- void endEdgeLabel();
-
- // IEdgeLabel
- virtual const IString *label() const { return &m_label; }
-
- private:
- IBaseHandler *m_parent;
- StringImpl m_label;
-};
-
-class EdgeLabelIterator : public BaseIterator<IEdgeLabelIterator,IEdgeLabel,EdgeLabelHandler>
-{
- public:
- EdgeLabelIterator(const ChildNodeHandler &handler) :
- BaseIterator<IEdgeLabelIterator,IEdgeLabel,EdgeLabelHandler>(handler.m_edgeLabels) {}
-};
-
-void graphhandler_init();
-void graphhandler_exit();
-
-#endif
-
diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp
deleted file mode 100644
index 140a48b..0000000
--- a/addon/doxmlparser/src/linkedtexthandler.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-#include "linkedtexthandler.h"
-#include "debug.h"
-#include <doxmlintf.h>
-#include "stringimpl.h"
-
-class LT_Text : public LinkedTextImpl, public ILT_Text
-{
- public:
- LT_Text(const QString &text) : m_text(text) {}
- virtual ~LT_Text() {}
-
- // ILT_Text
- virtual const IString *text() const { return &m_text; }
- virtual Kind kind() const { return LinkedTextImpl::Kind_Text; }
- private:
- StringImpl m_text;
-};
-
-class LT_Ref : public LinkedTextImpl, public ILT_Ref
-{
- public:
- LT_Ref() {}
- virtual ~LT_Ref() {}
- void setRefId(const QString &refId) { m_refId=refId; }
- void setText(const QString &text) { m_text=text; }
- void setExtId(const QString &extId) { m_extId=extId; }
- void setTargetKind(TargetKind k) { m_targetKind=k; }
-
- // ILT_Ref
- virtual const IString *text() const { return &m_text; }
- virtual const IString * id() const { return &m_refId; }
- virtual TargetKind targetKind() const { return m_targetKind; }
- virtual const IString *external() const { return &m_extId; }
- virtual Kind kind() const { return LinkedTextImpl::Kind_Ref; }
-
- private:
- StringImpl m_refId;
- StringImpl m_extId;
- StringImpl m_text;
- TargetKind m_targetKind = TargetKind::Member;
-};
-
-LinkedTextHandler::LinkedTextHandler(IBaseHandler *parent,
- QList<LinkedTextImpl> &children
- )
- : m_parent(parent), m_children(children)
-{
- addStartHandler("ref",this,&LinkedTextHandler::startRef);
- addEndHandler("ref",this,&LinkedTextHandler::endRef);
- m_children.setAutoDelete(TRUE);
- m_ref=0;
-}
-
-LinkedTextHandler::~LinkedTextHandler()
-{
-}
-
-void LinkedTextHandler::start(const char *endTag)
-{
- addEndHandler(endTag,this,&LinkedTextHandler::end);
- m_parent->setDelegate(this);
- m_curString="";
-}
-
-void LinkedTextHandler::end()
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(new LT_Text(m_curString));
- debug(2,"LinkedTextHandler: add text '%s'\n",m_curString.data());
- m_curString="";
- }
- m_parent->setDelegate(0);
-}
-
-void LinkedTextHandler::startRef(const QXmlAttributes& attrib)
-{
- if (!m_curString.isEmpty())
- {
- m_children.append(new LT_Text(m_curString));
- debug(2,"LinkedTextHandler: add text '%s'\n",m_curString.data());
- m_curString="";
- }
- ASSERT(m_ref==0);
- m_ref = new LT_Ref;
- m_ref->setRefId(attrib.value("refid"));
- m_ref->setExtId(attrib.value("external"));
- ASSERT(attrib.value("kindref")=="compound" || attrib.value("kindref")=="member");
- m_ref->setTargetKind(attrib.value("kindref")=="compound" ? ILT_Ref::Compound : ILT_Ref::Member);
-}
-
-void LinkedTextHandler::endRef()
-{
- m_ref->setText(m_curString);
- m_children.append(m_ref);
- debug(2,"LinkedTextHandler: add ref '%s'\n",m_ref->text()->latin1());
- m_ref=0;
-}
-
-QString LinkedTextHandler::toString(const QList<LinkedTextImpl> &list)
-{
- QListIterator<LinkedTextImpl> li(list);
- QString result;
- LinkedTextImpl *lt;
- for (li.toFirst();(lt=li.current());++li)
- {
- switch(lt->kind())
- {
- case ILinkedText::Kind_Text:
- result+=dynamic_cast<ILT_Text*>(lt)->text()->latin1();
- break;
- case ILinkedText::Kind_Ref:
- result+=dynamic_cast<ILT_Ref *>(lt)->text()->latin1();
- break;
- }
- }
- return result;
-}
-
diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h
deleted file mode 100644
index 816726e..0000000
--- a/addon/doxmlparser/src/linkedtexthandler.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-#ifndef LINKEDTEXTHANDLER_H
-#define LINKEDTEXTHANDLER_H
-
-#include "baseiterator.h"
-#include "basehandler.h"
-
-class LT_Ref;
-class LinkedTextImpl : public ILinkedText
-{
- public:
- virtual ~LinkedTextImpl() {}
-};
-
-class LinkedTextHandler : public BaseHandler<LinkedTextHandler>
-{
- public:
- LinkedTextHandler(IBaseHandler *parent,QList<LinkedTextImpl> &children);
- virtual ~LinkedTextHandler();
- virtual void start(const char *endTag);
- virtual void end();
- virtual void startRef(const QXmlAttributes& attrib);
- virtual void endRef();
- static QString toString(const QList<LinkedTextImpl> &list);
-
- // ILinkedText
-
- private:
- IBaseHandler *m_parent;
- QList<LinkedTextImpl> &m_children;
- LT_Ref *m_ref;
-};
-
-class LinkedTextIterator : public BaseIterator<ILinkedTextIterator,ILinkedText,LinkedTextImpl>
-{
- public:
- LinkedTextIterator(const QList<LinkedTextImpl> &list) :
- BaseIterator<ILinkedTextIterator,ILinkedText,LinkedTextImpl>(list) {}
-};
-
-#endif
diff --git a/addon/doxmlparser/src/loamhandler.cpp b/addon/doxmlparser/src/loamhandler.cpp
deleted file mode 100644
index 52aa576..0000000
--- a/addon/doxmlparser/src/loamhandler.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "loamhandler.h"
-#include "memberhandler.h"
-#include "linkedtexthandler.h"
-#include "paramhandler.h"
-
-
-ListOfAllMembersHandler::ListOfAllMembersHandler(IBaseHandler *parent) : m_parent(parent)
-{
- m_members.setAutoDelete(TRUE);
-
- addStartHandler("member",this,&ListOfAllMembersHandler::startMember);
- addStartHandler("name",this,&ListOfAllMembersHandler::startName);
- addEndHandler("name",this,&ListOfAllMembersHandler::endName);
- addStartHandler("scope",this,&ListOfAllMembersHandler::startScope);
- addEndHandler("scope",this,&ListOfAllMembersHandler::endScope);
-
- addEndHandler("listofallmembers",this,&ListOfAllMembersHandler::endListOfAllMembers);
-}
-
-void ListOfAllMembersHandler::initialize(MainHandler *mh)
-{
- QListIterator<MemberReference> mli(m_members);
- MemberReference *mr;
- for (;(mr=mli.current());++mli)
- {
- mr->initialize(mh);
- }
-}
-
-void ListOfAllMembersHandler::startMember(const QXmlAttributes& attrib)
-{
- MemberReference *mr = new MemberReference;
- mr->m_memId = attrib.value("refid");
- mr->m_virtualness = attrib.value("virt");
- mr->m_protection = attrib.value("prot");
- mr->m_ambiguityScope = attrib.value("ambiguityscope");
- m_members.append(new MemberReference);
-}
-
-void ListOfAllMembersHandler::startName(const QXmlAttributes&)
-{
- m_curString="";
-}
-
-void ListOfAllMembersHandler::endName()
-{
- ASSERT(m_members.getLast());
- m_members.getLast()->m_name = m_curString;
-}
-
-void ListOfAllMembersHandler::startScope(const QXmlAttributes&)
-{
- m_curString="";
-}
-
-void ListOfAllMembersHandler::endScope()
-{
- ASSERT(m_members.getLast());
- m_members.getLast()->m_scope = m_curString;
-}
-
-void ListOfAllMembersHandler::startListOfAllMembers(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"listofallmembers start\n");
-}
-
-void ListOfAllMembersHandler::endListOfAllMembers()
-{
- m_parent->setDelegate(0);
- debug(2,"listofallmembers end\n");
-}
-
-IMemberReferenceIterator *ListOfAllMembersHandler::members() const
-{
- return new MemberReferenceIterator(m_members);
-}
diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h
deleted file mode 100644
index 48a9952..0000000
--- a/addon/doxmlparser/src/loamhandler.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _LOAMHANDLER_H
-#define _LOAMHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <doxmlintf.h>
-
-#include "basehandler.h"
-
-class MainHandler;
-class MemberReference;
-
-class ListOfAllMembersHandler : public BaseHandler<ListOfAllMembersHandler>
-{
- public:
- virtual void startMember(const QXmlAttributes& attrib);
- virtual void startName(const QXmlAttributes& attrib);
- virtual void endName();
- virtual void startScope(const QXmlAttributes& attrib);
- virtual void endScope();
- virtual void startListOfAllMembers(const QXmlAttributes& attrib);
- virtual void endListOfAllMembers();
-
- ListOfAllMembersHandler(IBaseHandler *parent);
- virtual ~ListOfAllMembersHandler() {}
-
- void initialize(MainHandler *mh);
-
- virtual IMemberReferenceIterator *members() const;
-
- protected:
- IBaseHandler *m_parent;
- QList<MemberReference> m_members;
-};
-
-#endif
-
diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp
deleted file mode 100644
index a1ba216..0000000
--- a/addon/doxmlparser/src/mainhandler.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include <qxml.h>
-#include "mainhandler.h"
-#include "compoundhandler.h"
-#include "sectionhandler.h"
-#include "graphhandler.h"
-#include "dochandler.h"
-#include "memberhandler.h"
-#include "linkedtexthandler.h"
-#include "paramhandler.h"
-#include "debug.h"
-
-
-class ErrorHandler : public QXmlErrorHandler
-{
- public:
- virtual ~ErrorHandler() {}
- bool warning( const QXmlParseException & )
- {
- return FALSE;
- }
- bool error( const QXmlParseException & )
- {
- return FALSE;
- }
- bool fatalError( const QXmlParseException &exception )
- {
- debug(1,"Fatal error at line %d column %d: %s\n",
- exception.lineNumber(),exception.columnNumber(),
- exception.message().data());
- return FALSE;
- }
- QString errorString() { return ""; }
-
- private:
- QString errorMsg;
-};
-
-//--------------------------------------------------------------------------
-
-class CompoundEntryIterator : public ICompoundIterator,
- public QListIterator<CompoundEntry>
-{
- public:
- CompoundEntryIterator(const MainHandler *m,const QList<CompoundEntry> &list) :
- QListIterator<CompoundEntry>(list), m_mainHandler(m) {}
- virtual ~CompoundEntryIterator() {}
-
- virtual void toFirst()
- {
- QListIterator<CompoundEntry>::toFirst();
- }
- virtual void toLast()
- {
- QListIterator<CompoundEntry>::toLast();
- }
- virtual void toNext()
- {
- QListIterator<CompoundEntry>::operator++();
- }
- virtual void toPrev()
- {
- QListIterator<CompoundEntry>::operator--();
- }
- virtual ICompound *current() const
- {
- CompoundEntry *ch = QListIterator<CompoundEntry>::current();
- return ch ? m_mainHandler->compoundById(ch->id.utf8()) : 0;
- }
- virtual void release()
- { delete this; }
-
- private:
- const MainHandler *m_mainHandler;
-};
-
-//--------------------------------------------------------------------------
-
-MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999),
- m_memberDict(12251), m_memberNameDict(12251),
- m_compoundsLoaded(1009)
-{
- m_compounds.setAutoDelete(TRUE);
- m_memberNameDict.setAutoDelete(TRUE);
- addStartHandler("doxygenindex");
- addEndHandler("doxygenindex");
- addStartHandler("compound",this,&MainHandler::startCompound);
- addEndHandler("compound");
- addStartHandler("member",this,&MainHandler::startMember);
- addEndHandler("member",this,&MainHandler::endMember);
- addStartHandler("name",this,&MainHandler::startName);
- addEndHandler("name",this,&MainHandler::endName);
- m_curCompound = 0;
- m_insideMember = FALSE;
-}
-
-MainHandler::~MainHandler()
-{
- debug(2,"MainHandler::~MainHandler()\n");
-}
-
-void MainHandler::startCompound(const QXmlAttributes& attrib)
-{
- m_curCompound = new CompoundEntry(257);
- m_curCompound->id = attrib.value("refid");
- m_compounds.append(m_curCompound);
- m_compoundDict.insert(m_curCompound->id.utf8(),m_curCompound);
-}
-
-void MainHandler::startName(const QXmlAttributes& /*attrib*/)
-{
- m_curString = "";
-}
-
-void MainHandler::endName()
-{
- if (m_insideMember)
- {
- m_curMember->name = m_curString;
- }
- else
- {
- m_curCompound->name = m_curString;
- m_compoundNameDict.insert(m_curString.utf8(),m_curCompound);
- }
-}
-
-void MainHandler::startMember(const QXmlAttributes& attrib)
-{
- m_insideMember = TRUE;
- m_curMember = new MemberEntry;
- m_curMember->id = attrib.value("refid");
- m_curMember->compound = m_curCompound;
- m_memberDict.insert(m_curMember->id.utf8(),m_curMember);
-}
-
-void MainHandler::endMember()
-{
- m_curCompound->memberDict.insert(m_curMember->name.utf8(),m_curMember);
- QList<CompoundEntry> *cel=0;
- if ((cel=m_memberNameDict.find(m_curMember->name.utf8()))==0)
- {
- cel = new QList<CompoundEntry>;
- m_memberNameDict.insert(m_curMember->name.utf8(),cel);
- }
- cel->append(m_curCompound);
- m_insideMember = FALSE;
-}
-
-void MainHandler::setDebugLevel(int level)
-{
- ::setDebugLevel(level);
-}
-
-void MainHandler::dump()
-{
- QListIterator<CompoundEntry> cli(m_compounds);
- CompoundEntry *ce;
- for (cli.toFirst();(ce=cli.current());++cli)
- {
- debug(2,"compound id='%s' name='%s'\n",ce->id.data(),ce->name.data());
- QDictIterator<MemberEntry> mdi(ce->memberDict);
- MemberEntry *me;
- for (mdi.toFirst();(me=mdi.current());++mdi)
- {
- debug(2," member id='%s' name='%s'\n",me->id.data(),me->name.data());
- }
- }
-}
-
-bool MainHandler::readXMLDir(const char * xmlDirName)
-{
- m_xmlDirName = xmlDirName;
- QString xmlFileName=m_xmlDirName+"/index.xml";
- QFile xmlFile(xmlFileName);
- //printf("Trying %s xmlFile.exists()=%d isReadable()=%d\n",
- // xmlFileName.data(),xmlFile.exists(),xmlFile.isReadable());
- if (xmlFile.exists())
- {
- ErrorHandler errorHandler;
- QXmlInputSource source( xmlFile );
- QXmlSimpleReader reader;
- reader.setContentHandler( this );
- reader.setErrorHandler( &errorHandler );
- reader.parse( source );
- dump();
- return TRUE;
- }
- return FALSE;
-}
-
-ICompoundIterator *MainHandler::compounds() const
-{
- return new CompoundEntryIterator(this,m_compounds);
-}
-
-ICompound *MainHandler::compoundById(const char *id) const
-{
- QString ids = id;
- if (ids.isEmpty()) return 0;
- CompoundHandler *ch = m_compoundsLoaded[ids.utf8()];
- if (ch) // compound already in memory
- {
- ch->addref(); // returning alias -> increase reference counter
- return ch->toICompound();
- }
- CompoundEntry *ce = m_compoundDict.find(ids.utf8());
- if (ce==0) return 0; // id not found
- // create and load a new compound
- ch = new CompoundHandler(m_xmlDirName);
- if (!ch->parseXML(id))
- {
- // compound could not be initialized.
- delete ch;
- return 0;
- }
-
- // we disregard the constness here, because the object stays conceptually
- // unchanged.
- MainHandler *that = (MainHandler *)this;
- ch->initialize(that);
- //printf("loading compound %s in memory\n",id);
- that->m_compoundsLoaded.insert(id,ch);
- return ch->toICompound();
-}
-
-void MainHandler::unloadCompound(CompoundHandler *ch)
-{
- //printf("unloading compound %s from memory\n",ch->id()->latin1());
- bool result = m_compoundsLoaded.remove(ch->id()->latin1());
- if (!result) debug(1,"Failed to unload component!\n");
-}
-
-ICompound *MainHandler::compoundByName(const char *name) const
-{
- QString nameStr = name;
- if (nameStr.isEmpty()) return 0;
- CompoundEntry *ce = m_compoundNameDict[name];
- if (ce==0) return 0; // name not found
- return compoundById(ce->id.utf8());
-}
-
-ICompound *MainHandler::memberById(const char *id) const
-{
- QString ids = id;
- if (ids.isEmpty()) return 0;
- MemberEntry *me = m_memberDict[id];
- if (me==0) return 0; // id not found
- return compoundById(me->compound->id.utf8());
-}
-
-ICompoundIterator *MainHandler::memberByName(const char *name) const
-{
- QString nameStr = name;
- if (nameStr.isEmpty()) return 0;
- QList<CompoundEntry> *cel = m_memberNameDict[name];
- if (cel==0) return 0; // name not found
- return new CompoundEntryIterator(this,*cel);
-}
-
-IDoxygen *createObjectModel()
-{
- compoundhandler_init();
- sectionhandler_init();
- memberhandler_init();
- dochandler_init();
- graphhandler_init();
- return new MainHandler;
-}
-
-void MainHandler::release()
-{
- //printf("MainHandler::release()\n");
- QDictIterator<CompoundHandler> chi(m_compoundsLoaded);
- CompoundHandler *ch;
- for (chi.toFirst();(ch=chi.current());++chi)
- {
- debug(1,"Compound %s not released\n",ch->name()->latin1());
- }
- graphhandler_exit();
- dochandler_exit();
- memberhandler_exit();
- sectionhandler_exit();
- compoundhandler_exit();
- delete this;
-}
-
diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h
deleted file mode 100644
index 21e9b0a..0000000
--- a/addon/doxmlparser/src/mainhandler.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _MAINHANDLER_H
-#define _MAINHANDLER_H
-
-#include <qlist.h>
-
-#include <doxmlintf.h>
-#include "basehandler.h"
-
-class CompoundHandler;
-struct CompoundEntry;
-
-struct IndexEntry
-{
- QString id;
- QString name;
-};
-
-struct MemberEntry : public IndexEntry
-{
- CompoundEntry *compound;
-};
-
-struct CompoundEntry : public IndexEntry
-{
- CompoundEntry(int size) : memberDict(size)
- { memberDict.setAutoDelete(TRUE); }
- QDict<MemberEntry> memberDict;
-};
-
-class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
-{
- public:
- virtual void startCompound(const QXmlAttributes& attrib);
- virtual void startMember(const QXmlAttributes& attrib);
- virtual void endMember();
- virtual void startName(const QXmlAttributes& attrib);
- virtual void endName();
- MainHandler();
- virtual ~MainHandler();
-
- // IDoxygen
- ICompoundIterator *compounds() const;
- ICompound *compoundById(const char *id) const;
- virtual ICompound *compoundByName(const char *name) const;
- virtual ICompound *memberById(const char *id) const;
- virtual ICompoundIterator *memberByName(const char *name) const;
-
- virtual void release();
- void setDebugLevel(int level);
- bool readXMLDir(const char *dirName);
- void dump();
- void unloadCompound(CompoundHandler *ch);
-
- private:
- CompoundEntry *m_curCompound;
- MemberEntry *m_curMember;
- QList<CompoundEntry> m_compounds;
- QDict<CompoundEntry> m_compoundDict;
- QDict<CompoundEntry> m_compoundNameDict;
- QDict<MemberEntry> m_memberDict;
- QDict<QList<CompoundEntry> > m_memberNameDict;
- QString m_xmlDirName;
- QDict<CompoundHandler> m_compoundsLoaded;
- bool m_insideMember;
-};
-
-#endif
diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp
deleted file mode 100644
index df8c04f..0000000
--- a/addon/doxmlparser/src/memberhandler.cpp
+++ /dev/null
@@ -1,600 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include "memberhandler.h"
-#include "sectionhandler.h"
-#include "dochandler.h"
-#include "mainhandler.h"
-#include "linkedtexthandler.h"
-#include "paramhandler.h"
-#include "compoundhandler.h"
-#include "debug.h"
-
-//------------------------------------------------------------------------------
-
-class MemberTypeMap
-{
- public:
- MemberTypeMap()
- {
- m_map.setAutoDelete(TRUE);
- m_map.insert("define",new int(IMember::Define));
- m_map.insert("property",new int(IMember::Property));
- m_map.insert("variable",new int(IMember::Variable));
- m_map.insert("typedef",new int(IMember::Typedef));
- m_map.insert("enum",new int(IMember::Enum));
- m_map.insert("function",new int(IMember::Function));
- m_map.insert("signal",new int(IMember::Signal));
- m_map.insert("prototype",new int(IMember::Prototype));
- m_map.insert("friend",new int(IMember::Friend));
- m_map.insert("dcop",new int(IMember::DCOP));
- m_map.insert("slot",new int(IMember::Slot));
- m_map.insert("enumvalue",new int(IMember::EnumValue));
- }
- IMember::MemberKind map(const QString &s)
- {
- int *val = m_map.find(s.utf8());
- if (val==0)
- {
- debug(1,"Warning: '%s' is an invalid member type\n",s.data());
- return IMember::Invalid;
- }
- else return (IMember::MemberKind)*val;
- }
- private:
- QDict<int> m_map;
-};
-
-static MemberTypeMap *s_typeMap;
-
-void memberhandler_init()
-{
- s_typeMap = new MemberTypeMap;
-}
-
-void memberhandler_exit()
-{
- delete s_typeMap;
-}
-
-//------------------------------------------------------------------------------
-
-void MemberReference::initialize(MainHandler *mh)
-{
- m_mainHandler = mh;
-}
-
-IMember *MemberReference::member() const
-{
- //return m_mainHandler->memberById(m_memId);
- return 0;
-}
-
-//------------------------------------------------------------------------------
-
-
-#if 0
-EnumValueHandler::EnumValueHandler(IBaseHandler *parent) :
- m_parent(parent), m_brief(0), m_detailed(0), m_linkedTextHandler(0)
-{
- addEndHandler("enumvalue",this,&EnumValueHandler::endEnumValue);
-
- addStartHandler("name",this,&EnumValueHandler::startName);
- addEndHandler("name",this,&EnumValueHandler::endName);
- addStartHandler("initializer",this,&EnumValueHandler::startInitializer);
-
- addStartHandler("briefdescription",this,&EnumValueHandler::startBriefDesc);
-
- addStartHandler("detaileddescription",this,&EnumValueHandler::startDetailedDesc);
-
- m_initializer.setAutoDelete(TRUE);
-}
-
-EnumValueHandler::~EnumValueHandler()
-{
- delete m_brief;
- delete m_detailed;
- delete m_linkedTextHandler;
-}
-
-void EnumValueHandler::startEnumValue(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
-}
-
-void EnumValueHandler::endEnumValue()
-{
- m_parent->setDelegate(0);
-}
-
-void EnumValueHandler::startName(const QXmlAttributes& /*attrib*/)
-{
- m_curString="";
-}
-
-void EnumValueHandler::endName()
-{
- m_name = m_curString;
-}
-
-void EnumValueHandler::startInitializer(const QXmlAttributes& /*attrib*/)
-{
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_initializer);
- m_linkedTextHandler->start("initializer");
-}
-
-void EnumValueHandler::startBriefDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_brief = docHandler;
-}
-
-void EnumValueHandler::startDetailedDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_detailed = docHandler;
-}
-#endif
-
-//------------------------------------------------------------------------------
-
-MemberHandler::MemberHandler(IBaseHandler *parent)
- : m_brief(0), m_detailed(0), m_inbody(0),
- m_compound(0), m_section(0), m_parent(parent)
-{
- //printf("MemberHandler::MemberHandler() %p\n",this);
- addEndHandler("memberdef",this,&MemberHandler::endMember);
-
- addStartHandler("templateparamlist",this,&MemberHandler::startTemplateParamList);
- addEndHandler("templateparamlist",this,&MemberHandler::endTemplateParamList);
-
- addStartHandler("type",this,&MemberHandler::startType);
-
- addStartHandler("definition",this,&MemberHandler::startDefinition);
- addEndHandler("definition",this,&MemberHandler::endDefinition);
-
- addStartHandler("argsstring",this,&MemberHandler::startArgsString);
- addEndHandler("argsstring",this,&MemberHandler::endArgsString);
-
- addStartHandler("name",this,&MemberHandler::startName);
- addEndHandler("name",this,&MemberHandler::endName);
-
- addStartHandler("read",this,&MemberHandler::startRead);
- addEndHandler("read",this,&MemberHandler::endRead);
-
- addStartHandler("write",this,&MemberHandler::startWrite);
- addEndHandler("write",this,&MemberHandler::endWrite);
-
- addStartHandler("reimplements",this,&MemberHandler::startReimplements);
- addEndHandler("reimplements",this,&MemberHandler::endReimplements);
-
- addStartHandler("reimplementedby",this,&MemberHandler::startReimplementedBy);
- addEndHandler("reimplementedby",this,&MemberHandler::endReimplementedBy);
-
- addStartHandler("param",this,&MemberHandler::startParam);
-
- addStartHandler("enumvalue",this,&MemberHandler::startEnumValue2);
- addEndHandler("enumvalue",this,&MemberHandler::endMember);
-
- addStartHandler("initializer",this,&MemberHandler::startInitializer);
- addStartHandler("exceptions",this,&MemberHandler::startException);
-
- addStartHandler("briefdescription",this,&MemberHandler::startBriefDesc);
-
- addStartHandler("detaileddescription",this,&MemberHandler::startDetailedDesc);
-
- addStartHandler("inbodydescription",this,&MemberHandler::startInbodyDesc);
-
- addStartHandler("location",this,&MemberHandler::startLocation);
- addEndHandler("location");
-
- addStartHandler("references",this,&MemberHandler::startReferences);
- addEndHandler("references",this,&MemberHandler::endReferences);
-
- addStartHandler("referencedby",this,&MemberHandler::startReferencedBy);
- addEndHandler("referencedby",this,&MemberHandler::endReferencedBy);
-
- m_type.setAutoDelete(TRUE);
- m_initializer.setAutoDelete(TRUE);
- m_exception.setAutoDelete(TRUE);
- m_params.setAutoDelete(TRUE);
- m_references.setAutoDelete(TRUE);
- m_referencedBy.setAutoDelete(TRUE);
- m_reimplements = 0;
- m_reimplementedBy.setAutoDelete(TRUE);
- m_enumValues.setAutoDelete(TRUE);
- m_linkedTextHandler = 0;
- m_defLine=0;
- m_bodyStart=0;
- m_bodyEnd=0;
- m_insideTemplateParamList=FALSE;
- m_hasTemplateParamList=FALSE;
-}
-
-MemberHandler::~MemberHandler()
-{
- debug(2,"MemberHandler::~MemberHandler() %p\n",this);
- delete m_brief;
- delete m_detailed;
- delete m_inbody;
- delete m_linkedTextHandler;
- delete m_reimplements;
-}
-
-void MemberHandler::startMember(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_kindString = attrib.value("kind");
- //printf("startMember kindString='%s'\n",m_kindString.data());
- m_kind = s_typeMap->map(m_kindString);
- m_id = attrib.value("id");
- m_protection = attrib.value("prot");
- m_isStatic = attrib.value("static")=="yes";
- m_isConst = attrib.value("const")=="yes";
- m_isExplicit = attrib.value("explicit")=="yes";
- m_isInline = attrib.value("inline")=="yes";
- m_virtualness = attrib.value("virt");
- m_isVolatile = attrib.value("volatile")=="yes";
- m_isMutable = attrib.value("mutable")=="yes";
- m_isReadable = attrib.value("readable")=="yes";
- m_isWritable = attrib.value("writable")=="yes";
-
- debug(2,"member kind='%s' id='%s' prot='%s' virt='%s'\n",
- m_kindString.data(),m_id.data(),m_protection.data(),m_virtualness.data());
-}
-
-void MemberHandler::startEnumValue(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_kindString = "enumvalue";
- //printf("startEnumValue kindString='%s'\n",m_kindString.data());
- m_kind = s_typeMap->map(m_kindString);
- m_id = attrib.value("id");
- m_protection = attrib.value("prot");
- m_isStatic = FALSE;
- m_isConst = FALSE;
- m_isExplicit = FALSE;
- m_isInline = FALSE;
- m_virtualness = "non-virtual";
- m_isVolatile = FALSE;
- m_isMutable = FALSE;
- m_isReadable = FALSE;
- m_isWritable = FALSE;
- debug(2,"member kind='%s' id='%s' prot='%s' virt='%s'\n",
- m_kindString.data(),m_id.data(),m_protection.data(),m_virtualness.data());
-}
-
-void MemberHandler::startEnumValue2(const QXmlAttributes& attrib)
-{
- MemberHandler *mh = new MemberHandler(this);
- mh->startEnumValue(attrib);
- m_enumValues.append(mh);
-}
-
-
-void MemberHandler::startBriefDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_brief = docHandler;
-}
-
-void MemberHandler::startDetailedDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_detailed = docHandler;
-}
-
-void MemberHandler::startInbodyDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_inbody = docHandler;
-}
-
-void MemberHandler::startLocation(const QXmlAttributes& attrib)
-{
- m_defFile = attrib.value("file");
- m_bodyFile = attrib.value("bodyfile");
- QString s;
- s = attrib.value("line");
- if (!s.isEmpty()) m_defLine=s.toInt();
- s = attrib.value("bodystart");
- if (!s.isEmpty()) m_bodyStart=s.toInt();
- s = attrib.value("bodyend");
- if (!s.isEmpty()) m_bodyEnd=s.toInt();
-}
-
-void MemberHandler::startReferences(const QXmlAttributes& attrib)
-{
- MemberReference *mr = new MemberReference;
- mr->m_memId = attrib.value("refid");
- m_references.append(mr);
- m_curString="";
-}
-
-void MemberHandler::endReferences()
-{
- m_references.getLast()->m_name = m_curString;
-}
-
-void MemberHandler::startReferencedBy(const QXmlAttributes& attrib)
-{
- MemberReference *mr = new MemberReference;
- mr->m_memId = attrib.value("refid");
- m_referencedBy.append(mr);
- m_curString="";
-}
-
-void MemberHandler::endReferencedBy()
-{
- m_referencedBy.getLast()->m_name = m_curString;
-}
-
-void MemberHandler::startReimplements(const QXmlAttributes& attrib)
-{
- m_reimplements = new MemberReference;
- m_reimplements->m_memId = attrib.value("refid");
- m_curString="";
-}
-
-void MemberHandler::endReimplements()
-{
- m_reimplements->m_name = m_curString;
-}
-
-void MemberHandler::startReimplementedBy(const QXmlAttributes& attrib)
-{
- MemberReference *mr = new MemberReference;
- mr->m_memId = attrib.value("refid");
- m_reimplementedBy.append(mr);
- m_curString="";
-}
-
-void MemberHandler::endReimplementedBy()
-{
- m_reimplementedBy.getLast()->m_name = m_curString;
-}
-
-void MemberHandler::endMember()
-{
- m_parent->setDelegate(0);
-}
-
-void MemberHandler::startType(const QXmlAttributes &)
-{
- debug(2,"startType!\n");
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_type);
- m_linkedTextHandler->start("type");
-}
-
-void MemberHandler::startInitializer(const QXmlAttributes &)
-{
- debug(2,"startInitializer!\n");
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_initializer);
- m_linkedTextHandler->start("initializer");
-}
-
-void MemberHandler::startException(const QXmlAttributes &)
-{
- debug(2,"startException!\n");
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_exception);
- m_linkedTextHandler->start("exceptions");
-}
-
-void MemberHandler::startName(const QXmlAttributes &)
-{
- m_curString="";
-}
-
-void MemberHandler::endName()
-{
- m_name = m_curString.stripWhiteSpace();
- debug(2,"member name='%s'\n",m_name.data());
-}
-
-void MemberHandler::startRead(const QXmlAttributes &)
-{
- m_curString="";
-}
-
-void MemberHandler::endRead()
-{
- m_read = m_curString.stripWhiteSpace();
- debug(2,"member read='%s'\n",m_read.data());
-}
-
-void MemberHandler::startWrite(const QXmlAttributes &)
-{
- m_curString="";
-}
-
-void MemberHandler::endWrite()
-{
- m_write = m_curString.stripWhiteSpace();
- debug(2,"member write='%s'\n",m_write.data());
-}
-
-void MemberHandler::startDefinition(const QXmlAttributes&)
-{
- m_curString="";
-}
-
-void MemberHandler::endDefinition()
-{
- m_definition = m_curString.stripWhiteSpace();
- debug(2,"definition=%s\n",m_definition.data());
-}
-
-void MemberHandler::startArgsString(const QXmlAttributes&)
-{
- m_curString="";
-}
-
-void MemberHandler::endArgsString()
-{
- m_argsstring = m_curString.stripWhiteSpace();
- debug(2,"argstring=%s\n",m_argsstring.data());
-}
-
-void MemberHandler::startParam(const QXmlAttributes& attrib)
-{
- ParamHandler *paramHandler = new ParamHandler(this);
- paramHandler->startParam(attrib);
- if (m_insideTemplateParamList)
- {
- m_templateParams.append(paramHandler);
- }
- else
- {
- m_params.append(paramHandler);
- }
-}
-
-void MemberHandler::startTemplateParamList(const QXmlAttributes&)
-{
- m_insideTemplateParamList = TRUE;
- m_hasTemplateParamList = TRUE;
-}
-
-void MemberHandler::endTemplateParamList()
-{
- m_insideTemplateParamList = FALSE;
-}
-
-void MemberHandler::initialize(MainHandler *mh)
-{
- {
- QListIterator<MemberReference> mli(m_references);
- MemberReference *mr;
- for (;(mr=mli.current());++mli)
- {
- mr->initialize(mh);
- }
- }
- {
- QListIterator<MemberReference> mli(m_referencedBy);
- MemberReference *mr;
- for (;(mr=mli.current());++mli)
- {
- mr->initialize(mh);
- }
- }
- {
- QListIterator<MemberReference> mli(m_reimplementedBy);
- MemberReference *mr;
- for (;(mr=mli.current());++mli)
- {
- mr->initialize(mh);
- }
- }
- if (m_reimplements) m_reimplements->initialize(mh);
-}
-
-void MemberHandler::setCompoundHandler(CompoundHandler *c)
-{
- m_compound = c;
-}
-
-ICompound *MemberHandler::compound() const
-{
- m_compound->addref();
- return m_compound->toICompound();
-}
-
-void MemberHandler::setSectionHandler(SectionHandler *c)
-{
- m_section = c;
-}
-
-ISection *MemberHandler::section() const
-{
- return m_section;
-}
-
-IMemberIterator *MemberHandler::enumValues() const
-{
- return new MemberIterator(m_enumValues);
-}
-
-ILinkedTextIterator *MemberHandler::type() const
-{
- return new LinkedTextIterator(m_type);
-}
-
-const IString *MemberHandler::typeString() const
-{
- MemberHandler *that = (MemberHandler *)this;
- that->m_typeString = LinkedTextHandler::toString(m_type);
- return &m_typeString;
-}
-
-IParamIterator *MemberHandler::parameters() const
-{
- return new ParamIterator(m_params);
-}
-
-IParamIterator *MemberHandler::templateParameters() const
-{
- return m_hasTemplateParamList ? new ParamIterator(m_templateParams) : 0;
-}
-
-IMemberReferenceIterator *MemberHandler::references() const
-{
- return new MemberReferenceIterator(m_references);
-}
-
-IMemberReferenceIterator *MemberHandler::referencedBy() const
-{
- return new MemberReferenceIterator(m_referencedBy);
-}
-
-ILinkedTextIterator *MemberHandler::initializer() const
-{
- return new LinkedTextIterator(m_initializer);
-}
-
-ILinkedTextIterator *MemberHandler::exceptions() const
-{
- return new LinkedTextIterator(m_exception);
-}
-
-IMemberReferenceIterator *MemberHandler::reimplementedBy() const
-{
- return new MemberReferenceIterator(m_reimplementedBy);
-}
-
-IDocRoot *MemberHandler::briefDescription() const
-{
- return m_brief;
-}
-
-IDocRoot *MemberHandler::detailedDescription() const
-{
- return m_detailed;
-}
-
-IDocRoot *MemberHandler::inbodyDescription() const
-{
- return m_inbody;
-}
-
diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h
deleted file mode 100644
index 7438172..0000000
--- a/addon/doxmlparser/src/memberhandler.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _MEMBERHANDLER_H
-#define _MEMBERHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <qxml.h>
-#include <doxmlintf.h>
-
-#include "basehandler.h"
-#include "baseiterator.h"
-#include "stringimpl.h"
-
-class MainHandler;
-class CompoundHandler;
-class SectionHandler;
-class ParamHandler;
-class LinkedTextImpl;
-class LinkedTextHandler;
-class DocHandler;
-
-class MemberReference : public IMemberReference
-{
- public:
- virtual ~MemberReference() {}
- virtual IMember *member() const;
- virtual const IString *name() const { return &m_name; }
- virtual const IString *scope() const { return &m_scope; }
- virtual const IString *protection() const { return &m_protection; }
- virtual const IString *virtualness() const { return &m_virtualness; }
- virtual const IString *ambiguityScope() const { return &m_ambiguityScope; }
- void initialize(MainHandler *m);
-
- QString m_memId;
- StringImpl m_name;
- StringImpl m_scope;
- StringImpl m_virtualness;
- StringImpl m_protection;
- StringImpl m_ambiguityScope;
- MainHandler *m_mainHandler;
-};
-
-class MemberReferenceIterator : public BaseIterator<IMemberReferenceIterator,IMemberReference,MemberReference>
-{
- public:
- MemberReferenceIterator(const QList<MemberReference> &list) :
- BaseIterator<IMemberReferenceIterator,IMemberReference,MemberReference>(list) {}
-};
-
-class MemberHandler : public IDefine,
- public IProperty,
- public IVariable,
- public ITypedef,
- public IFunction,
- public ISignal,
- public IPrototype,
- public IFriend,
- public IDCOP,
- public ISlot,
- public IEnum,
- public IEnumValue,
- public BaseHandler<MemberHandler>
-{
- public:
- virtual void startMember(const QXmlAttributes& attrib);
- virtual void endMember();
- virtual void startParam(const QXmlAttributes& attrib);
- virtual void startType(const QXmlAttributes& attrib);
- virtual void startName(const QXmlAttributes& attrib);
- virtual void endName();
- virtual void startRead(const QXmlAttributes& attrib);
- virtual void endRead();
- virtual void startWrite(const QXmlAttributes& attrib);
- virtual void endWrite();
- virtual void startDefinition(const QXmlAttributes& attrib);
- virtual void endDefinition();
- virtual void startArgsString(const QXmlAttributes& attrib);
- virtual void endArgsString();
- virtual void startBriefDesc(const QXmlAttributes& attrib);
- virtual void startDetailedDesc(const QXmlAttributes& attrib);
- virtual void startInbodyDesc(const QXmlAttributes& attrib);
- virtual void startLocation(const QXmlAttributes& attrib);
- virtual void startReferences(const QXmlAttributes& attrib);
- virtual void endReferences();
- virtual void startReferencedBy(const QXmlAttributes& attrib);
- virtual void endReferencedBy();
- virtual void startReimplements(const QXmlAttributes& attrib);
- virtual void endReimplements();
- virtual void startReimplementedBy(const QXmlAttributes& attrib);
- virtual void endReimplementedBy();
- virtual void startInitializer(const QXmlAttributes& attrib);
- virtual void startException(const QXmlAttributes& attrib);
- virtual void startEnumValue(const QXmlAttributes& attrib);
- virtual void startEnumValue2(const QXmlAttributes& attrib);
- virtual void startTemplateParamList(const QXmlAttributes &attrib);
- virtual void endTemplateParamList();
-
- MemberHandler(IBaseHandler *parent);
- virtual ~MemberHandler();
-
- // IMember implementation
- virtual ICompound *compound() const;
- virtual ISection *section() const;
- virtual MemberKind kind() const
- { return m_kind; }
- virtual const IString *kindString() const
- { return &m_kindString; }
- virtual const IString *id() const
- { return &m_id; }
- virtual const IString *protection() const
- { return &m_protection; }
- virtual const IString *virtualness() const
- { return &m_virtualness; }
- virtual const IString *name() const
- { return &m_name; }
- virtual const IString *readAccessor() const
- { return &m_read; }
- virtual const IString *writeAccessor() const
- { return &m_write; }
- virtual const IString *definition() const
- { return &m_definition; }
- virtual const IString *argsstring() const
- { return &m_argsstring; }
- virtual bool isConst() const
- { return m_isConst; }
- virtual bool isVolatile() const
- { return m_isVolatile; }
- virtual bool isStatic() const
- { return m_isStatic; }
- virtual bool isExplicit() const
- { return m_isExplicit; }
- virtual bool isInline() const
- { return m_isInline; }
- virtual bool isMutable() const
- { return m_isMutable; }
- virtual bool isReadable() const
- { return m_isReadable; }
- virtual bool isWritable() const
- { return m_isWritable; }
- virtual ILinkedTextIterator *type() const;
- virtual const IString *typeString() const;
- virtual IParamIterator *parameters() const;
- virtual IParamIterator *templateParameters() const;
- virtual IMemberReferenceIterator *references() const;
- virtual IMemberReferenceIterator *referencedBy() const;
- virtual ILinkedTextIterator *initializer() const;
- virtual ILinkedTextIterator *exceptions() const;
- virtual const IString *bodyFile() const
- { return &m_bodyFile; }
- virtual int bodyStart() const
- { return m_bodyStart; }
- virtual int bodyEnd() const
- { return m_bodyEnd; }
- virtual const IString *definitionFile() const
- { return &m_defFile; }
- virtual int definitionLine() const
- { return m_defLine; }
- virtual IMemberReference *reimplements() const
- { return m_reimplements; }
- virtual IMemberReferenceIterator *reimplementedBy() const;
- virtual IDocRoot *briefDescription() const;
- virtual IDocRoot *detailedDescription() const;
- virtual IDocRoot *inbodyDescription() const;
-
- // IEnum
- virtual IMemberIterator *enumValues() const;
-
- void initialize(MainHandler *m);
- void setCompoundHandler(CompoundHandler *c);
- void setSectionHandler(SectionHandler *s);
-
- private:
- // XML elements:
- // -----------------
- QList<ParamHandler> m_templateParams; // templateparamlist
- QList<LinkedTextImpl> m_type; // type
- StringImpl m_definition; // definition
- StringImpl m_argsstring; // argsstring
- StringImpl m_name; // name
- StringImpl m_read; // read
- StringImpl m_write; // write
- MemberReference *m_reimplements; // reimplements
- QList<MemberReference> m_reimplementedBy; // reimplementedby
- QList<ParamHandler> m_params; // param
- QList<MemberHandler> m_enumValues; // enumvalue
- QList<LinkedTextImpl> m_initializer; // initializer
- QList<LinkedTextImpl> m_exception; // exceptions
- DocHandler *m_brief; // briefdescription
- DocHandler *m_detailed; // detaileddescription
- DocHandler *m_inbody; // inbodydescription
- // location
- StringImpl m_defFile; // - file
- int m_defLine; // - line
- StringImpl m_bodyFile; // - bodyfile
- int m_bodyStart; // - bodystart
- int m_bodyEnd; // - bodyend
- QList<MemberReference> m_references; // references
- QList<MemberReference> m_referencedBy; // referencedby
-
- // XML attributes:
- // ---------------
- MemberKind m_kind; // kind
- StringImpl m_kindString; // kind as a string
- StringImpl m_id; // id
- StringImpl m_protection; // prot
- bool m_isStatic; // static
- bool m_isConst; // const
- bool m_isExplicit; // explicit
- bool m_isInline; // inline
- StringImpl m_virtualness; // virt
- bool m_isVolatile; // volatile
- bool m_isMutable; // mutable
- bool m_isReadable; // readable
- bool m_isWritable; // writable
-
- CompoundHandler *m_compound;
- SectionHandler *m_section;
- StringImpl m_typeString;
- LinkedTextHandler *m_linkedTextHandler;
- bool m_insideTemplateParamList;
- bool m_hasTemplateParamList;
- IBaseHandler *m_parent;
-};
-
-class MemberIterator : public BaseIteratorVia<IMemberIterator,
- IMember,
- MemberHandler,
- IFunction>
-{
- public:
- MemberIterator(const QList<MemberHandler> &list) :
- BaseIteratorVia<IMemberIterator,IMember,MemberHandler,IFunction>(list) {}
-};
-
-void memberhandler_init();
-void memberhandler_exit();
-
-#endif
diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp
deleted file mode 100644
index 7a6f455..0000000
--- a/addon/doxmlparser/src/paramhandler.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include "paramhandler.h"
-#include "memberhandler.h"
-#include "linkedtexthandler.h"
-#include "debug.h"
-#include "dochandler.h"
-
-TemplateParamListHandler::TemplateParamListHandler(IBaseHandler *parent) : m_parent(parent)
-{
- addStartHandler("param",this,&TemplateParamListHandler::startParam);
-
- addEndHandler("templateparamlist",this,&TemplateParamListHandler::endTemplateParamList);
-}
-
-void TemplateParamListHandler::startParam(const QXmlAttributes& attrib)
-{
- ParamHandler *ph = new ParamHandler(this);
- ph->startParam(attrib);
- m_templateParams.append(ph);
-}
-
-void TemplateParamListHandler::endParam()
-{
-}
-
-void TemplateParamListHandler::startTemplateParamList(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"templateparamlist\n");
-}
-
-void TemplateParamListHandler::endTemplateParamList()
-{
- m_parent->setDelegate(0);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-ParamHandler::ParamHandler(IBaseHandler *parent) : m_brief(0), m_parent(parent)
-{
- addEndHandler("param",this,&ParamHandler::endParam);
-
- addStartHandler("type",this,&ParamHandler::startType);
-
- addStartHandler("declname");
- addEndHandler("declname",this,&ParamHandler::endDeclName);
-
- addStartHandler("defname");
- addEndHandler("defname",this,&ParamHandler::endDefName);
-
- addStartHandler("array");
- addEndHandler("array",this,&ParamHandler::endArray);
-
- addStartHandler("attribute");
- addEndHandler("attribute",this,&ParamHandler::endAttrib);
-
- addStartHandler("briefdescription",this,&ParamHandler::startBriefDesc);
-
- addStartHandler("defval",this,&ParamHandler::startDefVal);
-
- m_linkedTextHandler = 0;
-}
-
-ParamHandler::~ParamHandler()
-{
- delete m_brief;
- delete m_linkedTextHandler;
-}
-
-void ParamHandler::startParam(const QXmlAttributes& /*attrib*/)
-{
- m_parent->setDelegate(this);
- debug(2,"param\n");
-}
-
-void ParamHandler::endParam()
-{
- m_parent->setDelegate(0);
-}
-
-void ParamHandler::startType(const QXmlAttributes& /*attrib*/)
-{
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_type);
- m_linkedTextHandler->start("type");
- debug(2,"param type\n");
-}
-
-void ParamHandler::endDeclName()
-{
- m_declName = m_curString.stripWhiteSpace();
- debug(2,"member declName='%s'\n",m_declName.data());
-}
-
-void ParamHandler::endDefName()
-{
- m_defName = m_curString.stripWhiteSpace();
- debug(2,"member defName='%s'\n",m_defName.data());
-}
-
-void ParamHandler::endAttrib()
-{
- m_attrib = m_curString.stripWhiteSpace();
- debug(2,"member attrib='%s'\n",m_attrib.data());
-}
-
-void ParamHandler::endArray()
-{
- m_array = m_curString.stripWhiteSpace();
- debug(2,"member array='%s'\n",m_array.data());
-}
-
-void ParamHandler::startDefVal(const QXmlAttributes& /*attrib*/)
-{
- delete m_linkedTextHandler;
- m_linkedTextHandler = new LinkedTextHandler(this,m_defVal);
- m_linkedTextHandler->start("defval");
- debug(2,"member defVal\n");
-}
-
-void ParamHandler::startBriefDesc(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_brief = docHandler;
-}
-
-ILinkedTextIterator *ParamHandler::type() const
-{
- return new LinkedTextIterator(m_type);
-}
-
-ILinkedTextIterator *ParamHandler::defaultValue() const
-{
- return new LinkedTextIterator(m_defVal);
-}
-
-IDocRoot *ParamHandler::briefDescription() const
-{
- return m_brief;
-}
-
-
-
diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h
deleted file mode 100644
index 3f0f09b..0000000
--- a/addon/doxmlparser/src/paramhandler.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _PARAMHANDLER_H
-#define _PARAMHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <qxml.h>
-#include <doxmlintf.h>
-
-#include "stringimpl.h"
-#include "basehandler.h"
-#include "baseiterator.h"
-
-class LinkedTextImpl;
-class LinkedTextHandler;
-class DocHandler;
-
-
-class ParamHandler : public IParam, public BaseHandler<ParamHandler>
-{
- public:
- virtual void startParam(const QXmlAttributes& attrib);
- virtual void endParam();
- virtual void startType(const QXmlAttributes& attrib);
- virtual void endDeclName();
- virtual void endDefName();
- virtual void endAttrib();
- virtual void endArray();
- virtual void startDefVal(const QXmlAttributes& attrib);
- virtual void startBriefDesc(const QXmlAttributes& attrib);
-
- ParamHandler(IBaseHandler *parent);
- virtual ~ParamHandler();
-
- // IParam
- virtual ILinkedTextIterator *type() const;
- virtual const IString * declarationName() const { return &m_declName; }
- virtual const IString * definitionName() const { return &m_defName; }
- virtual const IString * attrib() const { return &m_attrib; }
- virtual const IString * arraySpecifier() const { return &m_array; }
- virtual ILinkedTextIterator *defaultValue() const;
- virtual IDocRoot *briefDescription() const;
-
- private:
-
- // XML elements:
- // -------------
- QList<LinkedTextImpl> m_type; // type
- StringImpl m_declName; // declname
- StringImpl m_defName; // defname
- StringImpl m_array; // array
- QList<LinkedTextImpl> m_defVal; // defval
- DocHandler *m_brief; // briefdescription
-
- StringImpl m_attrib; // TODO: not yet in XML output
-
- IBaseHandler *m_parent;
- LinkedTextHandler *m_linkedTextHandler;
-};
-
-class ParamIterator : public BaseIterator<IParamIterator,IParam,ParamHandler>
-{
- public:
- ParamIterator(const QList<ParamHandler> &list) :
- BaseIterator<IParamIterator,IParam,ParamHandler>(list) {}
-};
-
-class TemplateParamListHandler : public BaseHandler<TemplateParamListHandler>
-{
- public:
-
- virtual void startParam(const QXmlAttributes& attrib);
- virtual void endParam();
-
- virtual void startTemplateParamList(const QXmlAttributes& attrib);
- virtual void endTemplateParamList();
-
- TemplateParamListHandler(IBaseHandler *parent);
- virtual ~TemplateParamListHandler() {}
-
- ParamIterator* templateParams() { return new ParamIterator(m_templateParams); }
-
- protected:
- IBaseHandler *m_parent;
- QList<ParamHandler> m_templateParams;
-};
-
-
-#endif
diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp
deleted file mode 100644
index b6cc31e..0000000
--- a/addon/doxmlparser/src/sectionhandler.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#include "mainhandler.h"
-#include "compoundhandler.h"
-#include "sectionhandler.h"
-#include "memberhandler.h"
-#include "linkedtexthandler.h"
-#include "paramhandler.h"
-#include "dochandler.h"
-#include "debug.h"
-
-class SectionTypeMap
-{
- public:
- SectionTypeMap() : m_map(37)
- {
- m_map.setAutoDelete(TRUE);
- m_map.insert("user-defined",new int(ISection::UserDefined));
- m_map.insert("public-type",new int(ISection::PubTypes));
- m_map.insert("public-func",new int(ISection::PubFuncs));
- m_map.insert("public-attrib",new int(ISection::PubAttribs));
- m_map.insert("public-slot",new int(ISection::PubSlots));
- m_map.insert("signal",new int(ISection::Signals));
- m_map.insert("dcop-func",new int(ISection::DCOPFuncs));
- m_map.insert("property",new int(ISection::Properties));
- m_map.insert("event",new int(ISection::Events));
- m_map.insert("public-static-func",new int(ISection::PubStatFuncs));
- m_map.insert("public-static-attrib",new int(ISection::PubStatAttribs));
- m_map.insert("protected-type",new int(ISection::ProTypes));
- m_map.insert("protected-func",new int(ISection::ProFuncs));
- m_map.insert("protected-attrib",new int(ISection::ProAttribs));
- m_map.insert("protected-slot",new int(ISection::ProSlots));
- m_map.insert("protected-static-func",new int(ISection::ProStatFuncs));
- m_map.insert("protected-static-attrib",new int(ISection::ProStatAttribs));
- m_map.insert("package-type",new int(ISection::PacTypes));
- m_map.insert("package-func",new int(ISection::PacFuncs));
- m_map.insert("package-attrib",new int(ISection::PacAttribs));
- m_map.insert("package-static-func",new int(ISection::PacStatFuncs));
- m_map.insert("package-static-attrib",new int(ISection::PacStatAttribs));
- m_map.insert("private-type",new int(ISection::PriTypes));
- m_map.insert("private-func",new int(ISection::PriFuncs));
- m_map.insert("private-attrib",new int(ISection::PriAttribs));
- m_map.insert("private-slot",new int(ISection::PriSlots));
- m_map.insert("private-static-func",new int(ISection::PriStatFuncs));
- m_map.insert("private-static-attrib",new int(ISection::PriStatAttribs));
- m_map.insert("friend",new int(ISection::Friend));
- m_map.insert("related",new int(ISection::Related));
- m_map.insert("define",new int(ISection::Defines));
- m_map.insert("prototype",new int(ISection::Prototypes));
- m_map.insert("typedef",new int(ISection::Typedefs));
- m_map.insert("enum",new int(ISection::Enums));
- m_map.insert("func",new int(ISection::Functions));
- m_map.insert("var",new int(ISection::Variables));
- }
- ISection::SectionKind map(const QString &s)
- {
- int *val = m_map.find(s.utf8());
- if (val==0)
- {
- debug(1,"Warning: '%s' is an invalid section type\n",s.data());
- return ISection::Invalid;
- }
- else return (ISection::SectionKind)*val;
- }
- private:
- QDict<int> m_map;
-};
-
-static SectionTypeMap *s_typeMap;
-
-void sectionhandler_init()
-{
- s_typeMap = new SectionTypeMap;
-}
-
-void sectionhandler_exit()
-{
- delete s_typeMap;
-}
-
-SectionHandler::SectionHandler(IBaseHandler *parent) : m_parent(parent)
-{
- //printf("SectionHandler::SectionHandler()\n");
- m_members.setAutoDelete(TRUE);
- addEndHandler("sectiondef",this,&SectionHandler::endSection);
- addStartHandler("memberdef",this,&SectionHandler::startMember);
- addStartHandler("header",this,&SectionHandler::startHeader);
- addEndHandler("header",this,&SectionHandler::endHeader);
- addStartHandler("description",this,&SectionHandler::startDescription);
-}
-
-SectionHandler::~SectionHandler()
-{
- debug(2,"SectionHandler::~SectionHandler()\n");
-}
-
-void SectionHandler::startSection(const QXmlAttributes& attrib)
-{
- m_parent->setDelegate(this);
- m_kindString = attrib.value("kind");
- m_kind = s_typeMap->map(m_kindString);
- debug(2,"section kind='%s'\n",m_kindString.data());
-}
-
-void SectionHandler::startDescription(const QXmlAttributes& attrib)
-{
- DocHandler *docHandler = new DocHandler(this);
- docHandler->startDoc(attrib);
- m_description = docHandler;
-}
-
-void SectionHandler::endSection()
-{
- m_parent->setDelegate(0);
-}
-
-void SectionHandler::startMember(const QXmlAttributes& attrib)
-{
- MemberHandler *memHandler = new MemberHandler(this);
- memHandler->startMember(attrib);
- m_members.append(memHandler);
-}
-
-void SectionHandler::startHeader(const QXmlAttributes&)
-{
- m_header="";
- m_curString="";
-}
-
-void SectionHandler::endHeader()
-{
- m_header = m_curString.stripWhiteSpace();
- debug(2,"member header='%s'\n",m_header.data());
-}
-
-void SectionHandler::initialize(CompoundHandler *ch)
-{
- QListIterator<MemberHandler> mli(m_members);
- MemberHandler *mh;
- for (;(mh=mli.current());++mli)
- {
- mh->setCompoundHandler(ch);
- ch->insertMember(mh);
- mh->setSectionHandler(this);
- }
-}
-
-IDocRoot *SectionHandler::description() const
-{
- return m_description;
-}
-
-IMemberIterator *SectionHandler::members() const
-{
- return new MemberIterator(m_members);
-}
-
diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h
deleted file mode 100644
index a212e62..0000000
--- a/addon/doxmlparser/src/sectionhandler.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van 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.
- *
- */
-
-#ifndef _SECTIONHANDLER_H
-#define _SECTIONHANDLER_H
-
-#include <qstring.h>
-#include <qlist.h>
-#include <qxml.h>
-#include <doxmlintf.h>
-
-#include "basehandler.h"
-
-class SectionIterator :
- public BaseIterator<ISectionIterator,ISection,SectionHandler>
-{
- public:
- SectionIterator(const QList<SectionHandler> &list) :
- BaseIterator<ISectionIterator,ISection,SectionHandler>(list) {}
-};
-
-
-class SectionHandler : public IUserDefined, public BaseHandler<SectionHandler>
-{
- public:
- virtual void startMember(const QXmlAttributes& attrib);
- virtual void startHeader(const QXmlAttributes& attrib);
- virtual void startSection(const QXmlAttributes& attrib);
- virtual void startDescription(const QXmlAttributes& attrib);
- virtual void endSection();
- virtual void endHeader();
-
- SectionHandler(IBaseHandler *parent);
- virtual ~SectionHandler();
-
- // ISection
- virtual const IString *kindString() const
- { return &m_kindString; }
- virtual SectionKind kind() const
- { return m_kind; }
- IDocRoot *description() const;
- virtual IMemberIterator *members() const;
- virtual bool isStatic() const
- {
- return m_kind==PubStatFuncs || m_kind==PubStatAttribs ||
- m_kind==ProStatFuncs || m_kind==ProStatAttribs ||
- m_kind==PriStatFuncs || m_kind==PriStatAttribs;
- }
- virtual bool isPublic() const
- {
- return !isProtected() && !isPrivate();
- }
- virtual bool isProtected() const
- {
- return m_kind==ProTypes || m_kind==ProFuncs || m_kind==ProAttribs ||
- m_kind==ProSlots || m_kind==ProStatFuncs || m_kind==ProStatAttribs;
- }
- virtual bool isPrivate() const
- {
- return m_kind==PriTypes || m_kind==PriFuncs || m_kind==PriAttribs ||
- m_kind==PriSlots || m_kind==PriStatFuncs || m_kind==PriStatAttribs;
- }
-
- void initialize(CompoundHandler *c);
-
- // IUserDefined implementation
- virtual const IString *header() const
- {
- return &m_header;
- }
-
- private:
- IBaseHandler *m_parent;
-
- // XML elements:
- // -------------
- StringImpl m_header; // header
- DocHandler* m_description; // description
- QList<MemberHandler> m_members; // memberdef
-
- // XML attributes:
- // ---------------
- SectionKind m_kind; // kind
- StringImpl m_kindString; // kind as a string
-};
-
-void sectionhandler_init();
-void sectionhandler_exit();
-
-#endif
diff --git a/addon/doxmlparser/src/stringimpl.h b/addon/doxmlparser/src/stringimpl.h
deleted file mode 100644
index 8931b42..0000000
--- a/addon/doxmlparser/src/stringimpl.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef STRINGIMPL_H
-#define STRINGIMPL_H
-
-#include <qstring.h>
-#include "doxmlintf.h"
-
-class StringImpl : public IString
-{
- public:
- StringImpl() {}
- StringImpl(const QString &str) : m_str(str) {}
- StringImpl &operator=(const QString &str)
- { m_str=str; return *this; }
- virtual ~StringImpl() {}
- const char *data() const
- { return m_str.data(); }
-
- // IString
- const char *latin1() const
- { return m_str.latin1(); }
- const char *utf8() const
- { m_cstr = m_str.utf8(); return m_cstr.data(); }
- unsigned short unicodeCharAt(int index) const
- { return m_str.unicode()[index].unicode(); }
- bool isEmpty() const
- { return m_str.isEmpty(); }
- int length() const
- { return m_str.length(); }
-
- operator QString() const { return m_str; }
-
- private:
- QString m_str;
- mutable QCString m_cstr; // used as a cache for m_str.utf8() to avoid returning a temporary
-};
-
-#endif
-
diff --git a/addon/doxmlparser/test/CMakeLists.txt b/addon/doxmlparser/test/CMakeLists.txt
deleted file mode 100644
index 4caef57..0000000
--- a/addon/doxmlparser/test/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-
-include_directories(
- ../include
- ${PROJECT_SOURCE_DIR}/libversion
- ${PROJECT_SOURCE_DIR}/qtools
-)
-
-add_executable(doxmlparser_test
-main.cpp
-)
-
-
-target_link_libraries(doxmlparser_test
- doxmlparser
- doxygen_version
- qtools
- ${COVERAGE_LINKER_FLAGS}
-)
diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp
deleted file mode 100644
index 35fd700..0000000
--- a/addon/doxmlparser/test/main.cpp
+++ /dev/null
@@ -1,776 +0,0 @@
-/******************************************************************************
- *
- * $Id$
- *
- *
- * Copyright (C) 1997-2006 by Dimitri van 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.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <doxmlintf.h>
-#include <qstring.h>
-#include "version.h"
-
-/*! Dumps the contents of a hyperlinked text fragment as plain text to the
- * output.
- */
-QString linkedTextToString(ILinkedTextIterator *ti)
-{
- QString result;
- ILinkedText *lt=0;
- for (ti->toFirst();(lt=ti->current());ti->toNext())
- {
- switch (lt->kind())
- {
- case ILinkedText::Kind_Text: // plain text
- result+=dynamic_cast<ILT_Text*>(lt)->text()->latin1(); break;
- case ILinkedText::Kind_Ref: // a link
- result+=dynamic_cast<ILT_Ref *>(lt)->text()->latin1(); break;
- }
- }
- return result;
-}
-
-/*! Macro for printing an indented message. */
-#define InPrint(x) printf("%s",indent.latin1()), printf x;
-
-/*! Dumps the contents of a documentation block to stdout.
- * @note This function will call itself recursively.
- * @param doc The root of the documentation tree.
- * @param level The indent level.
- */
-void DumpDoc(IDoc *doc,int level)
-{
- if (doc==0) return;
- QString indent;
- indent.fill(' ',level);
- //printf(" doc node kind='%d'\n",doc->kind());
- switch (doc->kind())
- {
- case IDoc::Para:
- {
- InPrint(("<para>\n"));
- IDocPara *par = dynamic_cast<IDocPara*>(doc);
- ASSERT(par!=0);
- IDocIterator *di = par->contents();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</para>\n"));
- }
- break;
- case IDoc::Text:
- {
- IDocText *txt = dynamic_cast<IDocText*>(doc);
- ASSERT(txt!=0);
- InPrint(("<text value='%s' markup=%d headingLevel=%d/>\n",
- txt->text()->latin1(),txt->markup(),txt->headingLevel()));
- }
- break;
- case IDoc::MarkupModifier:
- {
- IDocMarkupModifier *md = dynamic_cast<IDocMarkupModifier*>(doc);
- ASSERT(md!=0);
- InPrint(("<markup modifier enabled=%d markup=%d headingLevel=%d/>\n",
- md->enabled(),md->markup(),md->headingLevel()));
- }
- break;
- case IDoc::ItemizedList:
- {
- InPrint(("<itemized list>\n"));
- IDocItemizedList *list = dynamic_cast<IDocItemizedList*>(doc);
- ASSERT(list!=0);
- IDocIterator *di = list->elements();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</itemized list>\n"));
- }
- break;
- case IDoc::OrderedList:
- {
- InPrint(("<ordered list>\n"));
- IDocOrderedList *list = dynamic_cast<IDocOrderedList*>(doc);
- ASSERT(list!=0);
- IDocIterator *di = list->elements();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</ordered list>\n"));
- }
- break;
- case IDoc::ListItem:
- {
- InPrint(("<list item>\n"));
- IDocListItem *li = dynamic_cast<IDocListItem*>(doc);
- ASSERT(li!=0);
- IDocIterator *di = li->contents();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</list item>\n"));
- }
- break;
- case IDoc::ParameterItem:
- {
- IDocParameterItem *item = dynamic_cast<IDocParameterItem*>(doc);
- InPrint(("<parameter item>\n"));
- IDocIterator *di = item->paramNames();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- DumpDoc(item->description(),level+1);
- InPrint(("</parameter item>\n"));
- }
- break;
- case IDoc::ParameterList:
- {
- IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc);
- InPrint(("<parameter list type=%d>\n",list->sectType()));
- IDocIterator *di = list->params();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</parameter list>\n"));
- ASSERT(list!=0);
- }
- break;
- case IDoc::Parameter:
- {
- IDocParameter *par = dynamic_cast<IDocParameter*>(doc);
- ASSERT(par!=0);
- InPrint(("<parameter name=%s/>\n",par->name()->latin1()));
- }
- break;
- case IDoc::SimpleSect:
- {
- IDocSimpleSect *ss = dynamic_cast<IDocSimpleSect*>(doc);
- ASSERT(ss!=0);
- InPrint(("<simplesect type=%s>\n",ss->typeString()->latin1()));
- DumpDoc(ss->title(),level+1);
- DumpDoc(ss->description(),level+1);
- InPrint(("<simplesect/>\n"));
- }
- break;
- case IDoc::Title:
- {
- InPrint(("<title>\n"));
- IDocTitle *t = dynamic_cast<IDocTitle*>(doc);
- ASSERT(t!=0);
- IDocIterator *di = t->title();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- InPrint(("<title/>\n"));
- }
- break;
- case IDoc::Ref:
- {
- IDocRef *ref = dynamic_cast<IDocRef*>(doc);
- ASSERT(ref!=0);
- InPrint(("<ref id=%s text=%s/>\n",
- ref->refId()->latin1(),ref->text()->latin1()));
- }
- break;
- case IDoc::VariableList:
- {
- InPrint(("<variablelist>\n"));
- IDocVariableList *vl = dynamic_cast<IDocVariableList*>(doc);
- ASSERT(vl!=0);
- IDocIterator *di = vl->entries();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("<variablelist/>\n"));
- }
- break;
- case IDoc::VariableListEntry:
- {
- IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc);
- ASSERT(vle!=0);
- ILinkedTextIterator *lti = vle->term();
- QString term = linkedTextToString(lti);
- lti->release();
- InPrint(("<variablelistentry term=%s>\n",term.latin1()));
- DumpDoc(vle->description(),level+1);
- InPrint(("<variablelistentry/>\n"));
- }
- break;
- case IDoc::HRuler:
- {
- IDocHRuler *hr = dynamic_cast<IDocHRuler*>(doc);
- ASSERT(hr!=0);
- InPrint(("<hruler/>\n"));
- }
- break;
- case IDoc::LineBreak:
- {
- IDocLineBreak *lb = dynamic_cast<IDocLineBreak*>(doc);
- ASSERT(lb!=0);
- InPrint(("<linebreak/>\n"));
- }
- break;
- case IDoc::ULink:
- {
- IDocULink *ul = dynamic_cast<IDocULink*>(doc);
- ASSERT(ul!=0);
- InPrint(("<ulink url='%s' text='%s'/>\n",ul->url()->latin1(),ul->text()->latin1()));
- }
- break;
- case IDoc::EMail:
- {
- IDocEMail *em = dynamic_cast<IDocEMail*>(doc);
- ASSERT(em!=0);
- InPrint(("<email address='%s'/>\n",em->address()->latin1()));
- }
- break;
- case IDoc::Link:
- {
- IDocLink *lk = dynamic_cast<IDocLink*>(doc);
- ASSERT(lk!=0);
- InPrint(("<link refid='%s' text='%s'/>\n",lk->refId()->latin1(),lk->text()->latin1()));
- }
- break;
- case IDoc::ProgramListing:
- {
- IDocProgramListing *pl = dynamic_cast<IDocProgramListing*>(doc);
- ASSERT(pl!=0);
- InPrint(("<programlisting>\n"));
- IDocIterator *cli = pl->codeLines();
- IDoc *cl;
- for (cli->toFirst();(cl=cli->current());cli->toNext())
- {
- DumpDoc(cl,level+1);
- }
- cli->release();
- InPrint(("</programlisting>\n"));
- }
- break;
- case IDoc::CodeLine:
- {
- IDocCodeLine *cl = dynamic_cast<IDocCodeLine*>(doc);
- ASSERT(cl!=0);
- InPrint(("<codeline lineNumber=%d refId='%s'>\n",cl->lineNumber(),cl->refId()->latin1()));
- IDocIterator *cei = cl->codeElements();
- IDoc *ce;
- for (cei->toFirst();(ce=cei->current());cei->toNext())
- {
- DumpDoc(ce,level+1);
- }
- cei->release();
- InPrint(("</codeline>\n"));
- }
- break;
- case IDoc::Highlight:
- {
- IDocHighlight *hl = dynamic_cast<IDocHighlight*>(doc);
- ASSERT(hl!=0);
- InPrint(("<highlight kind=%d>\n",hl->kind()));
- IDocIterator *cei = hl->codeElements();
- IDoc *ce;
- for (cei->toFirst();(ce=cei->current());cei->toNext())
- {
- DumpDoc(ce,level+1);
- }
- cei->release();
- InPrint(("</highlight>\n"));
- }
- break;
- case IDoc::Formula:
- {
- IDocFormula *fm = dynamic_cast<IDocFormula*>(doc);
- ASSERT(fm!=0);
- InPrint(("<formula id='%s' text='%s'/>\n",fm->id()->latin1(),fm->text()->latin1()));
- }
- break;
- case IDoc::Image:
- {
- IDocImage *img = dynamic_cast<IDocImage*>(doc);
- ASSERT(img!=0);
- InPrint(("<image name='%s' caption='%s'/>\n",img->name()->latin1(),img->caption()->latin1()));
- }
- break;
- case IDoc::DotFile:
- {
- IDocDotFile *df = dynamic_cast<IDocDotFile*>(doc);
- ASSERT(df!=0);
- InPrint(("<dotfile name='%s' caption='%s'/>\n",df->name()->latin1(),df->caption()->latin1()));
- }
- break;
- case IDoc::IndexEntry:
- {
- IDocIndexEntry *ie = dynamic_cast<IDocIndexEntry*>(doc);
- ASSERT(ie!=0);
- InPrint(("<indexentry primary='%s' secondary='%s'/>\n",ie->primary()->latin1(),ie->secondary()->latin1()));
- }
- break;
- case IDoc::Table:
- {
- IDocTable *tbl = dynamic_cast<IDocTable*>(doc);
- ASSERT(tbl!=0);
- InPrint(("<table numcols=%d caption='%s'>\n",tbl->numColumns(),tbl->caption()->latin1()));
- IDocIterator *ri = tbl->rows();
- IDoc *row;
- for (ri->toFirst();(row=ri->current());ri->toNext())
- {
- DumpDoc(row,level+1);
- }
- ri->release();
- InPrint(("</table>\n"));
- }
- break;
- case IDoc::Row:
- {
- IDocRow *row = dynamic_cast<IDocRow*>(doc);
- ASSERT(row!=0);
- InPrint(("<row>\n"));
- IDocIterator *ei = row->entries();
- IDoc *e;
- for (ei->toFirst();(e=ei->current());ei->toNext())
- {
- DumpDoc(e,level+1);
- }
- ei->release();
- InPrint(("</row>\n"));
- }
- break;
- case IDoc::Entry:
- {
- IDocEntry *ent = dynamic_cast<IDocEntry*>(doc);
- ASSERT(ent!=0);
- InPrint(("<entry>\n"));
- IDocIterator *di = ent->contents();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</entry>\n"));
- }
- break;
- case IDoc::Section:
- {
- IDocSection *sec = dynamic_cast<IDocSection*>(doc);
- ASSERT(sec!=0);
- InPrint(("<section id='%s' level=%d>\n",
- sec->id()->latin1(),sec->level()));
- DumpDoc(sec->title(),level+1);
- IDocIterator *di = sec->paragraphs();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di=sec->subSections();
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- IDocInternal *intern = sec->internal();
- if (intern)
- {
- DumpDoc(intern,level+1);
- }
- InPrint(("</section>\n"));
- }
- break;
- case IDoc::Internal:
- {
- IDocInternal *intern = dynamic_cast<IDocInternal*>(doc);
- ASSERT(intern!=0);
- InPrint(("<internal>\n"));
- IDocIterator *di = intern->paragraphs();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di=intern->subSections();
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- InPrint(("</internal>\n"));
- }
- break;
- case IDoc::Copy:
- {
- IDocCopy *cpy = dynamic_cast<IDocCopy*>(doc);
- ASSERT(cpy!=0);
- InPrint(("<copydoc>\n"));
- IDocIterator *di = cpy->contents();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("<copydoc/>\n"));
- }
- break;
- case IDoc::TocItem:
- {
- IDocTocItem *ti = dynamic_cast<IDocTocItem*>(doc);
- ASSERT(ti!=0);
- InPrint(("<tocitem id=\"%s\" title=\"%s\"/>\n",
- ti->id()->latin1(),ti->title()->latin1()));
- }
- break;
- case IDoc::TocList:
- {
- IDocTocList *tl = dynamic_cast<IDocTocList*>(doc);
- ASSERT(tl!=0);
- InPrint(("<toclist>\n"));
- IDocIterator *di = tl->elements();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("<toclist/>\n"));
- }
- break;
- case IDoc::Verbatim:
- {
- IDocVerbatim *vt = dynamic_cast<IDocVerbatim*>(doc);
- ASSERT(vt!=0);
- const char *s=0;
- switch (vt->type())
- {
- case IDocVerbatim::Verbatim: s="verbatim"; break;
- case IDocVerbatim::HtmlOnly: s="htmlonly"; break;
- case IDocVerbatim::LatexOnly: s="latexonly"; break;
- default:
- printf("Invalid verbatim type!\n");
- }
- InPrint(("<verbatim %s>\n",s));
- InPrint(("%s",vt->text()->latin1()));
- InPrint(("</verbatim>\n"));
- }
- break;
- case IDoc::Anchor:
- {
- IDocAnchor *anc = dynamic_cast<IDocAnchor*>(doc);
- ASSERT(anc!=0);
- InPrint(("<anchor id='%s'/>\n",anc->id()->latin1()));
- }
- break;
- case IDoc::Symbol:
- {
- IDocSymbol *sym = dynamic_cast<IDocSymbol*>(doc);
- ASSERT(sym!=0);
- InPrint(("<symbol type=%s letter=%c/>\n",
- sym->typeString()->latin1(),sym->letter()));
- }
- break;
- case IDoc::Root:
- {
- InPrint(("<root>\n"));
- IDocRoot *root = dynamic_cast<IDocRoot*>(doc);
- ASSERT(root!=0);
- IDocIterator *di = root->contents();
- IDoc *pdoc;
- for (di->toFirst();(pdoc=di->current());di->toNext())
- {
- DumpDoc(pdoc,level+1);
- }
- di->release();
- InPrint(("</root>\n"));
- }
- break;
-
- default:
- printf("Found unsupported node type %d!\n",doc->kind());
- break;
- }
-}
-
-void DumpGraph(IGraph *graph)
-{
- if (graph==0) { printf(" --- no graph ---\n"); return; }
- printf(" --- graph ----\n");
- INodeIterator *ni = graph->nodes();
- INode *node;
- for (ni->toFirst();(node=ni->current());ni->toNext())
- {
- printf(" --- node id=%s label=%s linkId=%s\n",
- node->id()->latin1(),
- node->label()->latin1(),
- node->linkId()->latin1()
- );
- IChildNodeIterator *cni = node->children();
- IChildNode *cn;
- for (cni->toFirst();(cn=cni->current());cni->toNext())
- {
- printf(" + child id=%s label=%s relation=%s\n",
- cn->node()->id()->latin1(),
- cn->node()->label()->latin1(),
- cn->relationString()->latin1()
- );
- IEdgeLabelIterator *eli = cn->edgeLabels();
- IEdgeLabel *el;
- for (eli->toFirst();(el=eli->current());eli->toNext())
- {
- printf(" edgeLabel=%s\n",el->label()->latin1());
- }
- eli->release();
- }
- cni->release();
- }
- ni->release();
- printf(" --- end graph ----\n");
-
-}
-
-void DumpParamList(IParamIterator *pli,int indent)
-{
- QString indentStr;
- indentStr.fill(' ',indent);
- IParam *par;
- for (pli->toFirst();(par=pli->current());pli->toNext())
- {
- ILinkedTextIterator *lti = par->type();
- QString parType = linkedTextToString(lti);
- lti->release();
- lti = par->defaultValue();
- QString defVal = linkedTextToString(lti);
- lti->release();
- printf("%sParam type=%s decl_name=%s def_name=%s defvalue=%s\n",
- indentStr.data(), parType.latin1(),
- par->declarationName()->latin1(),
- par->definitionName()->latin1(),
- defVal.latin1());
- }
-}
-
-int main(int argc,char **argv)
-{
- int locArgc = argc;
-
- if (locArgc == 2)
- {
- if (!strcmp(argv[1],"--help"))
- {
- printf("Usage: %s xml_dir\n",argv[0]);
- exit(0);
- }
- else if (!strcmp(argv[1],"--version"))
- {
- printf("%s version: %s\n",argv[0],getFullVersion());
- exit(0);
- }
- }
-
- if (locArgc!=2)
- {
- printf("Usage: %s xml_dir\n",argv[0]);
- exit(1);
- }
-
- IDoxygen *dox = createObjectModel();
-
- dox->setDebugLevel(4);
-
- if (!dox->readXMLDir(argv[1]))
- {
- printf("Error reading %s/index.xml\n",argv[1]);
- exit(1);
- }
-
- ICompoundIterator *cli = dox->compounds();
- ICompound *comp;
- printf("--- compound list ---------\n");
- for (cli->toFirst();(comp=cli->current());cli->toNext())
- {
- printf("Compound name=%s id=%s kind=%s\n",
- comp->name()->latin1(),comp->id()->latin1(),comp->kindString()->latin1());
-
- ISectionIterator *sli = comp->sections();
- ISection *sec;
- for (sli->toFirst();(sec=sli->current());sli->toNext())
- {
- printf(" Section kind=%s\n",sec->kindString()->latin1());
- IMemberIterator *mli = sec->members();
- IMember *mem;
- if( sec->kind() == ISection::UserDefined )
- {
- IUserDefined *group = dynamic_cast<IUserDefined*>(sec);
- printf(" Title=%s\n", group->header()->latin1() );
- }
- for (mli->toFirst();(mem=mli->current());mli->toNext())
- {
- ILinkedTextIterator *lti = mem->type();
- printf(" Member type=%s name=%s\n",
- linkedTextToString(lti).latin1(),mem->name()->latin1());
- lti->release();
-
- IParamIterator *pli = mem->parameters();
- DumpParamList(pli,6);
- pli->release();
- IMemberReferenceIterator *mri = mem->references();
- IMemberReference *mr;
- for (mri->toFirst();(mr=mri->current());mri->toNext())
- {
- IMember *memr = mr->member();
- printf(" References %s at line %d\n",
- mr->name()->latin1(),memr->bodyStart());
- }
-
- mri->release();
- mri = mem->referencedBy();
- for (mri->toFirst();(mr=mri->current());mri->toNext())
- {
- IMember *memr = mr->member();
- printf(" ReferencedBy %s at line %d\n",
- mr->name()->latin1(),memr->bodyStart());
- }
- mri->release();
-
- if (mem->kind()==IMember::Enum) // we have found an enum
- {
- IEnum *e = dynamic_cast<IEnum*>(mem);
- IMemberIterator *evi = e->enumValues(); // get the enum values
- IMember *mev;
- for (evi->toFirst();(mev=evi->current());evi->toNext())
- {
- IEnumValue *ev = dynamic_cast<IEnumValue*>(mev);
- ILinkedTextIterator *lti = ev->initializer();
- QString init = linkedTextToString(lti);
- lti->release();
- printf(" Enum value '%s' init='%s'\n",
- ev->name()->latin1(),init.latin1());
- }
- evi->release();
- }
-
- pli = mem->templateParameters();
- if (pli)
- {
- printf(" Template parameters\n");
- DumpParamList(pli,8);
- pli->release();
- }
-
- IDoc *doc = mem->briefDescription();
- if (doc)
- {
- printf("===== brief description ==== \n");
- DumpDoc(doc,0);
- }
-
- doc = mem->detailedDescription();
- if (doc)
- {
- printf("===== detailed description ==== \n");
- DumpDoc(doc,0);
- }
- }
- mli->release();
- }
- sli->release();
-
- IDoc *doc = comp->briefDescription();
- if (doc)
- {
- printf("===== brief description ==== \n");
- DumpDoc(doc,0);
- }
-
- doc = comp->detailedDescription();
- if (doc)
- {
- printf("===== detailed description ==== \n");
- DumpDoc(doc,0);
- }
-
- if (comp->kind()==ICompound::Class)
- {
- IClass *cls = dynamic_cast<IClass*>(comp);
- ASSERT(cls!=0);
-
- printf("==== inheritance graph ==== \n");
- DumpGraph(cls->inheritanceGraph());
-
- printf("==== collaboration graph ==== \n");
- DumpGraph(cls->collaborationGraph());
-
- printf("==== base classes ==== \n");
- IRelatedCompoundIterator *bcli = cls->baseCompounds();
- IRelatedCompound *bClass;
- for (bcli->toFirst();(bClass=bcli->current());bcli->toNext())
- {
- ICompound *bc = bClass->compound();
- printf(" + class %s\n",bc->name()->latin1());
- bc->release();
- }
- bcli->release();
-
- printf("==== derived classes ==== \n");
- IRelatedCompoundIterator *dcli = cls->derivedCompounds();
- IRelatedCompound *dClass;
- for (dcli->toFirst();(dClass=dcli->current());dcli->toNext())
- {
- ICompound *dc = dClass->compound();
- printf(" + class %s\n",dc->name()->latin1());
- dc->release();
- }
- dcli->release();
- }
- else if (comp->kind()==ICompound::File)
- {
- IFile *file = dynamic_cast<IFile*>(comp);
- ASSERT(file!=0);
-
- printf("==== include dependency graph ==== \n");
- DumpGraph(file->includeDependencyGraph());
-
- printf("==== included by dependency graph ==== \n");
- DumpGraph(file->includedByDependencyGraph());
-
- printf("==== source ====\n");
- DumpDoc(file->source(),0);
- }
-
- comp->release();
- }
- cli->release();
- printf("---------------------------\n");
-
- dox->release();
-
- return 0;
-}
-
diff --git a/addon/doxyapp/CMakeLists.txt b/addon/doxyapp/CMakeLists.txt
index 707fded..9213e22 100644
--- a/addon/doxyapp/CMakeLists.txt
+++ b/addon/doxyapp/CMakeLists.txt
@@ -38,6 +38,7 @@ target_link_libraries(doxyapp
doxymain
qtools
md5
+xml
lodepng
mscgen
doxygen_version
diff --git a/addon/doxyparse/CMakeLists.txt b/addon/doxyparse/CMakeLists.txt
index fe2f2c2..7a422a1 100644
--- a/addon/doxyparse/CMakeLists.txt
+++ b/addon/doxyparse/CMakeLists.txt
@@ -26,6 +26,7 @@ target_link_libraries(doxyparse
doxymain
qtools
md5
+xml
lodepng
mscgen
doxygen_version
diff --git a/addon/doxysearch/CMakeLists.txt b/addon/doxysearch/CMakeLists.txt
index d0c8724..2c1ac08 100644
--- a/addon/doxysearch/CMakeLists.txt
+++ b/addon/doxysearch/CMakeLists.txt
@@ -7,7 +7,7 @@ endif()
include_directories(
${PROJECT_SOURCE_DIR}/libversion
- ${PROJECT_SOURCE_DIR}/qtools
+ ${PROJECT_SOURCE_DIR}/libxml
${XAPIAN_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS}
)
@@ -20,7 +20,7 @@ target_link_libraries(doxyindexer
${WIN_EXTRA_LIBS}
${COVERAGE_LINKER_FLAGS}
doxygen_version
- qtools
+ xml
)
add_executable(doxysearch.cgi
diff --git a/addon/doxysearch/doxyindexer.cpp b/addon/doxysearch/doxyindexer.cpp
index ae4e046..8d295cb 100644
--- a/addon/doxysearch/doxyindexer.cpp
+++ b/addon/doxysearch/doxyindexer.cpp
@@ -20,17 +20,17 @@
#include <string>
#include <algorithm>
#include <sstream>
+#include <fstream>
+#include <iterator>
+#include <regex>
-// Qtools includes
-#include <qregexp.h>
-#include <qxml.h>
-#include <qfile.h>
-#include <qfileinfo.h>
+#include <sys/stat.h>
// Xapian include
#include <xapian.h>
#include "version.h"
+#include "xml.h"
#define MAX_TERM_LENGTH 245
@@ -106,13 +106,14 @@ static void addWords(const std::string &s,Xapian::Document &doc,int wfd)
/** Adds all identifiers in \a s to document \a doc with weight \a wfd */
static void addIdentifiers(const std::string &s,Xapian::Document &doc,int wfd)
{
- QRegExp re("[A-Z_a-z][A-Z_a-z0-9]*");
- int i,l,p=0;
- QCString qs = s.c_str();
- while ((i=re.match(qs,p,&l))!=-1)
+ std::regex id_re("[A-Z_a-z][A-Z_a-z0-9]*");
+ auto id_begin = std::sregex_iterator(s.begin(), s.end(), id_re);
+ auto id_end = std::sregex_iterator();
+
+ for (auto i = id_begin; i!=id_end; ++i)
{
- safeAddTerm(qs.mid(p,i-p).data(),doc,wfd);
- p=i+l;
+ std::smatch match = *i;
+ safeAddTerm(match.str(),doc,wfd);
}
}
@@ -142,12 +143,12 @@ static std::string unescapeXmlEntities(const std::string &s)
/** This class is a wrapper around SAX style XML parser, which
* parses the file without first building a DOM tree in memory.
*/
-class XMLContentHandler : public QXmlDefaultHandler
+class XMLContentHandler
{
public:
/** Handler for parsing XML data */
- XMLContentHandler(const QString &path)
- : m_db((path+"doxysearch.db").utf8().data(),Xapian::DB_CREATE_OR_OVERWRITE),
+ XMLContentHandler(const std::string &path)
+ : m_db(path+"doxysearch.db",Xapian::DB_CREATE_OR_OVERWRITE),
m_stemmer("english")
{
m_curFieldName = UnknownField;
@@ -161,7 +162,6 @@ class XMLContentHandler : public QXmlDefaultHandler
m_db.commit();
}
- private:
enum FieldNames
{
UnknownField = 0,
@@ -175,13 +175,12 @@ class XMLContentHandler : public QXmlDefaultHandler
};
/** Handler for a start tag. Called for <doc> and <field> tags */
- bool startElement(const QString &, const QString &,
- const QString &name, const QXmlAttributes &attrib)
+ void startElement(const std::string &name, const XMLHandlers::Attributes &attrib)
{
m_data="";
if (name=="field")
{
- QString fieldName = attrib.value("name");
+ std::string fieldName = XMLHandlers::value(attrib,"name");
if (fieldName=="type") m_curFieldName=TypeField;
else if (fieldName=="name") m_curFieldName=NameField;
else if (fieldName=="args") m_curFieldName=ArgsField;
@@ -191,11 +190,10 @@ class XMLContentHandler : public QXmlDefaultHandler
else if (fieldName=="text") m_curFieldName=TextField;
else m_curFieldName=UnknownField;
}
- return TRUE;
}
/** Handler for an end tag. Called for </doc> and </field> tags */
- bool endElement(const QString &, const QString &, const QString &name)
+ void endElement(const std::string &name)
{
if (name=="doc") // </doc>
{
@@ -260,16 +258,21 @@ class XMLContentHandler : public QXmlDefaultHandler
m_curFieldName=UnknownField;
}
// reset m_data
- return TRUE;
}
/** Handler for inline text */
- bool characters(const QString& ch)
+ void characters(const std::string& ch)
{
- m_data += std::string(ch.utf8());
- return TRUE;
+ m_data += ch;
}
+ void error(const std::string &fileName,int lineNr,const std::string &msg)
+ {
+ std::cerr << "Fatal error at " << fileName << ":" << lineNr << ": " << msg << std::endl;
+ }
+
+ private:
+
// internal state
Xapian::WritableDatabase m_db;
Xapian::Document m_doc;
@@ -279,38 +282,31 @@ class XMLContentHandler : public QXmlDefaultHandler
FieldNames m_curFieldName;
};
-/** Class for handling error during XML parsing */
-class XMLErrorHandler : public QXmlErrorHandler
-{
- public:
- virtual ~XMLErrorHandler() {}
- bool warning( const QXmlParseException & )
- {
- return FALSE;
- }
- bool error( const QXmlParseException & )
- {
- return FALSE;
- }
- bool fatalError( const QXmlParseException &exception )
- {
- std::cerr << "Fatal error at line " << exception.lineNumber()
- << " column " << exception.columnNumber() << ": "
- << exception.message().utf8() << std::endl;
- return FALSE;
- }
- QString errorString() { return ""; }
-
- private:
- QString errorMsg;
-};
-
static void usage(const char *name, int exitVal = 1)
{
std::cerr << "Usage: " << name << " [-o output_dir] searchdata.xml [searchdata2.xml ...]" << std::endl;
exit(exitVal);
}
+// return the contents of a file as a string
+inline std::string fileToString(const std::string &fileName)
+{
+ std::ifstream t(fileName);
+ std::string result;
+ t.seekg(0, std::ios::end);
+ result.reserve(t.tellg());
+ t.seekg(0, std::ios::beg);
+ result.assign(std::istreambuf_iterator<char>(t),
+ std::istreambuf_iterator<char>());
+ return result;
+}
+
+bool dirExists(const char *path)
+{
+ struct stat info = {};
+ return stat(path,&info)==0 && (info.st_mode&S_IFDIR);
+}
+
/** main function to index data */
int main(int argc,const char **argv)
{
@@ -318,7 +314,7 @@ int main(int argc,const char **argv)
{
usage(argv[0]);
}
- QString outputDir;
+ std::string outputDir;
for (int i=1;i<argc;i++)
{
if (std::string(argv[i])=="-o")
@@ -332,8 +328,7 @@ int main(int argc,const char **argv)
{
i++;
outputDir=argv[i];
- QFileInfo fi(outputDir);
- if (!fi.exists() || !fi.isDir())
+ if (!dirExists(outputDir.c_str()))
{
std::cerr << "Error: specified output directory does not exist!" << std::endl;
usage(argv[0]);
@@ -353,12 +348,16 @@ int main(int argc,const char **argv)
try
{
- if (!outputDir.isEmpty() && outputDir.at(outputDir.length()-1)!=pathSep)
+ if (!outputDir.empty() && outputDir.at(outputDir.length()-1)!=pathSep)
{
outputDir+=pathSep;
}
- XMLContentHandler handler(outputDir);
- XMLErrorHandler errorHandler;
+ XMLContentHandler contentHandler(outputDir);
+ XMLHandlers handlers;
+ handlers.startElement = [&contentHandler](const std::string &name,const XMLHandlers::Attributes &attrs) { contentHandler.startElement(name,attrs); };
+ handlers.endElement = [&contentHandler](const std::string &name) { contentHandler.endElement(name); };
+ handlers.characters = [&contentHandler](const std::string &chars) { contentHandler.characters(chars); };
+ handlers.error = [&contentHandler](const std::string &fileName,int lineNr,const std::string &msg) { contentHandler.error(fileName,lineNr,msg); };
for (int i=1;i<argc;i++)
{
if (std::string(argv[i])=="-o")
@@ -367,14 +366,10 @@ int main(int argc,const char **argv)
}
else
{
- QString xmlFileName = argv[i];
- std::cout << "Processing " << xmlFileName.utf8() << "..." << std::endl;
- QFile xmlFile(xmlFileName);
- QXmlInputSource source(xmlFile);
- QXmlSimpleReader reader;
- reader.setContentHandler(&handler);
- reader.setErrorHandler(&errorHandler);
- reader.parse(source);
+ std::cout << "Processing " << argv[i] << "..." << std::endl;
+ std::string inputStr = fileToString(argv[i]);
+ XMLParser parser(handlers);
+ parser.parse(argv[i],inputStr.c_str(),false);
}
}
}
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index f713025..5031221 100755
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -553,7 +553,11 @@ void MainWindow::runDoxygen()
m_runProcess->setEnvironment(env);
QStringList args;
+#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
+ QStringList runOptions = m_runOptions->text().split(QLatin1Char(' '),Qt::SkipEmptyParts);
+#else
QStringList runOptions = m_runOptions->text().split(QLatin1Char(' '),QString::SkipEmptyParts);
+#endif
args << runOptions;
args << QString::fromLatin1("-b"); // make stdout unbuffered
diff --git a/addon/doxywizard/expert.cpp b/addon/doxywizard/expert.cpp
index 7fd7df3..a50ff2b 100644
--- a/addon/doxywizard/expert.cpp
+++ b/addon/doxywizard/expert.cpp
@@ -760,13 +760,13 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
{
if (!brief)
{
- t << endl;
+ t << "\n";
}
if (!condensed)
{
- t << "#---------------------------------------------------------------------------" << endl;
- t << "# " << elem.attribute(SA("docs")) << endl;
- t << "#---------------------------------------------------------------------------" << endl;
+ t << "#---------------------------------------------------------------------------\n";
+ t << "# " << elem.attribute(SA("docs")) << "\n";
+ t << "#---------------------------------------------------------------------------\n";
}
// write options...
QDomElement childElem = elem.firstChildElement();
@@ -783,9 +783,9 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
Input *option = i.value();
if (option && !brief)
{
- t << endl;
+ t << "\n";
t << convertToComment(option->templateDocs());
- t << endl;
+ t << "\n";
}
bool toPrint = true;
if (option && condensed) toPrint = !option->isDefault();
@@ -797,7 +797,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
t << " ";
option->writeValue(t,codec);
}
- t << endl;
+ t << "\n";
}
}
}
@@ -808,7 +808,7 @@ void Expert::saveTopic(QTextStream &t,QDomElement &elem,QTextCodec *codec,
bool Expert::writeConfig(QTextStream &t,bool brief, bool condensed)
{
// write global header
- t << "# Doxyfile " << getDoxygenVersion() << endl << endl;
+ t << "# Doxyfile " << getDoxygenVersion() << "\n\n";
if (!brief && !condensed)
{
t << convertToComment(m_header);
diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp
index cdc7d14..2f4c7f7 100644
--- a/addon/doxywizard/inputstrlist.cpp
+++ b/addon/doxywizard/inputstrlist.cpp
@@ -250,7 +250,7 @@ void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)
{
if (!first)
{
- t << " \\" << endl;
+ t << " \\\n";
t << " ";
}
first=false;
@@ -276,8 +276,8 @@ bool InputStrList::isDefault()
if (it1==m_strList.end() && it2==m_default.end()) return true;
// one list is empty but the other is not
- if (it1==m_default.end()) return false;
- if (it2==m_strList.end()) return false;
+ if (it1==m_strList.end()) return false;
+ if (it2==m_default.end()) return false;
it1 = m_strList.begin();
it2 = m_default.begin();
diff --git a/cmake/FindJavacc.cmake b/cmake/FindJavacc.cmake
index a134020..97a7827 100755
--- a/cmake/FindJavacc.cmake
+++ b/cmake/FindJavacc.cmake
@@ -1,25 +1,25 @@
find_program(JAVACC_EXECUTABLE NAMES javacc javaCC Javacc JavaCC javacc.bat DOC "path to the javacc executable")
mark_as_advanced(JAVACC_EXECUTABLE)
+set(JAVACC_FOUND 0)
if(JAVACC_EXECUTABLE)
- set(JAVACC_FOUND 1)
- message(STATUS "The javacc executable: ${JAVACC_EXECUTABLE}")
execute_process(
COMMAND "${JAVACC_EXECUTABLE}" -version
OUTPUT_VARIABLE JAVACC_TEMP_VERSION
)
string(REGEX MATCH ".* ([0-9]+(\\.[0-9]+)+) .*" JAVACC_TEMP_VERSION2_UNUSED "${JAVACC_TEMP_VERSION}")
if(CMAKE_MATCH_1)
+ set(JAVACC_FOUND 1)
set(JAVACC_VERSION ${CMAKE_MATCH_1})
else()
string(REGEX MATCH "([0-9]+(\\.[0-9]+)+)" JAVACC_TEMP_VERSION3_UNUSED "${JAVACC_TEMP_VERSION}")
if(CMAKE_MATCH_1)
+ set(JAVACC_FOUND 1)
set(JAVACC_VERSION ${CMAKE_MATCH_1})
- else()
- message(STATUS "Unable to determine JavaCC version, using existing files")
- set(JAVACC_FOUND 0)
endif()
endif()
+endif()
+if(JAVACC_FOUND)
+ message(STATUS "The javacc executable: ${JAVACC_EXECUTABLE} (found version \"${JAVACC_VERSION}\")")
else()
- set(JAVACC_FOUND 0)
message(STATUS "The javacc executable not found, using existing files")
endif()
diff --git a/cmake/FindgenerateDS.cmake b/cmake/FindgenerateDS.cmake
new file mode 100644
index 0000000..77011fc
--- /dev/null
+++ b/cmake/FindgenerateDS.cmake
@@ -0,0 +1,19 @@
+find_program(GENERATEDS_EXECUTABLE NAMES generateDS generateDS.py DOC "path to the generateDS executable")
+mark_as_advanced(GENERATEDS_EXECUTABLE)
+set(GENERATEDS_FOUND 0)
+if(GENERATEDS_EXECUTABLE)
+ execute_process(
+ COMMAND "${GENERATEDS_EXECUTABLE}" --version
+ OUTPUT_VARIABLE GENERATEDS_TEMP_VERSION
+ )
+ string(REGEX MATCH ".* ([0-9]+(\\.[0-9]+)+)" GENERATEDS_TEMP_VERSION_UNUSED "${GENERATEDS_TEMP_VERSION}")
+ if(CMAKE_MATCH_1)
+ set(GENERATEDS_FOUND 1)
+ set(GENERATEDS_VERSION ${CMAKE_MATCH_1})
+ endif()
+endif()
+if(GENERATEDS_FOUND)
+ message(STATUS "The generateDS executable: ${GENERATEDS_EXECUTABLE} (found version \"${GENERATEDS_VERSION}\")")
+else()
+ message(STATUS "The generateDS executable not found, using existing files")
+endif()
diff --git a/doc/customize.doc b/doc/customize.doc
index 52f8d7a..eebeb5c 100644
--- a/doc/customize.doc
+++ b/doc/customize.doc
@@ -1,12 +1,12 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2015 by Dimitri van 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.
*
@@ -18,12 +18,12 @@
\tableofcontents{html,latex}
-Doxygen provides various levels of customization.
-The section \ref minor_tweaks "Minor Tweaks" discusses what to
-do if you want to do minor tweaking to the look and feel of the output.
-The section \ref layout "Layout" show how to reorder and hide certain
-information on a page.
-The section \ref xmlgenerator "XML output" show how to generate
+Doxygen provides various levels of customization.
+The section \ref minor_tweaks "Minor Tweaks" discusses what to
+do if you want to do minor tweaking to the look and feel of the output.
+The section \ref layout "Layout" show how to reorder and hide certain
+information on a page.
+The section \ref xmlgenerator "XML output" show how to generate
whatever output you want based on the XML output produced by doxygen.
\section minor_tweaks Minor Tweaks
@@ -40,8 +40,8 @@ To change the overall color of the HTML output doxygen provides three options
to change the hue, saturation, and gamma correction of the colors respectively.
-For your convenience the GUI frontend \ref doxywizard_usage "Doxywizard"
-has a control that allows you to see the effect of changing the values of these options
+For your convenience the GUI frontend \ref doxywizard_usage "Doxywizard"
+has a control that allows you to see the effect of changing the values of these options
on the output in real time.
\subsection minor_tweaks_treeview Navigation
@@ -78,10 +78,10 @@ then you can also disable all indices, like so:
To make the HTML output more interactive, doxygen provides a number of options
that are disabled by default:
- enabling \ref cfg_html_dynamic_sections "HTML_DYNAMIC_SECTIONS" will make
- doxygen hide certain content (like graphs) in the HTML by default,
+ doxygen hide certain content (like graphs) in the HTML by default,
and let the reader expand these sections on request.
-- enabling \ref cfg_have_dot "HAVE_DOT" along
- with \ref cfg_interactive_svg "INTERACTIVE_SVG" while setting
+- enabling \ref cfg_have_dot "HAVE_DOT" along
+ with \ref cfg_interactive_svg "INTERACTIVE_SVG" while setting
\ref cfg_dot_image_format "DOT_IMAGE_FORMAT" to \c svg, will make doxygen
produce SVG images that will allow the user to zoom and pan (this only
happens when the size of the images exceeds a certain size).
@@ -89,24 +89,24 @@ that are disabled by default:
\subsection minor_tweaks_header_css Header, Footer, and Stylesheet changes
To tweak things like fonts or colors, margins, or other look \& feel
-aspects of the HTML output in detail, you can create a different
-<a href="https://www.w3schools.com/css/default.asp">cascading style sheet</a>.
-You can also let doxygen use a custom header and footer for each HTML
-page it generates, for instance to make the output conform to the style
+aspects of the HTML output in detail, you can create a different
+<a href="https://www.w3schools.com/css/default.asp">cascading style sheet</a>.
+You can also let doxygen use a custom header and footer for each HTML
+page it generates, for instance to make the output conform to the style
used on the rest of your web site.
To do this first run doxygen as follows:
\verbatim
-doxygen -w html header.html footer.html customdoxygen.css
+doxygen -w html header.html footer.html customdoxygen.css
\endverbatim
This will create 3 files:
- header.html is a HTML fragment which doxygen normally uses to start
a HTML page. Note that the fragment ends with a body tag and that is
contains a couple of commands of the form \$word. These will be replaced
- by doxygen on the fly.
-- footer.html is a HTML fragment which doxygen normally uses to end
- a HTML page. Also here special commands can be used. This file contain the
+ by doxygen on the fly.
+- footer.html is a HTML fragment which doxygen normally uses to end
+ a HTML page. Also here special commands can be used. This file contain the
link to www.doxygen.org and the body and html end tags.
- customdoxygen.css is the default cascading style sheet
used by doxygen. It is recommended only to look into this file and overrule
@@ -128,7 +128,7 @@ for more information about the possible meta commands you can use inside
your custom header.
\note You should not put the style sheet in the HTML output directory. Treat
-it as a source file. Doxygen will copy it for you.
+it as a source file. Doxygen will copy it for you.
\note If you use images or other external content in a custom header you
need to make sure these end up in the HTML output directory yourself,
@@ -136,24 +136,24 @@ for instance by writing a script that runs doxygen can then copies the
images to the output.
\warning The structure of headers and footers may change after upgrading to
-a newer version of doxygen, so if you are using a custom header or footer,
-it might not produce valid output anymore after upgrading.
+a newer version of doxygen, so if you are using a custom header or footer,
+it might not produce valid output anymore after upgrading.
\section layout Changing the layout of pages
In some cases you may want to change the way the output is structured.
-A different style sheet or custom headers and footers do not help in such
+A different style sheet or custom headers and footers do not help in such
case.
The solution doxygen provides is a layout file, which you can
-modify and doxygen will use to control what information is presented,
+modify and doxygen will use to control what information is presented,
in which order, and to some extent also how information is presented.
-The layout file is an XML file.
+The layout file is an XML file.
The default layout can be generated
by doxygen using the following command:
\verbatim
-doxygen -l
+doxygen -l
\endverbatim
optionally the name of the layout file can be specified, if omitted
\c DoxygenLayout.xml will be used.
@@ -192,25 +192,25 @@ The root element of the XML file is \c doxygenlayout, it has an attribute named
\c version, which will be used in the future to cope with changes that are
not backward compatible.
-The first section, identified by the \c navindex element, represents the
+The first section, identified by the \c navindex element, represents the
layout of the navigation tabs displayed at the top of each HTML page. At the
same time it also controls the items in the navigation tree in case
-\ref cfg_generate_treeview "GENERATE_TREEVIEW" is enabled.
+\ref cfg_generate_treeview "GENERATE_TREEVIEW" is enabled.
Each tab is represented by a \c tab element in the XML file.
-You can hide tabs by setting the \c visible attribute to \c no.
-You can also override the default title of a tab by specifying it as
+You can hide tabs by setting the \c visible attribute to \c no.
+You can also override the default title of a tab by specifying it as
the value of the \c title attribute. If the title field is the empty string
(the default) then doxygen will fill in an appropriate language specific title.
You can reorder the tabs by moving the tab elements in the XML file
-within the \c navindex element and even change the tree structure.
-Do not change the value of the \c type attribute however.
-Only a fixed set of types are supported, each representing a link to a
+within the \c navindex element and even change the tree structure.
+Do not change the value of the \c type attribute however.
+Only a fixed set of types are supported, each representing a link to a
specific index.
You can also add custom tabs using a type with name "user". Here is an
-example that shows how to add a tab with title "Google" pointing to
+example that shows how to add a tab with title "Google" pointing to
www.google.com:
\verbatim
@@ -222,9 +222,9 @@ www.google.com:
\endverbatim
The url field can also be a relative URL. If the URL starts with \@ref
-the link will point to a documented entities, such as a class, a function,
-a group, or a related page. Suppose we have defined a page using \@page with
-label mypage, then a tab with label "My Page" to this page would look
+the link will point to a documented entities, such as a class, a function,
+a group, or a related page. Suppose we have defined a page using \@page with
+label mypage, then a tab with label "My Page" to this page would look
as follows:
\verbatim
@@ -250,7 +250,7 @@ defined group with title "My Group":
</navindex>
\endverbatim
-Groups can be nested to form a hierarchy.
+Groups can be nested to form a hierarchy.
By default a usergroup entry in the navigation tree is a link to
a landing page with the contents of the group. You can link to a
@@ -263,7 +263,7 @@ different page using the `url` attribute just like you can for the
</tab>
\endverbatim
-The elements after \c navindex represent the layout of the different
+The elements after \c navindex represent the layout of the different
pages generated by doxygen:
- The \c class element represents the layout of all pages generated for
documented classes, structs, unions, and interfaces.
@@ -279,8 +279,8 @@ pages generated by doxygen:
Each XML element within one of the above page elements represents a certain
piece of information. Some pieces can appear in each type of page,
others are specific for a certain type of page.
-Doxygen will list the pieces in the order in which they appear
-in the XML file.
+Doxygen will list the pieces in the order in which they appear
+in the XML file.
The following generic elements are possible for each page:
<dl>
@@ -298,25 +298,25 @@ The following generic elements are possible for each page:
<dt>\c memberdecl
<dd>Represents the quick overview of members on a page (member declarations).
This elements has child elements per type of member list.
- The possible child elements are not listed in detail in the document,
- but the name of the element should be a good indication of the type
+ The possible child elements are not listed in detail in the document,
+ but the name of the element should be a good indication of the type
of members that the element represents.
<dt>\c memberdef
<dd>Represents the detailed member list on a page (member definition).
- Like the \c memberdecl element, also this element has a number of
- possible child elements.
+ Like the \c memberdecl element, also this element has a number of
+ possible child elements.
</dl>
The class page has the following specific elements:
<dl>
<dt>\c includes
- <dd>Represents the include file needed to obtain the definition for
+ <dd>Represents the include file needed to obtain the definition for
this class.
<dt>\c inheritancegraph
- <dd>Represents the inheritance relations for a class.
+ <dd>Represents the inheritance relations for a class.
Note that the CLASS_DIAGRAM option determines
if the inheritance relation is a list of base and derived classes or
- a graph.
+ a graph.
<dt>\c collaborationgraph
<dd>Represents the collaboration graph for a class.
<dt>\c allmemberslink
@@ -341,14 +341,14 @@ The file page has the following specific elements:
The group page has a specific \c groupgraph element which represents the
graph showing the dependencies between groups.
-Similarly, the directory page has a specific \c directorygraph element
-which represents the graph showing the dependencies between the directories
+Similarly, the directory page has a specific \c directorygraph element
+which represents the graph showing the dependencies between the directories
based on the \#include relations of the files inside the directories.
-Some elements have a \c visible attribute which can be
+Some elements have a \c visible attribute which can be
used to hide the fragment from the generated output, by setting the attribute's
-value to "no". You can also use the value of a configuration option to
-determine the visibility, by using
+value to "no". You can also use the value of a configuration option to
+determine the visibility, by using
its name prefixed with a dollar sign, e.g.
\verbatim
...
@@ -356,15 +356,15 @@ its name prefixed with a dollar sign, e.g.
...
\endverbatim
This was mainly added for backward compatibility.
-Note that the \c visible attribute is just a hint for doxygen.
-If no relevant information is available for a certain piece it is
-omitted even if it is set to \c yes (i.e. no empty sections are generated).
+Note that the \c visible attribute is just a hint for doxygen.
+If no relevant information is available for a certain piece it is
+omitted even if it is set to \c yes (i.e. no empty sections are generated).
Some elements have a \c title attribute. This attribute can be used
to customize the title doxygen will use as a header for the piece.
@warning at the moment you should not remove elements from the layout file
-as a way to hide information. Doing so can cause broken links in the
+as a way to hide information. Doing so can cause broken links in the
generated output!
@@ -378,27 +378,29 @@ generate the output you like. To do this set
The XML output consists of an index file named \c index.xml which
lists all items extracted by doxygen with references to the other XML files
for details. The structure of the index is described by a schema file
-\c index.xsd. All other XML files are described by the schema file
-named \c compound.xsd. If you prefer one big XML file
-you can combine the index and the other files using the
+\c index.xsd. All other XML files are described by the schema file
+named \c compound.xsd. If you prefer one big XML file
+you can combine the index and the other files using the
XSLT file \c combine.xslt.
-You can use any XML parser to parse the file or use the one that can be found
-in the \c addon/doxmlparser directory of doxygen source distribution.
-Look at \c addon/doxmlparser/include/doxmlintf.h for the interface of the
-parser and in \c addon/doxmlparser/example for examples.
+You can use any XML parser to parse the files or use the one that can be found
+in the \c addon/doxmlparser directory of doxygen's source distribution.
+Look at \c addon/doxmlparser/doxmlparser/index.py and
+\c addon/doxmlparser/doxmlparser/compound.py for the interface of the
+parser (it is generated by <a href="https://www.davekuhlman.org/generateDS.html">generatedDS</a>
+and follows the XML schema files \c index.xsd and \c compound.xsd found in
+\c templates/xml). Look in \c addon/doxmlparser/examples for examples.
The advantage of using the doxmlparser is that it
-will only read the index file into memory and then only those XML
-files that you implicitly load via navigating through the index. As a
+allows you to only read the index file into memory and then only those XML
+files that you implicitly load via navigating through the index. As a
result this works even for very large projects where reading all XML
files as one big DOM tree would not fit into memory.
See <a href="https://github.com/michaeljones/breathe">the Breathe project</a> for
-an example that uses doxygen XML output from Python to bridge it with the
+an example that uses doxygen XML output from Python to bridge it with the
<a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> document generator.
-
\htmlonly
Go to the <a href="custcmd.html">next</a> section or return to the
<a href="index.html">index</a>.
diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc
index 4df83ff..34aa3ed 100644
--- a/doc/preprocessing.doc
+++ b/doc/preprocessing.doc
@@ -259,6 +259,10 @@ you can run doxygen as follows:
\verbatim
doxygen -d Preprocessor
\endverbatim
+or when the line numbers are not wanted:
+\verbatim
+ doxygen -d Preprocessor -d NoLineno
+\endverbatim
This will instruct doxygen to dump the input sources to standard output after
preprocessing has been done (Hint: set <code>QUIET = YES</code> and
<code>WARNINGS = NO</code> in the configuration file to disable any other
diff --git a/doc/starting.doc b/doc/starting.doc
index 3ae2692..ad34af3 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -249,7 +249,8 @@ files and can be used for validation or to steer XSLT scripts.
In the `addon/doxmlparser` directory you can find a parser library for reading
the XML output produced by doxygen in an incremental way
-(see `addon/doxmlparser/include/doxmlintf.h` for the interface of the library)
+(see `addon/doxmlparser/doxmparser/index.py` and `addon/doxmlparser/doxmlparser/compound.py`
+for the interface of the library)
\subsection man_out Man page output
\addindex man
diff --git a/doc/trouble.doc b/doc/trouble.doc
index cb50399..5405a81 100644
--- a/doc/trouble.doc
+++ b/doc/trouble.doc
@@ -106,7 +106,8 @@ helpful and it will cost me much more time to figure out what you mean.
In the worst-case your bug report may even be completely ignored by me, so
always try to include the following information in your bug report:
- The version of doxygen you are using (for instance 1.5.3, use
- `doxygen --version` if you are not sure).
+ `doxygen --version` if you are not sure or `doxygen --Version` for a bit
+ more information).
- The name and version number of your operating system (for instance
Ubuntu Linux 18.04 LTS)
- It is usually a good idea to send along the configuration file as well,
diff --git a/doc/xmlcmds.doc b/doc/xmlcmds.doc
index 3a58301..6cb78bd 100644
--- a/doc/xmlcmds.doc
+++ b/doc/xmlcmds.doc
@@ -18,7 +18,7 @@
Doxygen supports most of the XML commands that are typically used in C#
code comments. The XML tags are defined in Appendix D of the
-<a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm">ECMA-334</a>
+<a href="https://www.ecma-international.org/publications-and-standards/standards/ecma-334/">ECMA-334</a>
standard, which defines the C# language. Unfortunately, the specification is
not very precise and a number of the examples given are of poor quality.
diff --git a/libxml/CMakeLists.txt b/libxml/CMakeLists.txt
new file mode 100644
index 0000000..96c5653
--- /dev/null
+++ b/libxml/CMakeLists.txt
@@ -0,0 +1,19 @@
+include_directories(
+ ${PROJECT_SOURCE_DIR}/libxml
+)
+
+add_custom_command(
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libxml/xml.l > ${GENERATED_SRC}/xml.l.h
+ DEPENDS ${PROJECT_SOURCE_DIR}/src/scan_states.py ${PROJECT_SOURCE_DIR}/libxml/xml.l
+ OUTPUT ${GENERATED_SRC}/xml.l.h
+)
+set_source_files_properties(${GENERATED_SRC}/xml.l.h PROPERTIES GENERATED 1)
+
+FLEX_TARGET(xml xml.l ${GENERATED_SRC}/xml.cpp COMPILE_FLAGS "${LEX_FLAGS}")
+
+add_library(xml
+${GENERATED_SRC}/xml.cpp
+${GENERATED_SRC}/xml.l.h
+)
+
+
diff --git a/src/xml.h b/libxml/xml.h
index add95f1..0708d34 100644
--- a/src/xml.h
+++ b/libxml/xml.h
@@ -1,6 +1,21 @@
#ifndef XML_H
#define XML_H
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2021 by Dimitri van 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.
+ *
+ */
+
#include <memory>
#include <functional>
#include <string>
@@ -61,8 +76,9 @@ class XMLParser : public XMLLocator
/*! Parses a file gives the contents of the file as a string.
* @param fileName the name of the file, used for error reporting.
* @param inputString the contents of the file as a zero terminated UTF-8 string.
+ * @param debugEnable indicates if debugging via -d lex is enabled or not.
*/
- void parse(const char *fileName,const char *inputString);
+ void parse(const char *fileName,const char *inputString,bool debugEnabled);
private:
virtual int lineNr() const override;
diff --git a/src/xml.l b/libxml/xml.l
index ace35d5..ac58882 100644
--- a/src/xml.l
+++ b/libxml/xml.l
@@ -31,7 +31,7 @@
#include <vector>
#include <stdio.h>
#include "xml.h"
-#include "message.h"
+//#include "message.h"
#define YY_NEVER_INTERACTIVE 1
#define YY_NO_INPUT 1
@@ -426,7 +426,7 @@ XMLParser::~XMLParser()
xmlYYlex_destroy(p->yyscanner);
}
-void XMLParser::parse(const char *fileName,const char *inputStr)
+void XMLParser::parse(const char *fileName,const char *inputStr, bool debugEnabled)
{
yyscan_t yyscanner = p->yyscanner;
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
@@ -437,7 +437,16 @@ void XMLParser::parse(const char *fileName,const char *inputStr)
if (inputStr==nullptr || inputStr[0]=='\0') return; // empty input
- printlex(yy_flex_debug, true, __FILE__, fileName);
+ FILE *output = 0;
+ const char *enter_txt = 0;
+ const char *finished_txt = 0;
+ if (yy_flex_debug) { output=stderr; enter_txt="entering"; finished_txt="finished"; }
+ else if (debugEnabled) { output=stdout; enter_txt="Entering"; finished_txt="Finished"; }
+
+ if (output)
+ {
+ fprintf(output,"--%s lexical analyzer: %s (for: %s)\n",enter_txt, __FILE__, fileName);
+ }
BEGIN(Initial);
yyextra->fileName = fileName;
@@ -464,7 +473,10 @@ void XMLParser::parse(const char *fileName,const char *inputStr)
reportError(yyscanner,msg);
}
- printlex(yy_flex_debug, false, __FILE__, fileName);
+ if (output)
+ {
+ fprintf(output,"--%s lexical analyzer: %s (for: %s)\n",finished_txt, __FILE__, fileName);
+ }
}
int XMLParser::lineNr() const
diff --git a/qtools/CMakeLists.txt b/qtools/CMakeLists.txt
index d49ca47..78faba1 100644
--- a/qtools/CMakeLists.txt
+++ b/qtools/CMakeLists.txt
@@ -5,7 +5,6 @@ qbuffer.cpp
qcollection.cpp
qcstring.cpp
qdatastream.cpp
-qdatetime.cpp
qdir.cpp
qfile.cpp
qfileinfo.cpp
@@ -21,8 +20,6 @@ qtextstream.cpp
qtextcodec.cpp
qstringlist.cpp
qcstringlist.cpp
-qxml.cpp
-qmap.cpp
qutfcodec.cpp
)
diff --git a/qtools/qcstringlist.cpp b/qtools/qcstringlist.cpp
index 4bb231d..f1c4599 100644
--- a/qtools/qcstringlist.cpp
+++ b/qtools/qcstringlist.cpp
@@ -16,7 +16,6 @@
#include "qstrlist.h"
#include "qdatastream.h"
-#include "qtl.h"
/*!
Splits the string \a str using \a sep as separator. Returns the
diff --git a/qtools/qdatetime.cpp b/qtools/qdatetime.cpp
deleted file mode 100644
index 8f1cab2..0000000
--- a/qtools/qdatetime.cpp
+++ /dev/null
@@ -1,1455 +0,0 @@
-/****************************************************************************
-**
-**
-** Implementation of date and time classes
-**
-** Created : 940124
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the tools module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
-** licenses may use this file in accordance with the Qt Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#define gettimeofday __hide_gettimeofday
-#include "qdatetime.h"
-#include "qdatastream.h"
-#include <stdio.h>
-#include <time.h>
-#if defined(_OS_WIN32_)
-#if defined(_CC_BOOL_DEF_)
-#undef bool
-#include <windows.h>
-#define bool int
-#else
-#include <windows.h>
-#endif
-#elif defined(_OS_MSDOS_)
-#include <dos.h>
-#elif defined(_OS_OS2_)
-#include <os2.h>
-#elif defined(_OS_UNIX_) || defined(_OS_MAC_)
-#include <sys/time.h>
-#include <unistd.h>
-#undef gettimeofday
-extern "C" int gettimeofday( struct timeval *, struct timezone * );
-#endif
-
-static const uint FIRST_DAY = 2361222; // Julian day for 1752/09/14
-static const int FIRST_YEAR = 1752; // ### wrong for many countries
-static const uint SECS_PER_DAY = 86400;
-static const uint MSECS_PER_DAY = 86400000;
-static const uint SECS_PER_HOUR = 3600;
-static const uint MSECS_PER_HOUR= 3600000;
-static const uint SECS_PER_MIN = 60;
-static const uint MSECS_PER_MIN = 60000;
-
-static const short monthDays[] ={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-
-// ##### Localize.
-
-const char * const QDate::monthNames[] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-
-const char * const QDate::weekdayNames[] ={
- "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
-
-
-/*****************************************************************************
- QDate member functions
- *****************************************************************************/
-
-// REVISED: aavit
-
-/*!
- \class QDate qdatetime.h
- \brief The QDate class provides date functions.
-
- \ingroup time
-
- A QDate object contains a calendar date, i.e. year, month, and day
- numbers in the modern western (Gregorian) calendar. It can read the
- current date from the system clock. It provides functions for
- comparing dates and for manipulating a date by adding a number of
- days.
-
- A QDate object is typically created either by giving the year, month
- and day numbers explicitly, or by using the static function
- currentDate(), which makes a QDate object which contains the
- system's clock date. An explicit date can also be set using
- setYMD().
-
- The year(), month(), and day() functions provide access to the year,
- month, and day numbers. Also, dayOfWeek() and dayOfYear() functions
- are provided. The same information is provided in textual format by
- the toString(), dayName(), and monthName() functions.
-
- QDate provides a full set of operators to compare two QDate
- objects. A date is considered smaller than another if it is earlier
- than the other.
-
- The date a given number of days later than a given date can be found
- using the addDays() function. Correspondingly, the number of days
- between two dates can be found using the daysTo() function.
-
- The daysInMonth() and daysInYear() functions tell how many days
- there are in this date's month and year, respectively. The
- isLeapYear() function tells whether this date is in a leap year.
-
- Note that QDate may not be used for date calculations for dates in
- the remote past, i.e. prior to the introduction of the Gregorian
- calendar. This calendar was adopted by England Sep. 14. 1752 (hence
- this is the earliest valid QDate), and subsequently by most other
- western countries, until 1923.
-
- The end of time is reached around 8000AD, by which time we expect Qt
- to be obsolete.
-
- \sa QTime, QDateTime
-*/
-
-
-/*!
- \fn QDate::QDate()
- Constructs a null date. Null dates are invalid.
-
- \sa isNull(), isValid()
-*/
-
-
-/*!
- Constructs a date with the year \a y, month \a m and day \a d.
-
- \a y must be in the range 1752-ca. 8000, \a m must be in the range
- 1-12, and \a d must be in the range 1-31. Exception: if \a y is in
- the range 0-99, it is interpreted as 1900-1999.
-
- \sa isValid()
-*/
-
-QDate::QDate( int y, int m, int d )
-{
- jd = 0;
- setYMD( y, m, d );
-}
-
-
-/*!
- \fn bool QDate::isNull() const
-
- Returns TRUE if the date is null. A null date is invalid.
-
- \sa isValid()
-*/
-
-
-/*!
- Returns TRUE if this date is valid.
-
- \sa isNull()
-*/
-
-bool QDate::isValid() const
-{
- return jd >= FIRST_DAY;
-}
-
-
-/*!
- Returns the year (>= 1752) of this date.
-
- \sa month(), day()
-*/
-
-int QDate::year() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- return y;
-}
-
-/*!
- Returns the month (January=1 .. December=12) of this date.
-
- \sa year(), day()
-*/
-
-int QDate::month() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- return m;
-}
-
-/*!
- Returns the day of the month (1..31) of this date.
-
- \sa year(), month(), dayOfWeek()
-*/
-
-int QDate::day() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- return d;
-}
-
-/*!
- Returns the weekday (Monday=1 .. Sunday=7) for this date.
-
- \sa day(), dayOfYear()
-*/
-
-int QDate::dayOfWeek() const
-{
- return (((jd+1) % 7) + 6)%7 + 1;
-}
-
-/*!
- Returns the day of the year (1..365) for this date.
-
- \sa day(), dayOfWeek()
-*/
-
-int QDate::dayOfYear() const
-{
- return jd - greg2jul(year(), 1, 1) + 1;
-}
-
-/*!
- Returns the number of days in the month (28..31) for this date.
-
- \sa day(), daysInYear()
-*/
-
-int QDate::daysInMonth() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- if ( m == 2 && leapYear(y) )
- return 29;
- else
- return monthDays[m];
-}
-
-/*!
- Returns the number of days in the year (365 or 366) for this date.
-
- \sa day(), daysInMonth()
-*/
-
-int QDate::daysInYear() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- return leapYear(y) ? 366 : 365;
-}
-
-
-/*!
- Returns the name of the \a month.
-
- Month 1 == "Jan", month 2 == "Feb" etc.
-
- \sa toString(), dayName()
-*/
-
-QCString QDate::monthName( int month ) const
-{
-#if defined(CHECK_RANGE)
- if ( month < 1 || month > 12 ) {
- qWarning( "QDate::monthName: Parameter out ouf range." );
- month = 1;
- }
-#endif
- return monthNames[month-1];
-}
-
-/*!
- Returns the name of the \a weekday.
-
- Weekday 1 == "Mon", day 2 == "Tue" etc.
-
- \sa toString(), monthName()
-*/
-
-QCString QDate::dayName( int weekday ) const
-{
-#if defined(CHECK_RANGE)
- if ( weekday < 1 || weekday > 7 ) {
- qWarning( "QDate::dayName: Parameter out of range." );
- weekday = 1;
- }
-#endif
- return weekdayNames[weekday-1];
-}
-
-
-/*!
- Returns the date as a string.
-
- The string format is "Sat May 20 1995". This function uses the
- dayName() and monthName() functions to generate the string.
-
- \sa dayName(), monthName()
-*/
-
-QCString QDate::toString() const
-{
- int y, m, d;
- jul2greg( jd, y, m, d );
- QCString buf = dayName(dayOfWeek());
- buf += ' ';
- buf += monthName(m);
- QCString t;
- t.sprintf( " %d %d", d, y);
- buf += t;
- return buf;
-}
-
-
-/*!
- Sets the year \a y, month \a m and day \a d.
-
- \a y must be in the range 1752-ca. 8000, \a m must be in the range
- 1-12, and \a d must be in the range 1-31. Exception: if \a y is in
- the range 0-99, it is interpreted as 1900-1999.
-
- Returns TRUE if the date is valid, otherwise FALSE.
-*/
-
-bool QDate::setYMD( int y, int m, int d )
-{
- if ( !isValid(y,m,d) ) {
-#if defined(CHECK_RANGE)
- qWarning( "QDate::setYMD: Invalid date %04d/%02d/%02d", y, m, d );
-#endif
- return FALSE;
- }
- jd = greg2jul( y, m, d );
-#if defined(DEBUG)
- ASSERT( year() == (y > 99 ? y : 1900+y) && month() == m && day() == d );
-#endif
- return TRUE;
-}
-
-/*!
- Returns a QDate object containing a date \a ndays later than the
- date of this object (or earlier if \a ndays is negative).
-
- \sa daysTo()
-*/
-
-QDate QDate::addDays( int ndays ) const
-{
- QDate d;
- d.jd = jd + ndays;
- return d;
-}
-
-/*!
- Returns the number of days from this date to \a d (which is negative
- if \a d is earlier than this date).
-
- Example:
- \code
- QDate d1( 1995, 5, 17 ); // May 17th 1995
- QDate d2( 1995, 5, 20 ); // May 20th 1995
- d1.daysTo( d2 ); // returns 3
- d2.daysTo( d1 ); // returns -3
- \endcode
-
- \sa addDays()
-*/
-
-int QDate::daysTo( const QDate &d ) const
-{
- return d.jd - jd;
-}
-
-
-/*!
- \fn bool QDate::operator==( const QDate &d ) const
- Returns TRUE if this date is equal to \a d, or FALSE if
- they are different.
-*/
-
-/*!
- \fn bool QDate::operator!=( const QDate &d ) const
- Returns TRUE if this date is different from \a d, or FALSE if
- they are equal.
-*/
-
-/*!
- \fn bool QDate::operator<( const QDate &d ) const
- Returns TRUE if this date is earlier than \a d, otherwise FALSE.
-*/
-
-/*!
- \fn bool QDate::operator<=( const QDate &d ) const
- Returns TRUE if this date is earlier than or equal to \a d, otherwise FALSE.
-*/
-
-/*!
- \fn bool QDate::operator>( const QDate &d ) const
- Returns TRUE if this date is later than \a d, otherwise FALSE.
-*/
-
-/*!
- \fn bool QDate::operator>=( const QDate &d ) const
- Returns TRUE if this date is later than or equal to \a d, otherwise FALSE.
-*/
-
-
-/*!
- Returns the current date, as reported by the system clock.
-
- \sa QTime::currentTime(), QDateTime::currentDateTime()
-*/
-
-QDate QDate::currentDate()
-{
-#if defined(_OS_WIN32_)
-
- SYSTEMTIME t;
- GetLocalTime( &t );
- QDate d;
- d.jd = greg2jul( t.wYear, t.wMonth, t.wDay );
- return d;
-
-#else
-
- time_t ltime;
- time( &ltime );
- tm *t = localtime( &ltime );
- QDate d;
- d.jd = greg2jul( t->tm_year + 1900, t->tm_mon + 1, t->tm_mday );
- return d;
-
-#endif
-}
-
-/*!
- Returns TRUE if the specified date (year \a y, month \a m and day \a
- d) is valid.
-
- Example:
- \code
- QDate::isValid( 2002, 5, 17 ); // TRUE; May 17th 2002 is OK.
- QDate::isValid( 2002, 2, 30 ); // FALSE; Feb 30th does not exist
- QDate::isValid( 2004, 2, 29 ); // TRUE; 2004 is a leap year
- QDate::isValid( 1202, 6, 6 ); // FALSE; 1202 is pre-Gregorian
- \endcode
-
- Note that a \a y value in the range 00-99 is interpreted as
- 1900-1999.
-
- \sa isNull(), setYMD()
-*/
-
-bool QDate::isValid( int y, int m, int d )
-{
- if ( y >= 0 && y <= 99 )
- y += 1900;
- else if ( y < FIRST_YEAR || (y == FIRST_YEAR && (m < 9 ||
- (m == 9 && d < 14))) )
- return FALSE;
- return (d > 0 && m > 0 && m <= 12) &&
- (d <= monthDays[m] || (d == 29 && m == 2 && leapYear(y)));
-}
-
-/*!
- Returns TRUE if the specified year \a y is a leap year.
-*/
-
-bool QDate::leapYear( int y )
-{
- return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
-}
-
-/*!
- \internal
- Converts a Gregorian date to a Julian day.
- This algorithm is taken from Communications of the ACM, Vol 6, No 8.
- \sa jul2greg()
-*/
-
-uint QDate::greg2jul( int y, int m, int d )
-{
- uint c, ya;
- if ( y <= 99 )
- y += 1900;
- if ( m > 2 ) {
- m -= 3;
- } else {
- m += 9;
- y--;
- }
- c = y; // NOTE: Sym C++ 6.0 bug
- c /= 100;
- ya = y - 100*c;
- return 1721119 + d + (146097*c)/4 + (1461*ya)/4 + (153*m+2)/5;
-}
-
-/*!
- \internal
- Converts a Julian day to a Gregorian date.
- This algorithm is taken from Communications of the ACM, Vol 6, No 8.
- \sa greg2jul()
-*/
-
-void QDate::jul2greg( uint jd, int &y, int &m, int &d )
-{
- uint x;
- uint j = jd - 1721119;
- y = (j*4 - 1)/146097;
- j = j*4 - 146097*y - 1;
- x = j/4;
- j = (x*4 + 3) / 1461;
- y = 100*y + j;
- x = (x*4) + 3 - 1461*j;
- x = (x + 4)/4;
- m = (5*x - 3)/153;
- x = 5*x - 3 - 153*m;
- d = (x + 5)/5;
- if ( m < 10 ) {
- m += 3;
- } else {
- m -= 9;
- y++;
- }
-}
-
-
-/*****************************************************************************
- QTime member functions
- *****************************************************************************/
-
-/*!
- \class QTime qdatetime.h
-
- \brief The QTime class provides clock time functions.
-
- \ingroup time
-
- A QTime object contains a clock time, i.e. a number of hours,
- minutes, seconds and milliseconds since midnight. It can read the
- current time from the system clock, and measure a span of elapsed
- time. It provides functions for comparing times and for manipulating
- a time by adding a number of (milli)seconds.
-
- QTime operates with 24-hour clock format; it has no concept of
- AM/PM. It operates with local time; it does not know anything about
- time zones or daylight savings time.
-
- A QTime object is typically created either by giving the number of
- hours, minutes, seconds, and milliseconds explicitly, or by using
- the static function currentTime(), which makes a QTime object which
- contains the system's clock time. Note that the accuracy depends on
- the accuracy of the underlying operating system; not all systems
- provide 1-millisecond accuracy.
-
- The hour(), minute(), second(), and msec() functions provide access
- to the number of hours, minutes, seconds, and milliseconds of the
- time. The same information is provided in textual format by the
- toString() function.
-
- QTime provides a full set of operators to compare two QTime
- objects. A time is considered smaller than another if it is earlier
- than the other.
-
- The time a given number of seconds or milliseconds later than a
- given time can be found using the addSecs() or addMSecs()
- functions. Correspondingly, the number of (milli)seconds between two
- times can be found using the secsTo() or msecsTo() functions.
-
- QTime can be used to measure a span of elapsed time using the
- start(), restart(), and elapsed() functions.
-
- \sa QDate, QDateTime
-*/
-
-/*!
- \fn QTime::QTime()
-
- Constructs the time 0 hours, minutes, seconds and milliseconds,
- i.e. 00:00:00.000 (midnight). This is a valid time.
-
- \sa isValid()
-*/
-
-/*!
- Constructs a time with hour \a h, minute \a m, seconds \a s and
- milliseconds \a ms.
-
- \a h must be in the range 0-23, \a m and \a s must be in the range
- 0-59, and \a ms must be in the range 0-999.
-
- \sa isValid()
-*/
-
-QTime::QTime( int h, int m, int s, int ms )
-{
- setHMS( h, m, s, ms );
-}
-
-
-/*!
- \fn bool QTime::isNull() const
- Returns TRUE if the time is equal to 00:00:00.000. A null time is valid.
-
- \sa isValid()
-*/
-
-/*!
- Returns TRUE if the time is valid, or FALSE if the time is invalid.
- The time 23:30:55.746 is valid, while 24:12:30 is invalid.
-
- \sa isNull()
-*/
-
-bool QTime::isValid() const
-{
- return ds < MSECS_PER_DAY;
-}
-
-
-/*!
- Returns the hour part (0..23) of the time.
-*/
-
-int QTime::hour() const
-{
- return ds / MSECS_PER_HOUR;
-}
-
-/*!
- Returns the minute part (0..59) of the time.
-*/
-
-int QTime::minute() const
-{
- return (ds % MSECS_PER_HOUR)/MSECS_PER_MIN;
-}
-
-/*!
- Returns the second part (0..59) of the time.
-*/
-
-int QTime::second() const
-{
- return (ds / 1000)%SECS_PER_MIN;
-}
-
-/*!
- Returns the millisecond part (0..999) of the time.
-*/
-
-int QTime::msec() const
-{
- return ds % 1000;
-}
-
-
-/*!
- Returns the time of this object in a textual format. Milliseconds
- are not included. The string format is HH:MM:SS, e.g. 1 second
- before midnight would be "23:59:59".
-*/
-
-QCString QTime::toString() const
-{
- QCString buf;
- buf.sprintf( "%.2d:%.2d:%.2d", hour(), minute(), second() );
- return buf;
-}
-
-
-/*!
- Sets the time to hour \a h, minute \a m, seconds \a s and
- milliseconds \a ms.
-
- \a h must be in the range 0-23, \a m and \a s must be in the range
- 0-59, and \a ms must be in the range 0-999. Returns TRUE if the set
- time is valid, otherwise FALSE.
-
- \sa isValid()
-*/
-
-bool QTime::setHMS( int h, int m, int s, int ms )
-{
- if ( !isValid(h,m,s,ms) ) {
-#if defined(CHECK_RANGE)
- qWarning( "QTime::setHMS Invalid time %02d:%02d:%02d.%03d", h, m, s,
- ms );
-#endif
- ds = MSECS_PER_DAY; // make this invalid
- return FALSE;
- }
- ds = (h*SECS_PER_HOUR + m*SECS_PER_MIN + s)*1000 + ms;
- return TRUE;
-}
-
-/*!
- Returns a QTime object containing a time \a nsecs seconds later than
- the time of this object (or earlier if \a ms is negative).
-
- Note that the time will wrap if it passes midnight.
-
- Example:
- \code
- QTime n( 14, 0, 0 ); // n == 14:00:00
- QTime t;
- t = n.addSecs( 70 ); // t == 14:01:10
- t = n.addSecs( -70 ); // t == 13:58:50
- t = n.addSecs( 10*60*60 + 5 ); // t == 00:00:05
- t = n.addSecs( -15*60*60 ); // t == 23:00:00
- \endcode
-
- \sa addMSecs(), secsTo(), QDateTime::addSecs()
-*/
-
-QTime QTime::addSecs( int nsecs ) const
-{
- return addMSecs(nsecs*1000);
-}
-
-/*!
- Returns the number of seconds from this time to \a t (which is
- negative if \a t is earlier than this time).
-
- Since QTime measures time within a day and there are 86400 seconds
- in a day, the result is between -86400 and 86400.
-
- \sa addSecs() QDateTime::secsTo()
-*/
-
-int QTime::secsTo( const QTime &t ) const
-{
- return ((int)t.ds - (int)ds)/1000;
-}
-
-/*!
- Returns a QTime object containing a time \a ms milliseconds later than
- the time of this object (or earlier if \a ms is negative).
-
- Note that the time will wrap if it passes midnight. See addSecs()
- for an example.
-
- \sa addSecs(), msecsTo()
-*/
-
-QTime QTime::addMSecs( int ms ) const
-{
- QTime t;
- if ( ms < 0 ) {
- // % not well-defined for -ve, but / is.
- int negdays = (MSECS_PER_DAY-ms) / MSECS_PER_DAY;
- t.ds = ((int)ds + ms + negdays*MSECS_PER_DAY)
- % MSECS_PER_DAY;
- } else {
- t.ds = ((int)ds + ms) % MSECS_PER_DAY;
- }
- return t;
-}
-
-/*!
- Returns the number of milliseconds from this time to \a t (which is
- negative if \a t is earlier than this time).
-
- Since QTime measures time within a day and there are 86400000
- milliseconds in a day, the result is between -86400000 and 86400000.
-
- \sa secsTo()
-*/
-
-int QTime::msecsTo( const QTime &t ) const
-{
- return (int)t.ds - (int)ds;
-}
-
-
-/*!
- \fn bool QTime::operator==( const QTime &t ) const
-
- Returns TRUE if this time is equal to \a t, or FALSE if they are
- different.
-*/
-
-/*!
- \fn bool QTime::operator!=( const QTime &t ) const
-
- Returns TRUE if this time is different from \a t, or FALSE if they
- are equal.
-*/
-
-/*!
- \fn bool QTime::operator<( const QTime &t ) const
-
- Returns TRUE if this time is earlier than \a t, otherwise FALSE.
-*/
-
-/*!
- \fn bool QTime::operator<=( const QTime &t ) const
-
- Returns TRUE if this time is earlier than or equal to \a t,
- otherwise FALSE.
-*/
-
-/*!
- \fn bool QTime::operator>( const QTime &t ) const
-
- Returns TRUE if this time is later than \a t, otherwise FALSE.
-*/
-
-/*!
- \fn bool QTime::operator>=( const QTime &t ) const
-
- Returns TRUE if this time is later than or equal to \a t, otherwise
- FALSE.
-*/
-
-
-
-/*!
- Returns the current time, as reported by the system clock.
-
- Note that the accuracy depends on the accuracy of the underlying
- operating system; not all systems provide 1-millisecond accuracy.
-*/
-
-QTime QTime::currentTime()
-{
- QTime ct;
- currentTime( &ct );
- return ct;
-}
-
-/*!
- \internal
-
- Fetches the current time and returns TRUE if the time is within one
- minute after midnight, otherwise FALSE. The return value is used by
- QDateTime::currentDateTime() to ensure that the date there is correct.
-*/
-
-bool QTime::currentTime( QTime *ct )
-{
- if ( !ct ) {
-#if defined(CHECK_NULL)
- qWarning( "QTime::currentTime(QTime *): Null pointer not allowed" );
-#endif
- return FALSE;
- }
-
-#if defined(_OS_WIN32_)
-
- SYSTEMTIME t;
- GetLocalTime( &t );
- ct->ds = MSECS_PER_HOUR*t.wHour + MSECS_PER_MIN*t.wMinute +
- 1000*t.wSecond + t.wMilliseconds;
- return (t.wHour == 0 && t.wMinute == 0);
-
-#elif defined(_OS_OS2_)
-
- DATETIME t;
- DosGetDateTime( &t );
- ct->ds = MSECS_PER_HOUR*t.hours + MSECS_PER_MIN*t.minutes +
- 1000*t.seconds + 10*t.hundredths;
- return (t.hours == 0 && t.minutes == 0);
-
-#elif defined(_OS_MSDOS_)
-
- _dostime_t t;
- _dos_gettime( &t );
- ct->ds = MSECS_PER_HOUR*t.hour + MSECS_PER_MIN*t.minute +
- t.second*1000 + t.hsecond*10;
- return (t.hour== 0 && t.minute == 0);
-
-#elif defined(_OS_UNIX_) || defined(_OS_MAC_)
-
- struct timeval tv;
- gettimeofday( &tv, 0 );
- time_t ltime = tv.tv_sec;
- tm *t = localtime( &ltime );
- ct->ds = (uint)( MSECS_PER_HOUR*t->tm_hour + MSECS_PER_MIN*t->tm_min +
- 1000*t->tm_sec + tv.tv_usec/1000 );
- return (t->tm_hour== 0 && t->tm_min == 0);
-
-#else
-
- time_t ltime; // no millisecond resolution!!
- ::time( &ltime );
- tm *t = localtime( &ltime );
- ct->ds = MSECS_PER_HOUR*t->tm_hour + MSECS_PER_MIN*t->tm_min +
- 1000*t->tm_sec;
- return (t->tm_hour== 0 && t->tm_min == 0);
-#endif
-}
-
-/*!
- Returns TRUE if the specified time is valid, otherwise FALSE.
-
- The time is valid if \a h is in the range 0-23, \a m and \a s are in
- the range 0-59, and \a ms is in the range 0-999.
-
- Example:
- \code
- QTime::isValid(21, 10, 30); // returns TRUE
- QTime::isValid(22, 5, 62); // returns FALSE
- \endcode
-*/
-
-bool QTime::isValid( int h, int m, int s, int ms )
-{
- return (uint)h < 24 && (uint)m < 60 && (uint)s < 60 && (uint)ms < 1000;
-}
-
-
-/*!
- Sets this time to the current time. This is practical for timing:
-
- \code
- QTime t;
- t.start(); // start clock
- ... // some lengthy task
- qDebug( "%d\n", t.elapsed() ); // prints # msecs elapsed
- \endcode
-
- \sa restart(), elapsed(), currentTime()
-*/
-
-void QTime::start()
-{
- *this = currentTime();
-}
-
-/*!
- Sets this time to the current time, and returns the number of
- milliseconds that have elapsed since the last time start() or
- restart() was called.
-
- This function is guaranteed to be atomic, and is thus very handy for
- repeated measurements: call start() to start the first measurement,
- then restart() for each later measurement.
-
- Note that the counter wraps to zero 24 hours after the last call to
- start() or restart().
-
- \warning If the system's clock setting has been changed since the
- last time start() or restart() was called, the result is undefined.
- This can happen e.g. when daylight saving is turned on or off.
-
- \sa start(), elapsed(), currentTime()
-*/
-
-int QTime::restart()
-{
- QTime t = currentTime();
- int n = msecsTo( t );
- if ( n < 0 ) // passed midnight
- n += 86400*1000;
- *this = t;
- return n;
-}
-
-/*!
- Returns the number of milliseconds that have elapsed since the last
- time start() or restart() was called.
-
- Note that the counter wraps to zero 24 hours after the last call to
- start() or restart.
-
- Note that the accuracy depends on the accuracy of the underlying
- operating system; not all systems provide 1-millisecond accuracy.
-
- \warning If the system's clock setting has been changed since the
- last time start() or restart() was called, the result is undefined.
- This can happen e.g. when daylight saving is turned on or off.
-
- \sa start(), restart()
-*/
-
-int QTime::elapsed()
-{
- int n = msecsTo( currentTime() );
- if ( n < 0 ) // passed midnight
- n += 86400*1000;
- return n;
-}
-
-
-/*****************************************************************************
- QDateTime member functions
- *****************************************************************************/
-
-/*!
- \class QDateTime qdatetime.h
- \brief The QDateTime class provides date and time functions.
-
- \ingroup time
-
- A QDateTime object contains a calendar date and a clock time (a
- "datetime"). It is a combination of the QDate and QTime classes. It
- can read the current datetime from the system clock. It provides
- functions for comparing datetimes and for manipulating a datetime by
- adding a number of seconds or days.
-
- A QDateTime object is typically created either by giving a date and
- time explicitly, or by using the static function currentTime(),
- which makes a QDateTime object which contains the system's clock
- time.
-
- The date() and time() functions provide access to the date and time
- parts of the datetime. The same information is provided in textual
- format by the toString() function.
-
- QDateTime provides a full set of operators to compare two QDateTime
- objects. A datetime is considered smaller than another if it is
- earlier than the other.
-
- The datetime a given number of days or seconds later than a given
- datetime can be found using the addDays() and addSecs()
- functions. Correspondingly, the number of days or seconds between
- two times can be found using the daysTo() or secsTo() functions.
-
- A datetime can also be set using the setTime_t() function, which
- takes a POSIX-standard "number of seconds since 00:00:00 on January
- 1, 1970" value.
-
- The limitations regarding range and resolution mentioned in the
- QDate and QTime documentation apply for QDateTime also.
-
- \sa QDate, QTime
-*/
-
-
-/*!
- \fn QDateTime::QDateTime()
-
- Constructs a null datetime (i.e. null date and null time). A null
- datetime is invalid, since the date is invalid.
-
- \sa isValid()
-*/
-
-
-/*!
- Constructs a datetime with date \a date and null time (00:00:00.000).
-*/
-
-QDateTime::QDateTime( const QDate &date )
- : d(date)
-{
-}
-
-/*!
- Constructs a datetime with date \a date and time \a time.
-*/
-
-QDateTime::QDateTime( const QDate &date, const QTime &time )
- : d(date), t(time)
-{
-}
-
-
-/*!
- \fn bool QDateTime::isNull() const
-
- Returns TRUE if both the date and the time are null. A null date is invalid.
-
- \sa QDate::isNull(), QTime::isNull()
-*/
-
-/*!
- \fn bool QDateTime::isValid() const
-
- Returns TRUE if both the date and the time are valid.
-
- \sa QDate::isValid(), QTime::isValid()
-*/
-
-/*!
- \fn QDate QDateTime::date() const
-
- Returns the date part of this datetime.
-
- \sa setDate(), time()
-*/
-
-/*!
- \fn QTime QDateTime::time() const
-
- Returns the time part of this datetime.
-
- \sa setTime(), date()
-*/
-
-/*!
- \fn void QDateTime::setDate( const QDate &date )
-
- Sets the date part of this datetime.
-
- \sa date(), setTime()
-*/
-
-/*!
- \fn void QDateTime::setTime( const QTime &time )
-
- Sets the time part of this datetime.
-
- \sa time(), setDate()
-*/
-
-
-/*!
- Sets the local date and time given the number of seconds that have passed
- since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC).
- On systems that do not support timezones this function will behave as if
- local time were UTC.
-
- Note that Microsoft Windows supports only a limited range of values for
- \a secsSince1Jan1970UTC.
-*/
-
-void QDateTime::setTime_t( uint secsSince1Jan1970UTC )
-{
- time_t tmp = (time_t) secsSince1Jan1970UTC;
- tm *tM = localtime( &tmp );
- if ( !tM ) {
- tM = gmtime( &tmp );
- if ( !tM ) {
- d.jd = QDate::greg2jul( 1970, 1, 1 );
- t.ds = 0;
- return;
- }
- }
- d.jd = QDate::greg2jul( tM->tm_year + 1900, tM->tm_mon + 1, tM->tm_mday );
- t.ds = MSECS_PER_HOUR*tM->tm_hour + MSECS_PER_MIN*tM->tm_min +
- 1000*tM->tm_sec;
-}
-
-
-/*!
- Sets the UTC date and time given the number of seconds that have passed
- since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC).
-
- Note that Microsoft Windows supports only a limited range of values for
- \a secsSince1Jan1970UTC.
-*/
-
-void QDateTime::setTimeUtc_t( uint secsSince1Jan1970UTC )
-{
- time_t tmp = (time_t) secsSince1Jan1970UTC;
- tm *tM = gmtime( &tmp );
- if ( !tM ) {
- d.jd = QDate::greg2jul( 1970, 1, 1 );
- t.ds = 0;
- return;
- }
- d.jd = QDate::greg2jul( tM->tm_year + 1900, tM->tm_mon + 1, tM->tm_mday );
- t.ds = MSECS_PER_HOUR*tM->tm_hour + MSECS_PER_MIN*tM->tm_min +
- 1000*tM->tm_sec;
-}
-
-
-/*!
- Returns the datetime as a string.
-
- The string format is "Sat May 20 03:40:13 1998".
-
- This function uses QDate::dayName(), QDate::monthName(), and
- QTime::toString() to generate the string.
-
-*/
-
-QCString QDateTime::toString() const
-{
- QCString buf = d.dayName(d.dayOfWeek());
- buf += ' ';
- buf += d.monthName(d.month());
- buf += ' ';
- buf += QCString().setNum(d.day());
- buf += ' ';
- buf += t.toString();
- buf += ' ';
- buf += QCString().setNum(d.year());
- return buf;
-}
-
-/*!
- Returns a QDateTime object containing a datetime \a ndays days later
- than the datetime of this object (or earlier if \a ndays is
- negative).
-
- \sa daysTo(), addSecs()
-*/
-
-QDateTime QDateTime::addDays( int ndays ) const
-{
- return QDateTime( d.addDays(ndays), t );
-}
-
-/*!
- Returns a QDateTime object containing a datetime \a nsecs seconds
- later than the datetime of this object (or earlier if \a nsecs is
- negative).
-
- \sa secsTo(), addDays()
-*/
-
-QDateTime QDateTime::addSecs( int nsecs ) const
-{
- uint dd = d.jd;
- int tt = t.ds;
- int sign = 1;
- if ( nsecs < 0 ) {
- nsecs = -nsecs;
- sign = -1;
- }
- if ( nsecs >= (int)SECS_PER_DAY ) {
- dd += sign*(nsecs/SECS_PER_DAY);
- nsecs %= SECS_PER_DAY;
- }
- tt += sign*nsecs*1000;
- if ( tt < 0 ) {
- tt = MSECS_PER_DAY - tt - 1;
- dd -= tt / MSECS_PER_DAY;
- tt = tt % MSECS_PER_DAY;
- tt = MSECS_PER_DAY - tt - 1;
- } else if ( tt >= (int)MSECS_PER_DAY ) {
- dd += ( tt / MSECS_PER_DAY );
- tt = tt % MSECS_PER_DAY;
- }
- QDateTime ret;
- ret.t.ds = tt;
- ret.d.jd = dd;
- return ret;
-}
-
-/*!
- Returns the number of days from this datetime to \a dt (which is
- negative if \a dt is earlier than this datetime).
-
- \sa addDays(), secsTo()
-*/
-
-int QDateTime::daysTo( const QDateTime &dt ) const
-{
- return d.daysTo( dt.d );
-}
-
-/*!
- Returns the number of seconds from this datetime to \a dt (which is
- negative if \a dt is earlier than this datetime).
-
- Example:
- \code
- QDateTime dt = QDateTime::currentDateTime();
- QDateTime x( QDate(dt.year(),12,24), QTime(17,00) );
- qDebug( "There are %d seconds to Christmas", dt.secsTo(x) );
- \endcode
-
- \sa addSecs(), daysTo(), QTime::secsTo()
-*/
-
-int QDateTime::secsTo( const QDateTime &dt ) const
-{
- return t.secsTo(dt.t) + d.daysTo(dt.d)*SECS_PER_DAY;
-}
-
-
-/*!
- Returns TRUE if this datetime is equal to \a dt, or FALSE if
- they are different.
- \sa operator!=()
-*/
-
-bool QDateTime::operator==( const QDateTime &dt ) const
-{
- return t == dt.t && d == dt.d;
-}
-
-/*!
- Returns TRUE if this datetime is different from \a dt, or FALSE if
- they are equal.
- \sa operator==()
-*/
-
-bool QDateTime::operator!=( const QDateTime &dt ) const
-{
- return t != dt.t || d != dt.d;
-}
-
-/*!
- Returns TRUE if this datetime is earlier than \a dt, otherwise FALSE.
-*/
-
-bool QDateTime::operator<( const QDateTime &dt ) const
-{
- if ( d < dt.d )
- return TRUE;
- return d == dt.d ? t < dt.t : FALSE;
-}
-
-/*!
- Returns TRUE if this datetime is earlier than or equal to \a dt,
- otherwise FALSE.
-*/
-
-bool QDateTime::operator<=( const QDateTime &dt ) const
-{
- if ( d < dt.d )
- return TRUE;
- return d == dt.d ? t <= dt.t : FALSE;
-}
-
-/*!
- Returns TRUE if this datetime is later than \a dt, otherwise FALSE.
-*/
-
-bool QDateTime::operator>( const QDateTime &dt ) const
-{
- if ( d > dt.d )
- return TRUE;
- return d == dt.d ? t > dt.t : FALSE;
-}
-
-/*!
- Returns TRUE if this datetime is later than or equal to \a dt,
- otherwise FALSE.
-*/
-
-bool QDateTime::operator>=( const QDateTime &dt ) const
-{
- if ( d > dt.d )
- return TRUE;
- return d == dt.d ? t >= dt.t : FALSE;
-}
-
-/*!
- Returns the current datetime, as reported by the system clock.
-
- \sa QDate::currentDate(), QTime::currentTime()
-*/
-
-QDateTime QDateTime::currentDateTime()
-{
- QDate cd = QDate::currentDate();
- QTime ct;
- if ( QTime::currentTime(&ct) ) // too close to midnight?
- cd = QDate::currentDate(); // YES! time for some midnight
- // voodoo, fetch date again
- return QDateTime( cd, ct );
-}
-
-
-/*****************************************************************************
- Date/time stream functions
- *****************************************************************************/
-
-#ifndef QT_NO_DATASTREAM
-/*!
- \relates QDate
- Writes the date to the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator<<( QDataStream &s, const QDate &d )
-{
- return s << (Q_UINT32)(d.jd);
-}
-
-/*!
- \relates QDate
- Reads a date from the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator>>( QDataStream &s, QDate &d )
-{
- Q_UINT32 jd;
- s >> jd;
- d.jd = jd;
- return s;
-}
-
-/*!
- \relates QTime
- Writes a time to the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator<<( QDataStream &s, const QTime &t )
-{
- return s << (Q_UINT32)(t.ds);
-}
-
-/*!
- \relates QTime
- Reads a time from the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator>>( QDataStream &s, QTime &t )
-{
- Q_UINT32 ds;
- s >> ds;
- t.ds = ds;
- return s;
-}
-
-/*!
- \relates QDateTime
- Writes a datetime to the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator<<( QDataStream &s, const QDateTime &dt )
-{
- return s << dt.d << dt.t;
-}
-
-/*!
- \relates QDateTime
- Reads a datetime from the stream.
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-QDataStream &operator>>( QDataStream &s, QDateTime &dt )
-{
- s >> dt.d >> dt.t;
- return s;
-}
-#endif //QT_NO_DATASTREAM
diff --git a/qtools/qdatetime.h b/qtools/qdatetime.h
deleted file mode 100644
index 63007f3..0000000
--- a/qtools/qdatetime.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/****************************************************************************
-**
-**
-** Definition of date and time classes
-**
-** Created : 940124
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the tools module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
-** licenses may use this file in accordance with the Qt Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef QDATETIME_H
-#define QDATETIME_H
-
-#ifndef QT_H
-#include "qcstring.h"
-#endif // QT_H
-
-
-/*****************************************************************************
- QDate class
- *****************************************************************************/
-
-class Q_EXPORT QDate
-{
-public:
- QDate() { jd=0; } // set null date
- QDate( int y, int m, int d ); // set date
- virtual ~QDate() {}
-
- bool isNull() const { return jd == 0; }
- bool isValid() const; // valid date
-
- int year() const; // 1752..
- int month() const; // 1..12
- int day() const; // 1..31
- int dayOfWeek() const; // 1..7 (monday==1)
- int dayOfYear() const; // 1..365
- int daysInMonth() const; // 28..31
- int daysInYear() const; // 365 or 366
-
- virtual QCString monthName( int month ) const;
- virtual QCString dayName( int weekday ) const;
-
- QCString toString() const;
-
- bool setYMD( int y, int m, int d );
-
- QDate addDays( int days ) const;
- int daysTo( const QDate & ) const;
-
- bool operator==( const QDate &d ) const { return jd == d.jd; }
- bool operator!=( const QDate &d ) const { return jd != d.jd; }
- bool operator<( const QDate &d ) const { return jd < d.jd; }
- bool operator<=( const QDate &d ) const { return jd <= d.jd; }
- bool operator>( const QDate &d ) const { return jd > d.jd; }
- bool operator>=( const QDate &d ) const { return jd >= d.jd; }
-
- static QDate currentDate();
- static bool isValid( int y, int m, int d );
- static bool leapYear( int year );
-
-protected:
- static uint greg2jul( int y, int m, int d );
- static void jul2greg( uint jd, int &y, int &m, int &d );
-private:
- static const char * const monthNames[];
- static const char * const weekdayNames[];
- uint jd;
- friend class QDateTime;
-#ifndef QT_NO_DATASTREAM
- friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QDate & );
- friend Q_EXPORT QDataStream &operator>>( QDataStream &, QDate & );
-#endif
-};
-
-
-/*****************************************************************************
- QTime class
- *****************************************************************************/
-
-class Q_EXPORT QTime
-{
-public:
- QTime() { ds=0; } // set null time
- QTime( int h, int m, int s=0, int ms=0 ); // set time
-
- bool isNull() const { return ds == 0; }
- bool isValid() const; // valid time
-
- int hour() const; // 0..23
- int minute() const; // 0..59
- int second() const; // 0..59
- int msec() const; // 0..999
-
- QCString toString() const;
-
- bool setHMS( int h, int m, int s, int ms=0 );
-
- QTime addSecs( int secs ) const;
- int secsTo( const QTime & ) const;
- QTime addMSecs( int ms ) const;
- int msecsTo( const QTime & ) const;
-
- bool operator==( const QTime &d ) const { return ds == d.ds; }
- bool operator!=( const QTime &d ) const { return ds != d.ds; }
- bool operator<( const QTime &d ) const { return ds < d.ds; }
- bool operator<=( const QTime &d ) const { return ds <= d.ds; }
- bool operator>( const QTime &d ) const { return ds > d.ds; }
- bool operator>=( const QTime &d ) const { return ds >= d.ds; }
-
- static QTime currentTime();
- static bool isValid( int h, int m, int s, int ms=0 );
-
- void start();
- int restart();
- int elapsed();
-
-private:
- static bool currentTime( QTime * );
-
- uint ds;
- friend class QDateTime;
-#ifndef QT_NO_DATASTREAM
- friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QTime & );
- friend Q_EXPORT QDataStream &operator>>( QDataStream &, QTime & );
-#endif
-};
-
-
-/*****************************************************************************
- QDateTime class
- *****************************************************************************/
-
-class Q_EXPORT QDateTime
-{
-public:
- QDateTime() {} // set null date and null time
- QDateTime( const QDate & );
- QDateTime( const QDate &, const QTime & );
-
- bool isNull() const { return d.isNull() && t.isNull(); }
- bool isValid() const { return d.isValid() && t.isValid(); }
-
- QDate date() const { return d; }
- QTime time() const { return t; }
- void setDate( const QDate &date ) { d=date; }
- void setTime( const QTime &time ) { t=time; }
- void setTime_t( uint secsSince1Jan1970UTC );
- void setTimeUtc_t( uint secsSince1Jan1970UTC );
-
- QCString toString() const;
-
- QDateTime addDays( int days ) const;
- QDateTime addSecs( int secs ) const;
- int daysTo( const QDateTime & ) const;
- int secsTo( const QDateTime & ) const;
-
- bool operator==( const QDateTime &dt ) const;
- bool operator!=( const QDateTime &dt ) const;
- bool operator<( const QDateTime &dt ) const;
- bool operator<=( const QDateTime &dt ) const;
- bool operator>( const QDateTime &dt ) const;
- bool operator>=( const QDateTime &dt ) const;
-
- static QDateTime currentDateTime();
-
-private:
- QDate d;
- QTime t;
-#ifndef QT_NO_DATASTREAM
- friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QDateTime &);
- friend Q_EXPORT QDataStream &operator>>( QDataStream &, QDateTime & );
-#endif
-};
-
-
-/*****************************************************************************
- Date and time stream functions
- *****************************************************************************/
-
-#ifndef QT_NO_DATASTREAM
-Q_EXPORT QDataStream &operator<<( QDataStream &, const QDate & );
-Q_EXPORT QDataStream &operator>>( QDataStream &, QDate & );
-Q_EXPORT QDataStream &operator<<( QDataStream &, const QTime & );
-Q_EXPORT QDataStream &operator>>( QDataStream &, QTime & );
-Q_EXPORT QDataStream &operator<<( QDataStream &, const QDateTime & );
-Q_EXPORT QDataStream &operator>>( QDataStream &, QDateTime & );
-#endif // QT_NO_DATASTREAM
-
-#endif // QDATETIME_H
diff --git a/qtools/qdir.cpp b/qtools/qdir.cpp
index 782a9c6..fc84cbc 100644
--- a/qtools/qdir.cpp
+++ b/qtools/qdir.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Implementation of QDir class
**
@@ -575,6 +575,7 @@ void QDir::setFilter( int filterSpec )
// ### Unsorted+DirsFirst ? Unsorted+Reversed?
+#if 0
/*!
Sets the sorting order used by entryList() and entryInfoList().
@@ -604,6 +605,7 @@ void QDir::setSorting( int sortSpec )
sortS = (SortSpec) sortSpec;
dirty = TRUE;
}
+#endif
/*!
\fn bool QDir::matchAllDirs() const
@@ -1157,6 +1159,7 @@ int qt_cmp_si( const void *n1, const void *n2 )
int r = 0;
int sortBy = qt_cmp_si_sortSpec & QDir::SortByMask;
+#if 0
switch ( sortBy ) {
case QDir::Time:
r = f1->item->lastModified().secsTo(f2->item->lastModified());
@@ -1167,6 +1170,7 @@ int qt_cmp_si( const void *n1, const void *n2 )
default:
;
}
+#endif
if ( r == 0 && sortBy != QDir::Unsorted ) {
// Still not sorted - sort by name
diff --git a/qtools/qdir.h b/qtools/qdir.h
index cec3897..74b02b4 100644
--- a/qtools/qdir.h
+++ b/qtools/qdir.h
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Definition of QDir class
**
@@ -72,7 +72,7 @@ public:
DefaultFilter = -1 };
enum SortSpec { Name = 0x00,
- Time = 0x01,
+ // Time = 0x01,
Size = 0x02,
Unsorted = 0x03,
SortByMask = 0x03,
@@ -112,15 +112,15 @@ public:
virtual void setNameFilter( const QString &nameFilter );
FilterSpec filter() const;
virtual void setFilter( int filterSpec );
- SortSpec sorting() const;
- virtual void setSorting( int sortSpec );
+ //SortSpec sorting() const;
+ //virtual void setSorting( int sortSpec );
bool matchAllDirs() const;
virtual void setMatchAllDirs( bool );
uint count() const;
QString operator[]( int ) const;
-
+
virtual QStrList encodedEntryList( int filterSpec = DefaultFilter,
int sortSpec = DefaultSort ) const;
virtual QStrList encodedEntryList( const QString &nameFilter,
@@ -210,10 +210,12 @@ inline QDir::FilterSpec QDir::filter() const
return filtS;
}
+#if 0
inline QDir::SortSpec QDir::sorting() const
{
return sortS;
}
+#endif
inline bool QDir::matchAllDirs() const
{
diff --git a/qtools/qdir_unix.cpp b/qtools/qdir_unix.cpp
index 2257265..520af79 100644
--- a/qtools/qdir_unix.cpp
+++ b/qtools/qdir_unix.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Implementation of QDirclass
**
@@ -97,7 +97,7 @@ QString QDir::canonicalPath() const
bool QDir::mkdir( const QString &dirName, bool acceptAbsPath ) const
{
- return MKDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)), 0777 )
+ return MKDIR( QFile::encodeName(filePath(dirName,acceptAbsPath)), 0777 )
== 0;
}
diff --git a/qtools/qfileinfo.cpp b/qtools/qfileinfo.cpp
index 5053b76..f96f441 100644
--- a/qtools/qfileinfo.cpp
+++ b/qtools/qfileinfo.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Implementation of QFileInfo class
**
@@ -39,7 +39,6 @@
#include "qfileinfo.h"
#include "qfiledefs_p.h"
-#include "qdatetime.h"
#include "qdir.h"
extern bool qt_file_access( const QString& fn, int t );
diff --git a/qtools/qfileinfo.h b/qtools/qfileinfo.h
index 76ef8c2..74d782c 100644
--- a/qtools/qfileinfo.h
+++ b/qtools/qfileinfo.h
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Definition of QFileInfo class
**
@@ -40,7 +40,6 @@
#ifndef QT_H
#include "qfile.h"
-#include "qdatetime.h"
#endif // QT_H
@@ -115,14 +114,11 @@ public:
uint size() const;
- QDateTime lastModified() const;
- QDateTime lastRead() const;
-
private:
void doStat() const;
static void slashify( QString & );
static void makeAbs( QString & );
-
+
QString fn;
QFileInfoCache *fic;
bool cache;
diff --git a/qtools/qfileinfo_unix.cpp b/qtools/qfileinfo_unix.cpp
index f2b438c..e900089 100644
--- a/qtools/qfileinfo_unix.cpp
+++ b/qtools/qfileinfo_unix.cpp
@@ -1,5 +1,5 @@
/****************************************************************************
-**
+**
**
** Implementation of QFileInfo class
**
@@ -46,7 +46,6 @@
#include "qfileinfo.h"
#include "qfiledefs_p.h"
-#include "qdatetime.h"
#include "qdir.h"
#if defined(_OS_SUN_)
@@ -285,42 +284,6 @@ uint QFileInfo::size() const
return 0;
}
-
-/*!
- Returns the date and time when the file was last modified.
- \sa lastRead()
-*/
-
-QDateTime QFileInfo::lastModified() const
-{
- QDateTime dt;
- if ( !fic || !cache )
- doStat();
- if ( fic )
- dt.setTime_t( (uint)fic->st.st_mtime );
- return dt;
-}
-
-/*!
- Returns the date and time when the file was last read (accessed).
-
- On systems that do not support last read times, the modification time is
- returned.
-
- \sa lastModified()
-*/
-
-QDateTime QFileInfo::lastRead() const
-{
- QDateTime dt;
- if ( !fic || !cache )
- doStat();
- if ( fic )
- dt.setTime_t( (uint)fic->st.st_atime );
- return dt;
-}
-
-
void QFileInfo::doStat() const
{
QFileInfo *that = ((QFileInfo*)this); // mutable function
diff --git a/qtools/qfileinfo_win32.cpp b/qtools/qfileinfo_win32.cpp
index 1061fae..bcbe136 100644
--- a/qtools/qfileinfo_win32.cpp
+++ b/qtools/qfileinfo_win32.cpp
@@ -1,19 +1,19 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2001 by Dimitri van 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.
*
- * Based on qfileinfo_unix.cpp
+ * Based on qfileinfo_unix.cpp
*
* Copyright (C) 1992-2000 Trolltech AS.
*/
@@ -22,12 +22,11 @@
#include "qfileinfo.h"
#include "qfiledefs_p.h"
-#include "qdatetime.h"
#include "qdir.h"
static void reslashify( QString& n )
{
- for ( int i=0; i<(int)n.length(); i++ )
+ for ( int i=0; i<(int)n.length(); i++ )
{
if ( n[i] == '/' )
n[i] = '\\';
@@ -36,7 +35,7 @@ static void reslashify( QString& n )
void QFileInfo::slashify( QString& n )
{
- for ( int i=0; i<(int)n.length(); i++ )
+ for ( int i=0; i<(int)n.length(); i++ )
{
if ( n[i] == '\\' )
n[i] = '/';
@@ -110,7 +109,7 @@ static const uint nobodyID = (uint) -2;
/*!
Returns the owner of the file.
- On systems where files do not have owners this function returns
+ On systems where files do not have owners this function returns
a null string.
Note that this function can be time-consuming under UNIX. (in the order
@@ -211,42 +210,6 @@ uint QFileInfo::size() const
return 0;
}
-
-/*!
- Returns the date and time when the file was last modified.
- \sa lastRead()
-*/
-
-QDateTime QFileInfo::lastModified() const
-{
- QDateTime dt;
- if ( !fic || !cache )
- doStat();
- if ( fic )
- dt.setTime_t( fic->st.st_mtime );
- return dt;
-}
-
-/*!
- Returns the date and time when the file was last read (accessed).
-
- On systems that do not support last read times, the modification time is
- returned.
-
- \sa lastModified()
-*/
-
-QDateTime QFileInfo::lastRead() const
-{
- QDateTime dt;
- if ( !fic || !cache )
- doStat();
- if ( fic )
- dt.setTime_t( fic->st.st_atime );
- return dt;
-}
-
-
void QFileInfo::doStat() const
{
QFileInfo *that = ((QFileInfo*)this); // mutable function
diff --git a/qtools/qmap.cpp b/qtools/qmap.cpp
deleted file mode 100644
index bb69bf0..0000000
--- a/qtools/qmap.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-/****************************************************************************
-**
-**
-** Implementation of QMap
-**
-** Created : 990406
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the tools module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
-** licenses may use this file in accordance with the Qt Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#include "qmap_p.h"
-
-typedef QMapNodeBase* NodePtr;
-typedef QMapNodeBase Node;
-
-
-void QMapPrivateBase::rotateLeft( NodePtr x, NodePtr& root)
-{
- NodePtr y = x->right;
- x->right = y->left;
- if (y->left !=0)
- y->left->parent = x;
- y->parent = x->parent;
- if (x == root)
- root = y;
- else if (x == x->parent->left)
- x->parent->left = y;
- else
- x->parent->right = y;
- y->left = x;
- x->parent = y;
-}
-
-
-void QMapPrivateBase::rotateRight( NodePtr x, NodePtr& root )
-{
- NodePtr y = x->left;
- x->left = y->right;
- if (y->right != 0)
- y->right->parent = x;
- y->parent = x->parent;
- if (x == root)
- root = y;
- else if (x == x->parent->right)
- x->parent->right = y;
- else
- x->parent->left = y;
- y->right = x;
- x->parent = y;
-}
-
-
-void QMapPrivateBase::rebalance( NodePtr x, NodePtr& root)
-{
- x->color = Node::Red;
- while ( x != root && x->parent->color == Node::Red ) {
- if ( x->parent == x->parent->parent->left ) {
- NodePtr y = x->parent->parent->right;
- if (y && y->color == Node::Red) {
- x->parent->color = Node::Black;
- y->color = Node::Black;
- x->parent->parent->color = Node::Red;
- x = x->parent->parent;
- } else {
- if (x == x->parent->right) {
- x = x->parent;
- rotateLeft( x, root );
- }
- x->parent->color = Node::Black;
- x->parent->parent->color = Node::Red;
- rotateRight (x->parent->parent, root );
- }
- } else {
- NodePtr y = x->parent->parent->left;
- if ( y && y->color == Node::Red ) {
- x->parent->color = Node::Black;
- y->color = Node::Black;
- x->parent->parent->color = Node::Red;
- x = x->parent->parent;
- } else {
- if (x == x->parent->left) {
- x = x->parent;
- rotateRight( x, root );
- }
- x->parent->color = Node::Black;
- x->parent->parent->color = Node::Red;
- rotateLeft( x->parent->parent, root );
- }
- }
- }
- root->color = Node::Black;
-}
-
-
-NodePtr QMapPrivateBase::removeAndRebalance( NodePtr z, NodePtr& root,
- NodePtr& leftmost,
- NodePtr& rightmost )
-{
- NodePtr y = z;
- NodePtr x;
- NodePtr x_parent;
- if (y->left == 0) {
- x = y->right;
- } else {
- if (y->right == 0)
- x = y->left;
- else
- {
- y = y->right;
- while (y->left != 0)
- y = y->left;
- x = y->right;
- }
- }
- if (y != z) {
- z->left->parent = y;
- y->left = z->left;
- if (y != z->right) {
- x_parent = y->parent;
- if (x)
- x->parent = y->parent;
- y->parent->left = x;
- y->right = z->right;
- z->right->parent = y;
- } else {
- x_parent = y;
- }
- if (root == z)
- root = y;
- else if (z->parent->left == z)
- z->parent->left = y;
- else
- z->parent->right = y;
- y->parent = z->parent;
- // Swap the colors
- Node::Color c = y->color;
- y->color = z->color;
- z->color = c;
- y = z;
- } else {
- x_parent = y->parent;
- if (x)
- x->parent = y->parent;
- if (root == z)
- root = x;
- else if (z->parent->left == z)
- z->parent->left = x;
- else
- z->parent->right = x;
- if ( leftmost == z ) {
- if (z->right == 0)
- leftmost = z->parent;
- else
- leftmost = x->minimum();
- }
- if (rightmost == z) {
- if (z->left == 0)
- rightmost = z->parent;
- else
- rightmost = x->maximum();
- }
- }
- if (y->color != Node::Red) {
- while (x != root && (x == 0 || x->color == Node::Black)) {
- if (x == x_parent->left) {
- NodePtr w = x_parent->right;
- if (w->color == Node::Red) {
- w->color = Node::Black;
- x_parent->color = Node::Red;
- rotateLeft(x_parent, root);
- w = x_parent->right;
- }
- if ((w->left == 0 || w->left->color == Node::Black) &&
- (w->right == 0 || w->right->color == Node::Black)) {
- w->color = Node::Red;
- x = x_parent;
- x_parent = x_parent->parent;
- } else {
- if (w->right == 0 || w->right->color == Node::Black) {
- if (w->left)
- w->left->color = Node::Black;
- w->color = Node::Red;
- rotateRight(w, root);
- w = x_parent->right;
- }
- w->color = x_parent->color;
- x_parent->color = Node::Black;
- if (w->right)
- w->right->color = Node::Black;
- rotateLeft(x_parent, root);
- break;
- }
- } else {
- NodePtr w = x_parent->left;
- if (w->color == Node::Red) {
- w->color = Node::Black;
- x_parent->color = Node::Red;
- rotateRight(x_parent, root);
- w = x_parent->left;
- }
- if ((w->right == 0 || w->right->color == Node::Black) &&
- (w->left == 0 || w->left->color == Node::Black)) {
- w->color = Node::Red;
- x = x_parent;
- x_parent = x_parent->parent;
- } else {
- if (w->left == 0 || w->left->color == Node::Black) {
- if (w->right)
- w->right->color = Node::Black;
- w->color = Node::Red;
- rotateLeft(w, root);
- w = x_parent->left;
- }
- w->color = x_parent->color;
- x_parent->color = Node::Black;
- if (w->left)
- w->left->color = Node::Black;
- rotateRight(x_parent, root);
- break;
- }
- }
- }
- if (x)
- x->color = Node::Black;
- }
- return y;
-}
diff --git a/qtools/qmap_p.h b/qtools/qmap_p.h
deleted file mode 100644
index 0031e0d..0000000
--- a/qtools/qmap_p.h
+++ /dev/null
@@ -1,607 +0,0 @@
-/****************************************************************************
-**
-**
-** Definition of QMap class
-**
-** Created : 990406
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the tools module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
-** licenses may use this file in accordance with the Qt Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef QMAP_H
-#define QMAP_H
-
-#ifndef QT_H
-#include "qshared.h"
-#include "qdatastream.h"
-#endif // QT_H
-
-
-struct QMapNodeBase
-{
- enum Color { Red, Black };
-
- QMapNodeBase* left;
- QMapNodeBase* right;
- QMapNodeBase* parent;
-
- Color color;
-
- QMapNodeBase* minimum() {
- QMapNodeBase* x = this;
- while ( x->left )
- x = x->left;
- return x;
- }
-
- QMapNodeBase* maximum() {
- QMapNodeBase* x = this;
- while ( x->right )
- x = x->right;
- return x;
- }
-};
-
-
-template <class K, class T>
-struct QMapNode : public QMapNodeBase
-{
- QMapNode( const K& _key, const T& _data ) { data = _data; key = _key; }
- QMapNode( const K& _key ) { key = _key; }
- QMapNode( const QMapNode<K,T>& _n ) { key = _n.key; data = _n.data; }
- QMapNode() { }
- T data;
- K key;
-};
-
-
-template<class K, class T>
-class Q_EXPORT QMapIterator
-{
- public:
- /**
- * Typedefs
- */
- typedef QMapNode< K, T >* NodePtr;
-
- /**
- * Variables
- */
- QMapNode<K,T>* node;
-
- /**
- * Functions
- */
- QMapIterator() : node( 0 ) {}
- QMapIterator( QMapNode<K,T>* p ) : node( p ) {}
- QMapIterator( const QMapIterator<K,T>& it ) : node( it.node ) {}
- QMapIterator &operator=(const QMapIterator &it) = default;
-
- bool operator==( const QMapIterator<K,T>& it ) const { return node == it.node; }
- bool operator!=( const QMapIterator<K,T>& it ) const { return node != it.node; }
- T& operator*() { return node->data; }
- const T& operator*() const { return node->data; }
-
- // Cannot have this - some compilers are too stupid
- //T* operator->() const { return &(node->data); }
-
- const K& key() const { return node->key; }
- T& data() { return node->data; }
- const T& data() const { return node->data; }
-
-private:
- int inc() {
- QMapNodeBase* tmp = node;
- if ( tmp->right ) {
- tmp = tmp->right;
- while ( tmp->left )
- tmp = tmp->left;
- } else {
- QMapNodeBase* y = tmp->parent;
- while (tmp == y->right) {
- tmp = y;
- y = y->parent;
- }
- if (tmp->right != y)
- tmp = y;
- }
- node = (NodePtr)tmp;
- return 0;
- }
-
- int dec() {
- QMapNodeBase* tmp = node;
- if (tmp->color == QMapNodeBase::Red &&
- tmp->parent->parent == tmp ) {
- tmp = tmp->right;
- } else if (tmp->left != 0) {
- QMapNodeBase* y = tmp->left;
- while ( y->right )
- y = y->right;
- tmp = y;
- } else {
- QMapNodeBase* y = tmp->parent;
- while (tmp == y->left) {
- tmp = y;
- y = y->parent;
- }
- tmp = y;
- }
- node = (NodePtr)tmp;
- return 0;
- }
-
-public:
- QMapIterator<K,T>& operator++() {
- inc();
- return *this;
- }
-
- QMapIterator<K,T> operator++(int) {
- QMapIterator<K,T> tmp = *this;
- inc();
- return tmp;
- }
-
- QMapIterator<K,T>& operator--() {
- dec();
- return *this;
- }
-
- QMapIterator<K,T> operator--(int) {
- QMapIterator<K,T> tmp = *this;
- dec();
- return tmp;
- }
-};
-
-template<class K, class T>
-class Q_EXPORT QMapConstIterator
-{
- public:
- /**
- * Typedefs
- */
- typedef QMapNode< K, T >* NodePtr;
-
- /**
- * Variables
- */
- QMapNode<K,T>* node;
-
- /**
- * Functions
- */
- QMapConstIterator() : node( 0 ) {}
- QMapConstIterator( QMapNode<K,T>* p ) : node( p ) {}
- QMapConstIterator( const QMapConstIterator<K,T>& it ) : node( it.node ) {}
- QMapConstIterator( const QMapIterator<K,T>& it ) : node( it.node ) {}
-
- bool operator==( const QMapConstIterator<K,T>& it ) const { return node == it.node; }
- bool operator!=( const QMapConstIterator<K,T>& it ) const { return node != it.node; }
- const T& operator*() const { return node->data; }
-
- // Cannot have this - some compilers are too stupid
- //const T* operator->() const { return &(node->data); }
-
- const K& key() const { return node->key; }
- const T& data() const { return node->data; }
-
-private:
- int inc() {
- QMapNodeBase* tmp = node;
- if ( tmp->right ) {
- tmp = tmp->right;
- while ( tmp->left )
- tmp = tmp->left;
- } else {
- QMapNodeBase* y = tmp->parent;
- while (tmp == y->right) {
- tmp = y;
- y = y->parent;
- }
- if (tmp->right != y)
- tmp = y;
- }
- node = (NodePtr)tmp;
- return 0;
- }
-
- int dec() {
- QMapNodeBase* tmp = node;
- if (tmp->color == QMapNodeBase::Red &&
- tmp->parent->parent == tmp ) {
- tmp = tmp->right;
- } else if (tmp->left != 0) {
- QMapNodeBase* y = tmp->left;
- while ( y->right )
- y = y->right;
- tmp = y;
- } else {
- QMapNodeBase* y = tmp->parent;
- while (tmp == y->left) {
- tmp = y;
- y = y->parent;
- }
- tmp = y;
- }
- node = (NodePtr)tmp;
- return 0;
- }
-
-public:
- QMapConstIterator<K,T>& operator++() {
- inc();
- return *this;
- }
-
- QMapConstIterator<K,T> operator++(int) {
- QMapConstIterator<K,T> tmp = *this;
- inc();
- return tmp;
- }
-
- QMapConstIterator<K,T>& operator--() {
- dec();
- return *this;
- }
-
- QMapConstIterator<K,T> operator--(int) {
- QMapConstIterator<K,T> tmp = *this;
- dec();
- return tmp;
- }
-};
-
-
-class Q_EXPORT QMapPrivateBase : public QShared
-{
-public:
- QMapPrivateBase() {
- node_count = 0;
- }
- QMapPrivateBase( const QMapPrivateBase* _map) {
- node_count = _map->node_count;
- }
-
- /**
- * Implementations of basic tree algorithms
- */
- void rotateLeft( QMapNodeBase* x, QMapNodeBase*& root);
- void rotateRight( QMapNodeBase* x, QMapNodeBase*& root );
- void rebalance( QMapNodeBase* x, QMapNodeBase*& root );
- QMapNodeBase* removeAndRebalance( QMapNodeBase* z, QMapNodeBase*& root,
- QMapNodeBase*& leftmost,
- QMapNodeBase*& rightmost );
-
- /**
- * Variables
- */
- int node_count;
-};
-
-
-template <class Key, class T>
-class QMapPrivate : public QMapPrivateBase
-{
-public:
- /**
- * Typedefs
- */
- typedef QMapIterator< Key, T > Iterator;
- typedef QMapConstIterator< Key, T > ConstIterator;
- typedef QMapNode< Key, T > Node;
- typedef QMapNode< Key, T >* NodePtr;
-
- /**
- * Functions
- */
- QMapPrivate() {
- header = new Node;
- header->color = QMapNodeBase::Red; // Mark the header
- header->parent = 0;
- header->left = header->right = header;
- }
- QMapPrivate( const QMapPrivate< Key, T >* _map ) : QMapPrivateBase( _map ) {
- header = new Node;
- header->color = QMapNodeBase::Red; // Mark the header
- if ( _map->header->parent == 0 ) {
- header->parent = 0;
- header->left = header->right = header;
- } else {
- header->parent = copy( (NodePtr)(_map->header->parent) );
- header->parent->parent = header;
- header->left = header->parent->minimum();
- header->right = header->parent->maximum();
- }
- }
- ~QMapPrivate() { clear(); delete header; }
-
- NodePtr copy( NodePtr p ) {
- if ( !p )
- return 0;
- NodePtr n = new Node( *p );
- n->color = p->color;
- if ( p->left ) {
- n->left = copy( (NodePtr)(p->left) );
- n->left->parent = n;
- } else {
- n->left = 0;
- }
- if ( p->right ) {
- n->right = copy( (NodePtr)(p->right) );
- n->right->parent = n;
- } else {
- n->right = 0;
- }
- return n;
- }
-
- void clear() {
- clear( (NodePtr)(header->parent) );
- header->color = QMapNodeBase::Red;
- header->parent = 0;
- header->left = header->right = header;
- node_count = 0;
- }
-
- void clear( NodePtr p ) {
- while ( p != 0 ) {
- clear( (NodePtr)p->right );
- NodePtr y = (NodePtr)p->left;
- delete p;
- p = y;
- }
- }
-
- Iterator begin() { return Iterator( (NodePtr)(header->left ) ); }
- Iterator end() { return Iterator( header ); }
- ConstIterator begin() const { return ConstIterator( (NodePtr)(header->left ) ); }
- ConstIterator end() const { return ConstIterator( header ); }
-
- ConstIterator find(const Key& k) const {
- QMapNodeBase* y = header; // Last node
- QMapNodeBase* x = header->parent; // Root node.
-
- while ( x != 0 ) {
- // If as k <= key(x) go left
- if ( !( key(x) < k ) ) {
- y = x;
- x = x->left;
- } else {
- x = x->right;
- }
- }
-
- // Was k bigger/smaller then the biggest/smallest
- // element of the tree ? Return end()
- if ( y == header || k < key(y) )
- return ConstIterator( header );
- return ConstIterator( (NodePtr)y );
- }
-
- void remove( Iterator it ) {
- NodePtr del = (NodePtr) removeAndRebalance( it.node, header->parent, header->left, header->right );
- delete del;
- --node_count;
- }
-
-#ifdef QT_QMAP_DEBUG
- void inorder( QMapNodeBase* x = 0, int level = 0 ){
- if ( !x )
- x = header->parent;
- if ( x->left )
- inorder( x->left, level + 1 );
- //cout << level << " Key=" << key(x) << " Value=" << ((NodePtr)x)->data << endl;
- if ( x->right )
- inorder( x->right, level + 1 );
- }
-#endif
-
- Iterator insertMulti(const Key& v){
- QMapNodeBase* y = header;
- QMapNodeBase* x = header->parent;
- while (x != 0){
- y = x;
- x = ( v < key(x) ) ? x->left : x->right;
- }
- return insert(x, y, v);
- }
-
- Iterator insertSingle( const Key& k ) {
- // Search correct position in the tree
- QMapNodeBase* y = header;
- QMapNodeBase* x = header->parent;
- bool result = TRUE;
- while ( x != 0 ) {
- result = ( k < key(x) );
- y = x;
- x = result ? x->left : x->right;
- }
- // Get iterator on the last not empty one
- Iterator j( (NodePtr)y );
- if ( result ) {
- // Smaller then the leftmost one ?
- if ( j == begin() ) {
- return insert(x, y, k );
- } else {
- // Perhaps daddy is the right one ?
- --j;
- }
- }
- // Really bigger ?
- if ( (j.node->key) < k )
- return insert(x, y, k );
- // We are going to replace a node
- return j;
- }
-
- Iterator insert( QMapNodeBase* x, QMapNodeBase* y, const Key& k ) {
- NodePtr z = new Node( k );
- if (y == header || x != 0 || k < key(y) ) {
- y->left = z; // also makes leftmost = z when y == header
- if ( y == header ) {
- header->parent = z;
- header->right = z;
- } else if ( y == header->left )
- header->left = z; // maintain leftmost pointing to min node
- } else {
- y->right = z;
- if ( y == header->right )
- header->right = z; // maintain rightmost pointing to max node
- }
- z->parent = y;
- z->left = 0;
- z->right = 0;
- rebalance( z, header->parent );
- ++node_count;
- return Iterator(z);
- }
-
-protected:
- /**
- * Helpers
- */
- const Key& key( QMapNodeBase* b ) const { return ((NodePtr)b)->key; }
-
- /**
- * Variables
- */
- NodePtr header;
-};
-
-
-template<class Key, class T>
-class Q_EXPORT QMap
-{
-public:
- /**
- * Typedefs
- */
- typedef QMapIterator< Key, T > Iterator;
- typedef QMapConstIterator< Key, T > ConstIterator;
- typedef T ValueType;
- typedef QMapPrivate< Key, T > Priv;
-
- /**
- * API
- */
- QMap() { sh = new QMapPrivate< Key, T >; }
- QMap( const QMap<Key,T>& m ) { sh = m.sh; sh->ref(); }
- ~QMap() { if ( sh->deref() ) delete sh; }
-
- QMap<Key,T>& operator= ( const QMap<Key,T>& m )
- { m.sh->ref(); if ( sh->deref() ) delete sh; sh = m.sh; return *this; }
-
- Iterator begin() { detach(); return sh->begin(); }
- Iterator end() { detach(); return sh->end(); }
- ConstIterator begin() const { return ((const Priv*)sh)->begin(); }
- ConstIterator end() const { return ((const Priv*)sh)->end(); }
-
- Iterator find ( const Key& k )
- { detach(); return Iterator( sh->find( k ).node ); }
- ConstIterator find ( const Key& k ) const
- { return sh->find( k ); }
- T& operator[] ( const Key& k ) {
- detach(); QMapNode<Key,T>* p = sh->find( k ).node;
- if ( p != sh->end().node ) return p->data;
- return insert( k, T() ).data(); }
- const T& operator[] ( const Key& k ) const
- { return sh->find( k ).data(); }
- bool contains ( const Key& k ) const
- { return find( k ) != end(); }
- //{ return sh->find( k ) != ((const Priv*)sh)->end(); }
-
- uint count() const { return sh->node_count; }
-
- bool isEmpty() const { return sh->node_count == 0; }
-
- Iterator insert( const Key& key, const T& value ) {
- detach();
- Iterator it = sh->insertSingle( key );
- it.data() = value;
- return it;
- }
-
- void remove( Iterator it ) { detach(); sh->remove( it ); }
- void remove( const Key& k ) {
- detach();
- Iterator it( sh->find( k ).node );
- if ( it != end() )
- sh->remove( it );
- }
-
- Iterator replace( const Key& k, const T& v ) {
- remove( k );
- return insert( k, v );
- }
-
- void clear() { if ( sh->count == 1 ) sh->clear(); else { sh->deref(); sh = new QMapPrivate<Key,T>; } }
-
-#if defined(Q_FULL_TEMPLATE_INSTANTIATION)
- bool operator==( const QMap<Key,T>& ) const { return FALSE; }
-#endif
-
-protected:
- /**
- * Helpers
- */
- void detach() { if ( sh->count > 1 ) { sh->deref(); sh = new QMapPrivate<Key,T>( sh ); } }
-
- Priv* sh;
-};
-
-
-#ifndef QT_NO_DATASTREAM
-template<class Key, class T>
-inline QDataStream& operator>>( QDataStream& s, QMap<Key,T>& m ) {
- m.clear();
- Q_UINT32 c;
- s >> c;
- for( Q_UINT32 i = 0; i < c; ++i ) {
- Key k; T t;
- s >> k >> t;
- m.insert( k, t );
- }
- return s;
-}
-
-
-template<class Key, class T>
-inline QDataStream& operator<<( QDataStream& s, const QMap<Key,T>& m ) {
- s << (Q_UINT32)m.count();
- QMapConstIterator<Key,T> it = m.begin();
- for( ; it != m.end(); ++it )
- s << it.key() << it.data();
- return s;
-}
-#endif
-
-#endif // QMAP_H
diff --git a/qtools/qxml.cpp b/qtools/qxml.cpp
deleted file mode 100644
index b7a68fc..0000000
--- a/qtools/qxml.cpp
+++ /dev/null
@@ -1,6061 +0,0 @@
-/****************************************************************************
-**
-**
-** Implementation of QXmlSimpleReader and related classes.
-**
-** Created : 000518
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the XML module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition licenses may use this
-** file in accordance with the Qt Commercial License Agreement provided
-** with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#define QT_XML_CPP
-#include "qxml.h"
-#include "qtextcodec.h"
-#include "qbuffer.h"
-
-#ifndef QT_NO_XML
-// NOT REVISED
-
-// Error strings for the XML reader
-#define XMLERR_OK "no error occurred"
-#define XMLERR_TAGMISMATCH "tag mismatch"
-#define XMLERR_UNEXPECTEDEOF "unexpected end of file"
-#define XMLERR_FINISHEDPARSINGWHILENOTEOF "parsing is finished but end of file is not reached"
-#define XMLERR_LETTEREXPECTED "letter is expected"
-#define XMLERR_ERRORPARSINGELEMENT "error while parsing element"
-#define XMLERR_ERRORPARSINGPROLOG "error while parsing prolog"
-#define XMLERR_ERRORPARSINGMAINELEMENT "error while parsing main element"
-#define XMLERR_ERRORPARSINGCONTENT "error while parsing content"
-#define XMLERR_ERRORPARSINGNAME "error while parsing name"
-#define XMLERR_ERRORPARSINGNMTOKEN "error while parsing Nmtoken"
-#define XMLERR_ERRORPARSINGATTRIBUTE "error while parsing attribute"
-#define XMLERR_ERRORPARSINGMISC "error while parsing misc"
-#define XMLERR_ERRORPARSINGCHOICE "error while parsing choice or seq"
-#define XMLERR_ERRORBYCONSUMER "error triggered by consumer"
-#define XMLERR_UNEXPECTEDCHARACTER "unexpected character"
-#define XMLERR_EQUALSIGNEXPECTED "expected '=' but not found"
-#define XMLERR_QUOTATIONEXPECTED "expected \" or ' but not found"
-#define XMLERR_ERRORPARSINGREFERENCE "error while parsing reference"
-#define XMLERR_ERRORPARSINGPI "error while parsing processing instruction"
-#define XMLERR_ERRORPARSINGATTLISTDECL "error while parsing attribute list declaration"
-#define XMLERR_ERRORPARSINGATTTYPE "error while parsing attribute type declaration"
-#define XMLERR_ERRORPARSINGATTVALUE "error while parsing attribute value declaration"
-#define XMLERR_ERRORPARSINGELEMENTDECL "error while parsing element declaration"
-#define XMLERR_ERRORPARSINGENTITYDECL "error while parsing entity declaration"
-#define XMLERR_ERRORPARSINGNOTATIONDECL "error while parsing notation declaration"
-#define XMLERR_ERRORPARSINGEXTERNALID "error while parsing external id"
-#define XMLERR_ERRORPARSINGCOMMENT "error while parsing comment"
-#define XMLERR_ERRORPARSINGENTITYVALUE "error while parsing entity value declaration"
-#define XMLERR_CDSECTHEADEREXPECTED "expected the header for a cdata section"
-#define XMLERR_MORETHANONEDOCTYPE "more than one document type definition"
-#define XMLERR_ERRORPARSINGDOCTYPE "error while parsing document type definition"
-#define XMLERR_INVALIDNAMEFORPI "invalid name for processing instruction"
-#define XMLERR_VERSIONEXPECTED "version expected while reading the XML declaration"
-#define XMLERR_EDECLORSDDECLEXPECTED "EDecl or SDDecl expected while reading the XML declaration"
-#define XMLERR_SDDECLEXPECTED "SDDecl expected while reading the XML declaration"
-#define XMLERR_WRONGVALUEFORSDECL "wrong value for standalone declaration"
-#define XMLERR_UNPARSEDENTITYREFERENCE "unparsed entity reference in wrong context"
-#define XMLERR_INTERNALGENERALENTITYINDTD "internal general entity reference not allowed in DTD"
-#define XMLERR_EXTERNALGENERALENTITYINDTD "external parsed general entity reference not allowed in DTD"
-#define XMLERR_EXTERNALGENERALENTITYINAV "external parsed general entity reference not allowed in attribute value"
-
-
-// the constants for the lookup table
-static const signed char cltWS = 0; // white space
-static const signed char cltPer = 1; // %
-static const signed char cltAmp = 2; // &
-static const signed char cltGt = 3; // >
-static const signed char cltLt = 4; // <
-static const signed char cltSlash = 5; // /
-static const signed char cltQm = 6; // ?
-static const signed char cltEm = 7; // !
-static const signed char cltDash = 8; // -
-static const signed char cltCB = 9; // ]
-static const signed char cltOB = 10; // [
-static const signed char cltEq = 11; // =
-static const signed char cltDq = 12; // "
-static const signed char cltSq = 13; // '
-static const signed char cltUnknown = 14;
-
-// character lookup table
-static const signed char charLookupTable[256]={
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x00 - 0x07
- cltUnknown, // 0x08
- cltWS, // 0x09 \t
- cltWS, // 0x0A \n
- cltUnknown, // 0x0B
- cltUnknown, // 0x0C
- cltWS, // 0x0D \r
- cltUnknown, // 0x0E
- cltUnknown, // 0x0F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x17 - 0x16
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x18 - 0x1F
- cltWS, // 0x20 Space
- cltEm, // 0x21 !
- cltDq, // 0x22 "
- cltUnknown, // 0x23
- cltUnknown, // 0x24
- cltPer, // 0x25 %
- cltAmp, // 0x26 &
- cltSq, // 0x27 '
- cltUnknown, // 0x28
- cltUnknown, // 0x29
- cltUnknown, // 0x2A
- cltUnknown, // 0x2B
- cltUnknown, // 0x2C
- cltDash, // 0x2D -
- cltUnknown, // 0x2E
- cltSlash, // 0x2F /
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x30 - 0x37
- cltUnknown, // 0x38
- cltUnknown, // 0x39
- cltUnknown, // 0x3A
- cltUnknown, // 0x3B
- cltLt, // 0x3C <
- cltEq, // 0x3D =
- cltGt, // 0x3E >
- cltQm, // 0x3F ?
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x40 - 0x47
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x48 - 0x4F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x50 - 0x57
- cltUnknown, // 0x58
- cltUnknown, // 0x59
- cltUnknown, // 0x5A
- cltOB, // 0x5B [
- cltUnknown, // 0x5C
- cltCB, // 0x5D ]
- cltUnknown, // 0x5E
- cltUnknown, // 0x5F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x60 - 0x67
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x68 - 0x6F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x70 - 0x77
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x78 - 0x7F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x80 - 0x87
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x88 - 0x8F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x90 - 0x97
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0x98 - 0x9F
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xA0 - 0xA7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xA8 - 0xAF
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xB0 - 0xB7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xB8 - 0xBF
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xC0 - 0xC7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xC8 - 0xCF
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xD0 - 0xD7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xD8 - 0xDF
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xE0 - 0xE7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xE8 - 0xEF
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, // 0xF0 - 0xF7
- cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown, cltUnknown // 0xF8 - 0xFF
-};
-
-
-class QXmlNamespaceSupportPrivate
-{
-};
-class QXmlAttributesPrivate
-{
-};
-class QXmlInputSourcePrivate
-{
-};
-class QXmlParseExceptionPrivate
-{
-};
-class QXmlLocatorPrivate
-{
-};
-class QXmlDefaultHandlerPrivate
-{
-};
-
-#if defined(Q_FULL_TEMPLATE_INSTANTIATION)
-bool operator==( const QMap<QString, QString>, const QMap<QString, QString> )
-{
- return FALSE;
-}
-#endif
-
-/*!
- \class QXmlParseException qxml.h
- \brief The QXmlParseException class is used to report errors with the
- QXmlErrorHandler interface.
-
- \module XML
-
- \sa QXmlErrorHandler
-*/
-/*!
- \fn QXmlParseException::QXmlParseException( const QString& name, int c, int l, const QString& p, const QString& s )
-
- Constructs a parse exception with the error string \a name in the column
- \a c and line \a l for the public identifier \a p and the system identifier
- \a s.
-*/
-/*!
- Returns the error message.
-*/
-QString QXmlParseException::message() const
-{
- return msg;
-}
-/*!
- Returns the column number the error occurred.
-*/
-int QXmlParseException::columnNumber() const
-{
- return column;
-}
-/*!
- Returns the line number the error occurred.
-*/
-int QXmlParseException::lineNumber() const
-{
- return line;
-}
-/*!
- Returns the public identifier the error occurred.
-*/
-QString QXmlParseException::publicId() const
-{
- return pub;
-}
-/*!
- Returns the system identifier the error occurred.
-*/
-QString QXmlParseException::systemId() const
-{
- return sys;
-}
-
-
-/*!
- \class QXmlLocator qxml.h
- \brief The QXmlLocator class provides the XML handler classes with
- information about the actual parsing position.
-
- \module XML
-
- The reader reports a QXmlLocator to the content handler before he starts to
- parse the document. This is done with the
- QXmlContentHandler::setDocumentLocator() function. The handler classes can
- now use this locator to get the actual position the reader is at.
-*/
-/*!
- \fn QXmlLocator::QXmlLocator( QXmlSimpleReader* parent )
-
- Constructor.
-*/
-/*!
- \fn QXmlLocator::~QXmlLocator()
-
- Destructor.
-*/
-/*!
- Gets the column number (starting with 1) or -1 if there is no column number
- available.
-*/
-int QXmlLocator::columnNumber()
-{
- return ( reader->columnNr == -1 ? -1 : reader->columnNr + 1 );
-}
-/*!
- Gets the line number (starting with 1) or -1 if there is no line number
- available.
-*/
-int QXmlLocator::lineNumber()
-{
- return ( reader->lineNr == -1 ? -1 : reader->lineNr + 1 );
-}
-
-
-/*********************************************
- *
- * QXmlNamespaceSupport
- *
- *********************************************/
-
-/*!
- \class QXmlNamespaceSupport qxml.h
- \brief The QXmlNamespaceSupport class is a helper class for XML readers which
- want to include namespace support.
-
- \module XML
-
- It provides some functions that makes it easy to handle namespaces. Its main
- use is for subclasses of QXmlReader which want to provide namespace
- support.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-
-/*!
- Constructs a QXmlNamespaceSupport.
-*/
-QXmlNamespaceSupport::QXmlNamespaceSupport()
-{
- reset();
-}
-
-/*!
- Destructs a QXmlNamespaceSupport.
-*/
-QXmlNamespaceSupport::~QXmlNamespaceSupport()
-{
-}
-
-/*!
- This function declares a prefix in the current namespace context; the prefix
- will remain in force until this context is popped, unless it is shadowed in a
- descendant context.
-
- Note that there is an asymmetry in this library: while prefix() will not
- return the default "" prefix, even if you have declared one; to check for a
- default prefix, you have to look it up explicitly using uri(). This
- asymmetry exists to make it easier to look up prefixes for attribute names,
- where the default prefix is not allowed.
-*/
-void QXmlNamespaceSupport::setPrefix( const QString& pre, const QString& uri )
-{
- if( pre.isNull() ) {
- ns.insert( "", uri );
- } else {
- ns.insert( pre, uri );
- }
-}
-
-/*!
- Returns one of the prefixes mapped to a namespace URI.
-
- If more than one prefix is currently mapped to the same URI, this function
- will make an arbitrary selection; if you want all of the prefixes, use the
- prefixes() function instead.
-
- Note: this will never return the empty (default) prefix; to check for a
- default prefix, use the uri() function with an argument of "".
-*/
-QString QXmlNamespaceSupport::prefix( const QString& uri ) const
-{
- QMap<QString, QString>::ConstIterator itc, it = ns.begin();
- while ( (itc=it) != ns.end() ) {
- ++it;
- if ( itc.data() == uri && !itc.key().isEmpty() )
- return itc.key();
- }
- return "";
-}
-
-/*!
- Looks up a prefix in the current context and returns the currently-mapped
- namespace URI. Use the empty string ("") for the default namespace.
-*/
-QString QXmlNamespaceSupport::uri( const QString& prefix ) const
-{
- const QString& returi = ns[ prefix ];
- return returi;
-}
-
-/*!
- Splits the name at the ':' and returns the prefix and the local name.
-*/
-void QXmlNamespaceSupport::splitName( const QString& qname,
- QString& prefix, QString& localname ) const
-{
- uint pos;
- // search the ':'
- for( pos=0; pos<qname.length(); pos++ ) {
- if ( qname.at(pos) == ':' )
- break;
- }
- // and split
- prefix = qname.left( pos );
- localname = qname.mid( pos+1 );
-}
-
-/*!
- Processes a raw XML 1.0 name in the current context by removing the prefix
- and looking it up among the prefixes currently declared.
-
- First parameter is the raw XML 1.0 name to be processed. The second parameter
- is a flag whether the name is the name of an attribute (TRUE) or not (FALSE).
-
- The return values will be stored in the last two parameters as follows:
- <ul>
- <li> The namespace URI, or an empty string if none is in use.
- <li> The local name (without prefix).
- </ul>
-
- If the raw name has a prefix that has not been declared, then the return
- value will be empty.
-
- Note that attribute names are processed differently than element names: an
- unprefixed element name will received the default namespace (if any), while
- an unprefixed element name will not
-*/
-void QXmlNamespaceSupport::processName( const QString& qname,
- bool isAttribute,
- QString& nsuri, QString& localname ) const
-{
- uint pos;
- // search the ':'
- for( pos=0; pos<qname.length(); pos++ ) {
- if ( qname.at(pos) == ':' )
- break;
- }
- if ( pos < qname.length() ) {
- // there was a ':'
- nsuri = uri( qname.left( pos ) );
- localname = qname.mid( pos+1 );
- } else {
- // there was no ':'
- if ( isAttribute ) {
- nsuri = ""; // attributes don't take default namespace
- } else {
- nsuri = uri( "" ); // get default namespace
- }
- localname = qname;
- }
-}
-
-/*!
- Returns an enumeration of all prefixes currently declared.
-
- Note: if there is a default prefix, it will not be returned in this
- enumeration; check for the default prefix using uri() with an argument
- of "".
-*/
-QStringList QXmlNamespaceSupport::prefixes() const
-{
- QStringList list;
-
- QMap<QString, QString>::ConstIterator itc, it = ns.begin();
- while ( (itc=it) != ns.end() ) {
- ++it;
- if ( !itc.key().isEmpty() )
- list.append( itc.key() );
- }
- return list;
-}
-
-/*!
- Returns a list of all prefixes currently declared for a URI.
-
- The xml: prefix will be included. If you want only one prefix that's
- mapped to the namespace URI, and you don't care which one you get, use the
- prefix() function instead.
-
- Note: the empty (default) prefix is never included in this enumeration; to
- check for the presence of a default namespace, use uri() with an
- argument of "".
-*/
-QStringList QXmlNamespaceSupport::prefixes( const QString& uri ) const
-{
- QStringList list;
-
- QMap<QString, QString>::ConstIterator itc, it = ns.begin();
- while ( (itc=it) != ns.end() ) {
- ++it;
- if ( itc.data() == uri && !itc.key().isEmpty() )
- list.append( itc.key() );
- }
- return list;
-}
-
-/*!
- Starts a new namespace context.
-
- Normally, you should push a new context at the beginning of each XML element:
- the new context will automatically inherit the declarations of its parent
- context, but it will also keep track of which declarations were made within
- this context.
-*/
-void QXmlNamespaceSupport::pushContext()
-{
- nsStack.push( ns );
-}
-
-/*!
- Reverts to the previous namespace context.
-
- Normally, you should pop the context at the end of each XML element. After
- popping the context, all namespace prefix mappings that were previously in
- force are restored.
-*/
-void QXmlNamespaceSupport::popContext()
-{
- if( !nsStack.isEmpty() )
- ns = nsStack.pop();
-}
-
-/*!
- Resets this namespace support object for reuse.
-*/
-void QXmlNamespaceSupport::reset()
-{
- nsStack.clear();
- ns.clear();
- ns.insert( "xml", "http://www.w3.org/XML/1998/namespace" ); // the XML namespace
-}
-
-
-
-/*********************************************
- *
- * QXmlAttributes
- *
- *********************************************/
-
-/*!
- \class QXmlAttributes qxml.h
- \brief The QXmlAttributes class provides XML attributes.
-
- \module XML
-
- If attributes are reported by QXmlContentHandler::startElement() this
- class is used to pass the attribute values. It provides you with different
- functions to access the attribute names and values.
-*/
-/*!
- \fn QXmlAttributes::QXmlAttributes()
-
- Constructs an empty attribute list.
-*/
-/*!
- \fn QXmlAttributes::~QXmlAttributes()
-
- Destructs attributes.
-*/
-
-/*!
- Look up the index of an attribute by an XML 1.0 qualified name.
-
- Returns the index of the attribute (starting with 0) or -1 if it wasn't
- found.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-int QXmlAttributes::index( const QString& qName ) const
-{
- return qnameList.findIndex( qName );
-}
-
-/*!
- Looks up the index of an attribute by a namespace name.
-
- \a uri specifies the namespace URI, or the empty string if the name has no
- namespace URI. \a localPart specifies the attribute's local name.
-
- Returns the index of the attribute (starting with 0) or -1 if it wasn't
- found.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-int QXmlAttributes::index( const QString& uri, const QString& localPart ) const
-{
- uint count = uriList.count();
- for ( uint i=0; i<count; i++ ) {
- if ( uriList[i] == uri && localnameList[i] == localPart )
- return i;
- }
- return -1;
-}
-
-/*!
- Returns the number of attributes in the list.
-*/
-int QXmlAttributes::length() const
-{
- return valueList.count();
-}
-
-/*!
- Looks up an attribute's local name by index (starting with 0).
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-QString QXmlAttributes::localName( int index ) const
-{
- return localnameList[index];
-}
-
-/*!
- Looks up an attribute's XML 1.0 qualified name by index (starting with 0).
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-QString QXmlAttributes::qName( int index ) const
-{
- return qnameList[index];
-}
-
-/*!
- Looks up an attribute's namespace URI by index (starting with 0).
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-QString QXmlAttributes::uri( int index ) const
-{
- return uriList[index];
-}
-
-/*!
- Looks up an attribute's type by index (starting with 0).
-
- At the moment only 'CDATA' is returned.
-*/
-QString QXmlAttributes::type( int ) const
-{
- return "CDATA";
-}
-
-/*!
- Looks up an attribute's type by XML 1.0 qualified name.
-
- At the moment only 'CDATA' is returned.
-*/
-QString QXmlAttributes::type( const QString& ) const
-{
- return "CDATA";
-}
-
-/*!
- Looks up an attribute's type by namespace name.
-
- The first parameter specifies the namespace URI, or the empty string if
- the name has no namespace URI. The second parameter specifies the
- attribute's local name.
-
- At the moment only 'CDATA' is returned.
-*/
-QString QXmlAttributes::type( const QString&, const QString& ) const
-{
- return "CDATA";
-}
-
-/*!
- Looks up an attribute's value by index (starting with 0).
-*/
-QString QXmlAttributes::value( int index ) const
-{
- return valueList[index];
-}
-
-/*!
- Looks up an attribute's value by XML 1.0 qualified name.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-QString QXmlAttributes::value( const QString& qName ) const
-{
- int i = index( qName );
- if ( i == -1 )
- return QString::null;
- return valueList[ i ];
-}
-
-/*!
- Looks up an attribute's value by namespace name.
-
- \a uri specifies the namespace URI, or the empty string if the name has no
- namespace URI. \a localName specifies the attribute's local name.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-*/
-QString QXmlAttributes::value( const QString& uri, const QString& localName ) const
-{
- int i = index( uri, localName );
- if ( i == -1 )
- return QString::null;
- return valueList[ i ];
-}
-
-
-/*********************************************
- *
- * QXmlInputSource
- *
- *********************************************/
-
-/*!
- \class QXmlInputSource qxml.h
- \brief The QXmlInputSource class is the source where XML data is read from.
-
- \module XML
-
- All subclasses of QXmlReader read the input from this class.
-*/
-
-/*!
- Returns all the data this input source contains.
-*/
-const QString& QXmlInputSource::data() const
-{
- return input;
-}
-
-/*!
- Constructs a input source which contains no data.
-*/
-QXmlInputSource::QXmlInputSource( )
-{
- input = "";
-}
-
-/*!
- Constructs a input source and get the data from the text stream.
-*/
-QXmlInputSource::QXmlInputSource( QTextStream& stream )
-{
- QByteArray rawData;
- if ( stream.device()->isDirectAccess() ) {
- rawData = stream.device()->readAll();
- } else {
- int nread = 0;
- const int bufsize = 512;
- while ( !stream.device()->atEnd() ) {
- rawData.resize( nread + bufsize );
- nread += stream.device()->readBlock( rawData.data()+nread, bufsize );
- }
- rawData.resize( nread );
- }
- readInput( rawData );
-}
-
-/*!
- Constructs a input source and get the data from a file. If the file cannot be
- read the input source is empty.
-*/
-QXmlInputSource::QXmlInputSource( QFile& file )
-{
- if ( !file.open(IO_ReadOnly) ) {
- input = "";
- return;
- }
- QByteArray rawData = file.readAll();
- readInput( rawData );
- file.close();
-}
-
-/*!
- Destructor.
-*/
-QXmlInputSource::~QXmlInputSource()
-{
-}
-
-/*!
- Sets the data of the input source to \a dat.
-*/
-void QXmlInputSource::setData( const QString& dat )
-{
- input = dat;
-}
-
-/*!
- Read the XML file from the byte array; try to recognize the encoding.
-*/
-// ### The input source should not do the encoding detection!
-void QXmlInputSource::readInput( QByteArray& rawData )
-{
- QBuffer buf( rawData );
- buf.open( IO_ReadOnly );
- QTextStream *stream = new QTextStream( &buf );
- QChar tmp;
- // assume UTF8 or UTF16 at first
- stream->setEncoding( QTextStream::UnicodeUTF8 );
- input = "";
- // read the first 5 characters
- for ( int i=0; i<5; i++ ) {
- *stream >> tmp;
- input += tmp;
- }
- // starts the document with an XML declaration?
- if ( input == "<?xml" ) {
- // read the whole XML declaration
- do {
- *stream >> tmp;
- input += tmp;
- } while( tmp != '>' );
- // and try to find out if there is an encoding
- int pos = input.find( "encoding" );
- if ( pos != -1 ) {
- QString encoding;
- do {
- pos++;
- if ( pos > (int)input.length() )
- goto finished;
- } while( input[pos] != '"' && input[pos] != '\'' );
- pos++;
- while( input[pos] != '"' && input[pos] != '\'' ) {
- encoding += input[pos];
- pos++;
- if ( pos > (int)input.length() )
- goto finished;
- }
- delete stream;
- stream = new QTextStream( &buf );
- stream->setCodec( QTextCodec::codecForName( encoding.utf8() ) );
- buf.reset();
- input = "";
- }
- }
-finished:
- input += stream->read();
- delete stream;
- buf.close();
-}
-
-
-/*********************************************
- *
- * QXmlDefaultHandler
- *
- *********************************************/
-
-/*!
- \class QXmlContentHandler qxml.h
- \brief The QXmlContentHandler class provides an interface to report logical
- content of XML data.
-
- \module XML
-
- If the application needs to be informed of basic parsing events, it
- implements this interface and sets it with QXmlReader::setContentHandler().
- The reader reports basic document-related events like the start and end of
- elements and character data through this interface.
-
- The order of events in this interface is very important, and mirrors the
- order of information in the document itself. For example, all of an element's
- content (character data, processing instructions, and/or subelements) will
- appear, in order, between the startElement() event and the corresponding
- endElement() event.
-
- The class QXmlDefaultHandler gives a default implementation for this
- interface; subclassing from this class is very convenient if you want only be
- informed of some parsing events.
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlDeclHandler QXmlEntityResolver QXmlErrorHandler
- QXmlLexicalHandler
-*/
-/*!
- \fn void QXmlContentHandler::setDocumentLocator( QXmlLocator* locator )
-
- The reader calls this function before he starts parsing the document. The
- argument \a locator is a pointer to a QXmlLocator which allows the
- application to get the actual position of the parsing in the document.
-
- Do not destroy the \a locator; it is destroyed when the reader is destroyed
- (do not use the \a locator after the reader got destroyed).
-*/
-/*!
- \fn bool QXmlContentHandler::startDocument()
-
- The reader calls this function when he starts parsing the document.
- The reader will call this function only once before any other functions in
- this class or in the QXmlDTDHandler class are called (except
- QXmlContentHandler::setDocumentLocator()).
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa endDocument()
-*/
-/*!
- \fn bool QXmlContentHandler::endDocument()
-
- The reader calls this function after he has finished the parsing. It
- is only called once. It is the last function of all handler functions that is
- called. It is called after the reader has read all input or has abandoned
- parsing because of a fatal error.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa startDocument()
-*/
-/*!
- \fn bool QXmlContentHandler::startPrefixMapping( const QString& prefix, const QString& uri )
-
- The reader calls this function to signal the begin of a prefix-URI
- namespace mapping scope. This information is not necessary for normal
- namespace processing since the reader automatically replaces prefixes for
- element and attribute names.
-
- Note that startPrefixMapping and endPrefixMapping calls are not guaranteed to
- be properly nested relative to each-other: all startPrefixMapping events will
- occur before the corresponding startElement event, and all endPrefixMapping
- events will occur after the corresponding endElement event, but their order
- is not otherwise guaranteed.
-
- The argument \a prefix is the namespace prefix being declared and the
- argument \a uri is the namespace URI the prefix is mapped to.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-
- \sa endPrefixMapping()
-*/
-/*!
- \fn bool QXmlContentHandler::endPrefixMapping( const QString& prefix )
-
- The reader calls this function to signal the end of a prefix mapping.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-
- \sa startPrefixMapping()
-*/
-/*!
- \fn bool QXmlContentHandler::startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts )
-
- The reader calls this function when he has parsed a start element tag.
-
- There will be a corresponding endElement() call when the corresponding end
- element tag was read. The startElement() and endElement() calls are always
- nested correctly. Empty element tags (e.g. &lt;a/&gt;) are reported by
- startElement() directly followed by a call to endElement().
-
- The attribute list provided will contain only attributes with explicit
- values. The attribute list will contain attributes used for namespace
- declaration (i.e. attributes starting with xmlns) only if the
- namespace-prefix property of the reader is TRUE.
-
- The argument \a uri is the namespace URI, or the empty string if the element
- has no namespace URI or if namespace processing is not being performed, \a
- localName is the local name (without prefix), or the empty string if
- namespace processing is not being performed, \a qName is the qualified name
- (with prefix), or the empty string if qualified names are not available and
- \a atts are the attributes attached to the element. If there are no
- attributes, \a atts is an empty attributes object
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-
- \sa endElement()
-*/
-/*!
- \fn bool QXmlContentHandler::endElement( const QString& namespaceURI, const QString& localName, const QString& qName )
-
- The reader calls this function when he has parsed an end element tag.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- See also the <a href="xml-sax.html#namespaces">namespace description</a>.
-
- \sa startElement()
-*/
-/*!
- \fn bool QXmlContentHandler::characters( const QString& ch )
-
- The reader calls this function when he has parsed a chunk of character
- data (either normal character data or character data inside a CDATA section;
- if you have to distinguish between those two types you have to use
- QXmlLexicalHandler::startCDATA() and QXmlLexicalHandler::endCDATA() in
- addition).
-
- Some readers will report whitespace in element content using the
- ignorableWhitespace() function rather than this one (QXmlSimpleReader will
- do it not though).
-
- A reader is allowed to report the character data of an element in more than
- one chunk; e.g. a reader might want to report "a &amp;lt; b" in three
- characters() events ("a ", "<" and " b").
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlContentHandler::ignorableWhitespace( const QString& ch )
-
- Some readers may use this function to report each chunk of whitespace in
- element content (QXmlSimpleReader does not though).
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlContentHandler::processingInstruction( const QString& target, const QString& data )
-
- The reader calls this function when he has parsed a processing
- instruction.
-
- \a target is the target name of the processing instruction and \a data is the
- data of the processing instruction.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlContentHandler::skippedEntity( const QString& name )
-
- Some readers may skip entities if they have not seen the declarations (e.g.
- because they are in an external DTD). If they do so they will report it by
- calling this function.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn QString QXmlContentHandler::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlErrorHandler qxml.h
- \brief The QXmlErrorHandler class provides an interface to report errors in
- XML data.
-
- \module XML
-
- If the application is interested in reporting errors to the user or any other
- customized error handling, you should subclass this class.
-
- You can set the error handler with QXmlReader::setErrorHandler().
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlDeclHandler QXmlContentHandler QXmlEntityResolver
- QXmlLexicalHandler
-*/
-/*!
- \fn bool QXmlErrorHandler::warning( const QXmlParseException& exception )
-
- A reader might use this function to report a warning. Warnings are conditions
- that are not errors or fatal errors as defined by the XML 1.0 specification.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlErrorHandler::error( const QXmlParseException& exception )
-
- A reader might use this function to report a recoverable error. A recoverable
- error corresponds to the definition of "error" in section 1.2 of the XML 1.0
- specification.
-
- The reader must continue to provide normal parsing events after invoking this
- function.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlErrorHandler::fatalError( const QXmlParseException& exception )
-
- A reader must use this function to report a non-recoverable error.
-
- If this function returns TRUE the reader might try to go on parsing and
- reporting further errors; but no regular parsing events are reported.
-*/
-/*!
- \fn QString QXmlErrorHandler::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlDTDHandler qxml.h
- \brief The QXmlDTDHandler class provides an interface to report DTD content
- of XML data.
-
- \module XML
-
- If an application needs information about notations and unparsed entities,
- then the application implements this interface and registers an instance with
- QXmlReader::setDTDHandler().
-
- Note that this interface includes only those DTD events that the XML
- recommendation requires processors to report: notation and unparsed entity
- declarations.
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDeclHandler QXmlContentHandler QXmlEntityResolver QXmlErrorHandler
- QXmlLexicalHandler
-*/
-/*!
- \fn bool QXmlDTDHandler::notationDecl( const QString& name, const QString& publicId, const QString& systemId )
-
- The reader calls this function when he has parsed a notation
- declaration.
-
- The argument \a name is the notation name, \a publicId is the notations's
- public identifier and \a systemId is the notations's system identifier.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlDTDHandler::unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName )
-
- The reader calls this function when he finds an unparsed entity declaration.
-
- The argument \a name is the unparsed entity's name, \a publicId is the
- entity's public identifier, \a systemId is the entity's system identifier and
- \a notation is the name of the associated notation.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn QString QXmlDTDHandler::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlEntityResolver qxml.h
- \brief The QXmlEntityResolver class provides an interface to resolve extern
- entities contained in XML data.
-
- \module XML
-
- If an application needs to implement customized handling for external
- entities, it must implement this interface and register it with
- QXmlReader::setEntityResolver().
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlDeclHandler QXmlContentHandler QXmlErrorHandler
- QXmlLexicalHandler
-*/
-/*!
- \fn bool QXmlEntityResolver::resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret )
-
- The reader will call this function before he opens any external entity,
- except the top-level document entity. The application may request the reader
- to resolve the entity itself (\a ret is 0) or to use an entirely different
- input source (\a ret points to the input source).
-
- The reader will delete the input source \a ret when he no longer needs it. So
- you should allocate it on the heap with \c new.
-
- The argument \a publicId is the public identifier of the external entity, \a
- systemId is the system identifier of the external entity and \a ret is the
- return value of this function: if it is 0 the reader should resolve the
- entity itself, if it is non-zero it must point to an input source which the
- reader will use instead.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn QString QXmlEntityResolver::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlLexicalHandler qxml.h
- \brief The QXmlLexicalHandler class provides an interface to report lexical
- content of XML data.
-
- \module XML
-
- The events in the lexical handler apply to the entire document, not just to
- the document element, and all lexical handler events appear between the
- content handler's startDocument and endDocument events.
-
- You can set the lexical handler with QXmlReader::setLexicalHandler().
-
- This interface is designed after the SAX2 extension LexicalHandler. The
- functions startEntity() and endEntity() are not included though.
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlDeclHandler QXmlContentHandler QXmlEntityResolver
- QXmlErrorHandler
-*/
-/*!
- \fn bool QXmlLexicalHandler::startDTD( const QString& name, const QString& publicId, const QString& systemId )
-
- The reader calls this function to report the start of a DTD declaration, if
- any.
-
- All declarations reported through QXmlDTDHandler or QXmlDeclHandler appear
- between the startDTD() and endDTD() calls.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa endDTD()
-*/
-/*!
- \fn bool QXmlLexicalHandler::endDTD()
-
- The reader calls this function to report the end of a DTD declaration, if
- any.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa startDTD()
-*/
-/*!
- \fn bool QXmlLexicalHandler::startCDATA()
-
- The reader calls this function to report the start of a CDATA section. The
- content of the CDATA section will be reported through the regular
- QXmlContentHandler::characters(). This function is intended only to report
- the boundary.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa endCDATA()
-*/
-/*!
- \fn bool QXmlLexicalHandler::endCDATA()
-
- The reader calls this function to report the end of a CDATA section.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-
- \sa startCDATA()
-*/
-/*!
- \fn bool QXmlLexicalHandler::comment( const QString& ch )
-
- The reader calls this function to report an XML comment anywhere in the
- document.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn QString QXmlLexicalHandler::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlDeclHandler qxml.h
- \brief The QXmlDeclHandler class provides an interface to report declaration
- content of XML data.
-
- \module XML
-
- You can set the declaration handler with QXmlReader::setDeclHandler().
-
- This interface is designed after the SAX2 extension DeclHandler.
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlContentHandler QXmlEntityResolver QXmlErrorHandler
- QXmlLexicalHandler
-*/
-/*!
- \fn bool QXmlDeclHandler::attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value )
-
- The reader calls this function to report an attribute type declaration. Only
- the effective (first) declaration for an attribute will be reported.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlDeclHandler::internalEntityDecl( const QString& name, const QString& value )
-
- The reader calls this function to report an internal entity declaration. Only
- the effective (first) declaration will be reported.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn bool QXmlDeclHandler::externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId )
-
- The reader calls this function to report a parsed external entity
- declaration. Only the effective (first) declaration for each entity will be
- reported.
-
- If this function returns FALSE the reader will stop parsing and will report
- an error. The reader will use the function errorString() to get the error
- message that will be used for reporting the error.
-*/
-/*!
- \fn QString QXmlDeclHandler::errorString()
-
- The reader calls this function to get an error string if any of the handler
- functions returns FALSE to him.
-*/
-
-
-/*!
- \class QXmlDefaultHandler qxml.h
- \brief The QXmlDefaultHandler class provides a default implementation of all
- XML handler classes.
-
- \module XML
-
- Very often you are only interested in parts of the things that that the
- reader reports to you. This class simply implements a default behaviour of
- the handler classes (most of the time: do nothing). Normally this is the
- class you subclass for implementing your customized handler.
-
- See also the <a href="xml.html#introSAX2">Introduction to SAX2</a>.
-
- \sa QXmlDTDHandler QXmlDeclHandler QXmlContentHandler QXmlEntityResolver
- QXmlErrorHandler QXmlLexicalHandler
-*/
-/*!
- \fn QXmlDefaultHandler::QXmlDefaultHandler()
-
- Constructor.
-*/
-/*!
- \fn QXmlDefaultHandler::~QXmlDefaultHandler()
-
- Destructor.
-*/
-
-/*!
- Does nothing.
-*/
-void QXmlDefaultHandler::setDocumentLocator( QXmlLocator* )
-{
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startDocument()
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endDocument()
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startPrefixMapping( const QString&, const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endPrefixMapping( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startElement( const QString&, const QString&,
- const QString&, const QXmlAttributes& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endElement( const QString&, const QString&,
- const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::characters( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::ignorableWhitespace( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::processingInstruction( const QString&,
- const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::skippedEntity( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::warning( const QXmlParseException& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::error( const QXmlParseException& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::fatalError( const QXmlParseException& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::notationDecl( const QString&, const QString&,
- const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::unparsedEntityDecl( const QString&, const QString&,
- const QString&, const QString& )
-{
- return TRUE;
-}
-
-/*!
- Always sets \a ret to 0, so that the reader will use the system identifier
- provided in the XML document.
-*/
-bool QXmlDefaultHandler::resolveEntity( const QString&, const QString&,
- QXmlInputSource* &ret )
-{
- ret = 0;
- return TRUE;
-}
-
-/*!
- Returns the default error string.
-*/
-QString QXmlDefaultHandler::errorString()
-{
- return QString( XMLERR_ERRORBYCONSUMER );
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startDTD( const QString&, const QString&, const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endDTD()
-{
- return TRUE;
-}
-
-#if 0
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startEntity( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endEntity( const QString& )
-{
- return TRUE;
-}
-#endif
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::startCDATA()
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::endCDATA()
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::comment( const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::attributeDecl( const QString&, const QString&, const QString&, const QString&, const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::internalEntityDecl( const QString&, const QString& )
-{
- return TRUE;
-}
-
-/*!
- Does nothing.
-*/
-bool QXmlDefaultHandler::externalEntityDecl( const QString&, const QString&, const QString& )
-{
- return TRUE;
-}
-
-
-/*********************************************
- *
- * QXmlSimpleReaderPrivate
- *
- *********************************************/
-
-class QXmlSimpleReaderPrivate
-{
-private:
- // constructor
- QXmlSimpleReaderPrivate()
- { }
-
-
- // used for entity declarations
- struct ExternParameterEntity
- {
- ExternParameterEntity( ) {}
- ExternParameterEntity( const QString &p, const QString &s )
- : publicId(p), systemId(s) {}
- QString publicId;
- QString systemId;
- };
- struct ExternEntity
- {
- ExternEntity( ) {}
- ExternEntity( const QString &p, const QString &s, const QString &n )
- : publicId(p), systemId(s), notation(n) {}
- QString publicId;
- QString systemId;
- QString notation;
- };
- QMap<QString,ExternParameterEntity> externParameterEntities;
- QMap<QString,QString> parameterEntities;
- QMap<QString,ExternEntity> externEntities;
- QMap<QString,QString> entities;
-
- // used for standalone declaration
- enum Standalone { Yes, No, Unknown };
-
- QString doctype; // only used for the doctype
- QString xmlVersion; // only used to store the version information
- QString encoding; // only used to store the encoding
- Standalone standalone; // used to store the value of the standalone declaration
-
- QString publicId; // used by parseExternalID() to store the public ID
- QString systemId; // used by parseExternalID() to store the system ID
- QString attDeclEName; // use by parseAttlistDecl()
- QString attDeclAName; // use by parseAttlistDecl()
-
- // flags for some features support
- bool useNamespaces;
- bool useNamespacePrefixes;
- bool reportWhitespaceCharData;
-
- // used to build the attribute list
- QXmlAttributes attList;
-
- // helper classes
- QXmlLocator *locator;
- QXmlNamespaceSupport namespaceSupport;
-
- // error string
- QString error;
-
- // friend declarations
- friend class QXmlSimpleReader;
-};
-
-
-/*********************************************
- *
- * QXmlSimpleReader
- *
- *********************************************/
-
-/*!
- \class QXmlReader qxml.h
- \brief The QXmlReader class provides an interface for XML readers (i.e.
- parsers).
-
- \module XML
-
- This abstract class describes an interface for all XML readers in Qt. At the
- moment there is only one implementation of a reader included in the XML
- module of Qt (QXmlSimpleReader). In future releases there might be more
- readers with different properties available (e.g. a validating parser).
-
- The design of the XML classes follow the
- <a href="http://www.megginson.com/SAX/">SAX2 java interface</a>.
- It was adopted to fit into the Qt naming conventions; so it should be very
- easy for anybody who has worked with SAX2 to get started with the Qt XML
- classes.
-
- All readers use the class QXmlInputSource to read the input document from.
- Since you are normally interested in certain contents of the XML document,
- the reader reports those contents through special handler classes
- (QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver,
- QXmlErrorHandler and QXmlLexicalHandler).
-
- You have to subclass these classes. Since the handler classes describe only
- interfaces you must implement all functions; there is a class
- (QXmlDefaultHandler) to make this easier; it implements a default behaviour
- (do nothing) for all functions.
-
- For getting started see also the
- <a href="xml-sax.html#quickStart">Quick start</a>.
-
- \sa QXmlSimpleReader
-*/
-/*!
- \fn bool QXmlReader::feature( const QString& name, bool *ok ) const
-
- If the reader has the feature \a name, this function returns the value of the
- feature.
-
- If the reader has not the feature \a name, the return value may be anything.
-
- If \a ok is not 0, then \a ok is set to TRUE if the reader has the feature
- \a name, otherwise \a ok is set to FALSE.
-
- \sa setFeature() hasFeature()
-*/
-/*!
- \fn void QXmlReader::setFeature( const QString& name, bool value )
-
- Sets the feature \a name to \a value. If the reader has not the feature \a
- name, this value is ignored.
-
- \sa feature() hasFeature()
-*/
-/*!
- \fn bool QXmlReader::hasFeature( const QString& name ) const
-
- Returns \c TRUE if the reader has the feature \a name, otherwise FALSE.
-
- \sa feature() setFeature()
-*/
-/*!
- \fn void* QXmlReader::property( const QString& name, bool *ok ) const
-
- If the reader has the property \a name, this function returns the value of
- the property.
-
- If the reader has not the property \a name, the return value is 0.
-
- If \a ok is not 0, then \a ok is set to TRUE if the reader has the property
- \a name, otherwise \a ok is set to FALSE.
-
- \sa setProperty() hasProperty()
-*/
-/*!
- \fn void QXmlReader::setProperty( const QString& name, void* value )
-
- Sets the property \a name to \a value. If the reader has not the property \a
- name, this value is ignored.
-
- \sa property() hasProperty()
-*/
-/*!
- \fn bool QXmlReader::hasProperty( const QString& name ) const
-
- Returns TRUE if the reader has the property \a name, otherwise FALSE.
-
- \sa property() setProperty()
-*/
-/*!
- \fn void QXmlReader::setEntityResolver( QXmlEntityResolver* handler )
-
- Sets the entity resolver to \a handler.
-
- \sa entityResolver()
-*/
-/*!
- \fn QXmlEntityResolver* QXmlReader::entityResolver() const
-
- Returns the entity resolver or 0 if none was set.
-
- \sa setEntityResolver()
-*/
-/*!
- \fn void QXmlReader::setDTDHandler( QXmlDTDHandler* handler )
-
- Sets the DTD handler to \a handler.
-
- \sa DTDHandler()
-*/
-/*!
- \fn QXmlDTDHandler* QXmlReader::DTDHandler() const
-
- Returns the DTD handler or 0 if none was set.
-
- \sa setDTDHandler()
-*/
-/*!
- \fn void QXmlReader::setContentHandler( QXmlContentHandler* handler )
-
- Sets the content handler to \a handler.
-
- \sa contentHandler()
-*/
-/*!
- \fn QXmlContentHandler* QXmlReader::contentHandler() const
-
- Returns the content handler or 0 if none was set.
-
- \sa setContentHandler()
-*/
-/*!
- \fn void QXmlReader::setErrorHandler( QXmlErrorHandler* handler )
-
- Sets the error handler to \a handler.
-
- \sa errorHandler()
-*/
-/*!
- \fn QXmlErrorHandler* QXmlReader::errorHandler() const
-
- Returns the error handler or 0 if none was set
-
- \sa setErrorHandler()
-*/
-/*!
- \fn void QXmlReader::setLexicalHandler( QXmlLexicalHandler* handler )
-
- Sets the lexical handler to \a handler.
-
- \sa lexicalHandler()
-*/
-/*!
- \fn QXmlLexicalHandler* QXmlReader::lexicalHandler() const
-
- Returns the lexical handler or 0 if none was set.
-
- \sa setLexicalHandler()
-*/
-/*!
- \fn void QXmlReader::setDeclHandler( QXmlDeclHandler* handler )
-
- Sets the declaration handler to \a handler.
-
- \sa declHandler()
-*/
-/*!
- \fn QXmlDeclHandler* QXmlReader::declHandler() const
-
- Returns the declaration handler or 0 if none was set.
-
- \sa setDeclHandler()
-*/
-/*!
- \fn bool QXmlReader::parse( const QXmlInputSource& input )
-
- Parses the XML document \a input. Returns TRUE if the parsing was successful,
- otherwise FALSE.
-*/
-/*!
- \fn bool QXmlReader::parse( const QString& systemId )
-
- Parses the XML document at the location \a systemId. Returns TRUE if the
- parsing was successful, otherwise FALSE.
-*/
-
-
-/*!
- \class QXmlSimpleReader qxml.h
- \brief The QXmlSimpleReader class provides an implementation of a simple XML
- reader (i.e. parser).
-
- \module XML
-
- This XML reader is sufficient for simple parsing tasks. Here is a short list
- of the properties of this reader:
- <ul>
- <li> well-formed parser
- <li> does not parse any external entities
- <li> can do namespace processing
- </ul>
-
- For getting started see also the
- <a href="xml-sax.html#quickStart">Quick start</a>.
-*/
-
-//guaranteed not to be a character
-const QChar QXmlSimpleReader::QEOF = QChar((ushort)0xffff);
-
-/*!
- Constructs a simple XML reader.
-*/
-QXmlSimpleReader::QXmlSimpleReader()
-{
- d = new QXmlSimpleReaderPrivate();
- d->locator = new QXmlLocator( this );
-
- entityRes = 0;
- dtdHnd = 0;
- contentHnd = 0;
- errorHnd = 0;
- lexicalHnd = 0;
- declHnd = 0;
-
- // default feature settings
- d->useNamespaces = TRUE;
- d->useNamespacePrefixes = FALSE;
- d->reportWhitespaceCharData = TRUE;
-}
-
-/*!
- Destroys a simple XML reader.
-*/
-QXmlSimpleReader::~QXmlSimpleReader()
-{
- delete d->locator;
- delete d;
-}
-
-/*!
- Gets the state of a feature.
-
- \sa setFeature() hasFeature()
-*/
-bool QXmlSimpleReader::feature( const QString& name, bool *ok ) const
-{
- if ( ok != 0 )
- *ok = TRUE;
- if ( name == "http://xml.org/sax/features/namespaces" ) {
- return d->useNamespaces;
- } else if ( name == "http://xml.org/sax/features/namespace-prefixes" ) {
- return d->useNamespacePrefixes;
- } else if ( name == "http://trolltech.com/xml/features/report-whitespace-only-CharData" ) {
- return d->reportWhitespaceCharData;
- } else {
- qWarning( "Unknown feature %s", name.ascii() );
- if ( ok != 0 )
- *ok = FALSE;
- }
- return FALSE;
-}
-
-/*!
- Sets the state of a feature.
-
- Supported features are:
- <ul>
- <li> http://xml.org/sax/features/namespaces:
- if this feature is TRUE, namespace processing is performed
- <li> http://xml.org/sax/features/namespace-prefixes:
- if this feature is TRUE, the original prefixed names and attributes
- used for namespace declarations are reported
- <li> http://trolltech.com/xml/features/report-whitespace-only-CharData:
- if this feature is TRUE, CharData that consists only of whitespace (and
- no other characters) is not reported via
- QXmlContentHandler::characters()
- </ul>
-
- \sa feature() hasFeature()
-*/
-void QXmlSimpleReader::setFeature( const QString& name, bool value )
-{
- if ( name == "http://xml.org/sax/features/namespaces" ) {
- d->useNamespaces = value;
- } else if ( name == "http://xml.org/sax/features/namespace-prefixes" ) {
- d->useNamespacePrefixes = value;
- } else if ( name == "http://trolltech.com/xml/features/report-whitespace-only-CharData" ) {
- d->reportWhitespaceCharData = value;
- } else {
- qWarning( "Unknown feature %s", name.ascii() );
- }
-}
-
-/*!
- Returns TRUE if the class has a feature named \a feature, otherwise FALSE.
-
- \sa setFeature() feature()
-*/
-bool QXmlSimpleReader::hasFeature( const QString& name ) const
-{
- if ( name == "http://xml.org/sax/features/namespaces" ||
- name == "http://xml.org/sax/features/namespace-prefixes" ||
- name == "http://trolltech.com/xml/features/report-whitespace-only-CharData" ) {
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-/*!
- Returns 0 since this class does not support any properties.
-*/
-void* QXmlSimpleReader::property( const QString&, bool *ok ) const
-{
- if ( ok != 0 )
- *ok = FALSE;
- return 0;
-}
-
-/*!
- Does nothing since this class does not support any properties.
-*/
-void QXmlSimpleReader::setProperty( const QString&, void* )
-{
-}
-
-/*!
- Returns FALSE since this class does not support any properties.
-*/
-bool QXmlSimpleReader::hasProperty( const QString& ) const
-{
- return FALSE;
-}
-
-/*! \reimp */
-void QXmlSimpleReader::setEntityResolver( QXmlEntityResolver* handler )
-{ entityRes = handler; }
-
-/*! \reimp */
-QXmlEntityResolver* QXmlSimpleReader::entityResolver() const
-{ return entityRes; }
-
-/*! \reimp */
-void QXmlSimpleReader::setDTDHandler( QXmlDTDHandler* handler )
-{ dtdHnd = handler; }
-
-/*! \reimp */
-QXmlDTDHandler* QXmlSimpleReader::DTDHandler() const
-{ return dtdHnd; }
-
-/*! \reimp */
-void QXmlSimpleReader::setContentHandler( QXmlContentHandler* handler )
-{ contentHnd = handler; }
-
-/*! \reimp */
-QXmlContentHandler* QXmlSimpleReader::contentHandler() const
-{ return contentHnd; }
-
-/*! \reimp */
-void QXmlSimpleReader::setErrorHandler( QXmlErrorHandler* handler )
-{ errorHnd = handler; }
-
-/*! \reimp */
-QXmlErrorHandler* QXmlSimpleReader::errorHandler() const
-{ return errorHnd; }
-
-/*! \reimp */
-void QXmlSimpleReader::setLexicalHandler( QXmlLexicalHandler* handler )
-{ lexicalHnd = handler; }
-
-/*! \reimp */
-QXmlLexicalHandler* QXmlSimpleReader::lexicalHandler() const
-{ return lexicalHnd; }
-
-/*! \reimp */
-void QXmlSimpleReader::setDeclHandler( QXmlDeclHandler* handler )
-{ declHnd = handler; }
-
-/*! \reimp */
-QXmlDeclHandler* QXmlSimpleReader::declHandler() const
-{ return declHnd; }
-
-
-
-/*! \reimp */
-bool QXmlSimpleReader::parse( const QXmlInputSource& input )
-{
- init( input );
- // call the handler
- if ( contentHnd ) {
- contentHnd->setDocumentLocator( d->locator );
- if ( !contentHnd->startDocument() ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- // parse prolog
- if ( !parseProlog() ) {
- d->error = XMLERR_ERRORPARSINGPROLOG;
- goto parseError;
- }
- // parse element
- if ( !parseElement() ) {
- d->error = XMLERR_ERRORPARSINGMAINELEMENT;
- goto parseError;
- }
- // parse Misc*
- while ( !atEnd() ) {
- if ( !parseMisc() ) {
- d->error = XMLERR_ERRORPARSINGMISC;
- goto parseError;
- }
- }
- // is stack empty?
- if ( !tags.isEmpty() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- // call the handler
- if ( contentHnd ) {
- if ( !contentHnd->endDocument() ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
-
- return TRUE;
-
- // error handling
-
-parseError:
- reportParseError();
- tags.clear();
- return FALSE;
-}
-
-/*!
- Parses the prolog [22].
-*/
-bool QXmlSimpleReader::parseProlog()
-{
- bool xmldecl_possible = TRUE;
- bool doctype_read = FALSE;
-
- const signed char Init = 0;
- const signed char EatWS = 1; // eat white spaces
- const signed char Lt = 2; // '<' read
- const signed char Em = 3; // '!' read
- const signed char DocType = 4; // read doctype
- const signed char Comment = 5; // read comment
- const signed char PI = 6; // read PI
- const signed char Done = 7;
-
- const signed char InpWs = 0;
- const signed char InpLt = 1; // <
- const signed char InpQm = 2; // ?
- const signed char InpEm = 3; // !
- const signed char InpD = 4; // D
- const signed char InpDash = 5; // -
- const signed char InpUnknown = 6;
-
- // use some kind of state machine for parsing
- static signed char table[7][7] = {
- /* InpWs InpLt InpQm InpEm InpD InpDash InpUnknown */
- { EatWS, Lt, -1, -1, -1, -1, -1 }, // Init
- { -1, Lt, -1, -1, -1, -1, -1 }, // EatWS
- { -1, -1, PI, Em, Done, -1, Done }, // Lt
- { -1, -1, -1, -1, DocType, Comment, -1 }, // Em
- { EatWS, Lt, -1, -1, -1, -1, -1 }, // DocType
- { EatWS, Lt, -1, -1, -1, -1, -1 }, // Comment
- { EatWS, Lt, -1, -1, -1, -1, -1 } // PI
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // read input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '<' ) {
- input = InpLt;
- } else if ( c == '?' ) {
- input = InpQm;
- } else if ( c == '!' ) {
- input = InpEm;
- } else if ( c == 'D' ) {
- input = InpD;
- } else if ( c == '-' ) {
- input = InpDash;
- } else {
- input = InpUnknown;
- }
- // get new state
- state = table[state][input];
-
- // in some cases do special actions depending on state
- switch ( state ) {
- case EatWS:
- // XML declaration only on first position possible
- xmldecl_possible = FALSE;
- // eat white spaces
- eat_ws();
- break;
- case Lt:
- // next character
- next();
- break;
- case Em:
- // XML declaration only on first position possible
- xmldecl_possible = FALSE;
- // next character
- next();
- break;
- case DocType:
- parseOk = parseDoctype();
- break;
- case Comment:
- parseOk = parseComment();
- break;
- case PI:
- parseOk = parsePI( xmldecl_possible );
- break;
- }
- // no input is read after this
- switch ( state ) {
- case DocType:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPROLOG;
- goto parseError;
- }
- if ( doctype_read ) {
- d->error = XMLERR_MORETHANONEDOCTYPE;
- goto parseError;
- } else {
- doctype_read = FALSE;
- }
- break;
- case Comment:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPROLOG;
- goto parseError;
- }
- if ( lexicalHnd ) {
- if ( !lexicalHnd->comment( string() ) ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- break;
- case PI:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPROLOG;
- goto parseError;
- }
- // call the handler
- if ( contentHnd ) {
- if ( xmldecl_possible && !d->xmlVersion.isEmpty() ) {
- QString value( "version = '" );
- value += d->xmlVersion;
- value += "'";
- if ( !d->encoding.isEmpty() ) {
- value += " encoding = '";
- value += d->encoding;
- value += "'";
- }
- if ( d->standalone == QXmlSimpleReaderPrivate::Yes ) {
- value += " standalone = 'yes'";
- } else if ( d->standalone == QXmlSimpleReaderPrivate::No ) {
- value += " standalone = 'no'";
- }
- if ( !contentHnd->processingInstruction( "xml", value ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- } else {
- if ( !contentHnd->processingInstruction( name(), string() ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- }
- // XML declaration only on first position possible
- xmldecl_possible = FALSE;
- break;
- case Done:
- return TRUE;
- case -1:
- d->error = XMLERR_ERRORPARSINGELEMENT;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse an element [39].
-
- Precondition: the opening '<' is already read.
-*/
-bool QXmlSimpleReader::parseElement()
-{
- static QString uri, lname, prefix;
- static bool t;
-
- const signed char Init = 0;
- const signed char ReadName = 1;
- const signed char Ws1 = 2;
- const signed char STagEnd = 3;
- const signed char STagEnd2 = 4;
- const signed char ETagBegin = 5;
- const signed char ETagBegin2 = 6;
- const signed char Ws2 = 7;
- const signed char EmptyTag = 8;
- const signed char Attribute = 9;
- const signed char Ws3 = 10;
- const signed char Done = 11;
-
- const signed char InpWs = 0; // whitespace
- const signed char InpNameBe = 1; // is_NameBeginning()
- const signed char InpGt = 2; // >
- const signed char InpSlash = 3; // /
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[11][5] = {
- /* InpWs InpNameBe InpGt InpSlash InpUnknown */
- { -1, ReadName, -1, -1, -1 }, // Init
- { Ws1, Attribute, STagEnd, EmptyTag, -1 }, // ReadName
- { -1, Attribute, STagEnd, EmptyTag, -1 }, // Ws1
- { STagEnd2, STagEnd2, STagEnd2, STagEnd2, STagEnd2 }, // STagEnd
- { -1, -1, -1, ETagBegin, -1 }, // STagEnd2
- { -1, ETagBegin2, -1, -1, -1 }, // ETagBegin
- { Ws2, -1, Done, -1, -1 }, // ETagBegin2
- { -1, -1, Done, -1, -1 }, // Ws2
- { -1, -1, Done, -1, -1 }, // EmptyTag
- { Ws3, Attribute, STagEnd, EmptyTag, -1 }, // Attribute
- { -1, Attribute, STagEnd, EmptyTag, -1 } // Ws3
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // read input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( is_NameBeginning(c) ) {
- input = InpNameBe;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == '/' ) {
- input = InpSlash;
- } else {
- input = InpUnknown;
- }
- // get new state
-//qDebug( "%d -%d(%c)-> %d", state, input, c.latin1(), table[state][input] );
- state = table[state][input];
-
- // in some cases do special actions depending on state
- switch ( state ) {
- case ReadName:
- parseOk = parseName();
- break;
- case Ws1:
- case Ws2:
- case Ws3:
- eat_ws();
- break;
- case STagEnd:
- // call the handler
- if ( contentHnd ) {
- if ( d->useNamespaces ) {
- d->namespaceSupport.processName( tags.top(), FALSE, uri, lname );
- t = contentHnd->startElement( uri, lname, tags.top(), d->attList );
- } else {
- t = contentHnd->startElement( "", "", tags.top(), d->attList );
- }
- if ( !t ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- next();
- break;
- case STagEnd2:
- parseOk = parseContent();
- break;
- case ETagBegin:
- next();
- break;
- case ETagBegin2:
- // get the name of the tag
- parseOk = parseName();
- break;
- case EmptyTag:
- if ( tags.isEmpty() ) {
- d->error = XMLERR_TAGMISMATCH;
- goto parseError;
- }
- if ( !parseElementEmptyTag( t, uri, lname ) )
- goto parseError;
- // next character
- next();
- break;
- case Attribute:
- // get name and value of attribute
- parseOk = parseAttribute();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case ReadName:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- // store it on the stack
- tags.push( name() );
- // empty the attributes
- d->attList.qnameList.clear();
- d->attList.uriList.clear();
- d->attList.localnameList.clear();
- d->attList.valueList.clear();
- // namespace support?
- if ( d->useNamespaces ) {
- d->namespaceSupport.pushContext();
- }
- break;
- case STagEnd2:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCONTENT;
- goto parseError;
- }
- break;
- case ETagBegin2:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- if ( !parseElementETagBegin2( uri, lname ) )
- goto parseError;
- break;
- case Attribute:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGATTRIBUTE;
- goto parseError;
- }
- if ( !parseElementAttribute( prefix, uri, lname ) )
- goto parseError;
- break;
- case Done:
- return TRUE;
- case -1:
- d->error = XMLERR_ERRORPARSINGELEMENT;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-/*!
- Helper to break down the size of the code in the case statement.
- Return FALSE on error, otherwise TRUE.
-*/
-bool QXmlSimpleReader::parseElementEmptyTag( bool &t, QString &uri, QString &lname )
-{
- // pop the stack and call the handler
- if ( contentHnd ) {
- // report startElement first...
- if ( d->useNamespaces ) {
- d->namespaceSupport.processName( tags.top(), FALSE, uri, lname );
- t = contentHnd->startElement( uri, lname, tags.top(), d->attList );
- } else {
- t = contentHnd->startElement( "", "", tags.top(), d->attList );
- }
- if ( !t ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- // ... followed by endElement
- if ( d->useNamespaces ) {
- if ( !contentHnd->endElement( uri, lname,tags.pop() ) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- else {
- if ( !contentHnd->endElement( "","",tags.pop() ) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- // namespace support?
- if ( d->useNamespaces ) {
- QStringList prefixesBefore, prefixesAfter;
- if ( contentHnd ) {
- prefixesBefore = d->namespaceSupport.prefixes();
- }
- d->namespaceSupport.popContext();
- // call the handler for prefix mapping
- if ( contentHnd ) {
- prefixesAfter = d->namespaceSupport.prefixes();
- for ( QStringList::Iterator it = prefixesBefore.begin(); it != prefixesBefore.end(); ++it ) {
- if ( prefixesAfter.contains(*it) == 0 ) {
- if ( !contentHnd->endPrefixMapping( *it ) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- }
- }
- }
- } else {
- tags.pop();
- }
- return TRUE;
-}
-/*!
- Helper to break down the size of the code in the case statement.
- Return FALSE on error, otherwise TRUE.
-*/
-bool QXmlSimpleReader::parseElementETagBegin2( QString &uri, QString &lname )
-{
-
- // pop the stack and compare it with the name
- if ( tags.pop() != name() ) {
- d->error = XMLERR_TAGMISMATCH;
- return FALSE;
- }
- // call the handler
- if ( contentHnd ) {
- if ( d->useNamespaces ) {
- d->namespaceSupport.processName( name(), FALSE, uri, lname );
- if ( !contentHnd->endElement(uri,lname,name()) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- else {
- if ( !contentHnd->endElement("","",name()) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- }
- // namespace support?
- if ( d->useNamespaces ) {
- QStringList prefixesBefore, prefixesAfter;
- if ( contentHnd ) {
- prefixesBefore = d->namespaceSupport.prefixes();
- }
- d->namespaceSupport.popContext();
- // call the handler for prefix mapping
- if ( contentHnd ) {
- prefixesAfter = d->namespaceSupport.prefixes();
- for ( QStringList::Iterator it = prefixesBefore.begin(); it != prefixesBefore.end(); ++it ) {
- if ( prefixesAfter.contains(*it) == 0 ) {
- if ( !contentHnd->endPrefixMapping( *it ) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- }
- }
- }
- return TRUE;
-}
-/*!
- Helper to break down the size of the code in the case statement.
- Return FALSE on error, otherwise TRUE.
-*/
-bool QXmlSimpleReader::parseElementAttribute( QString &prefix, QString &uri, QString &lname )
-{
- // add the attribute to the list
- if ( d->useNamespaces ) {
- // is it a namespace declaration?
- d->namespaceSupport.splitName( name(), prefix, lname );
- if ( prefix == "xmlns" ) {
- // namespace declaration
- d->namespaceSupport.setPrefix( lname, string() );
- if ( d->useNamespacePrefixes ) {
- d->attList.qnameList.append( name() );
- d->attList.uriList.append( "" );
- d->attList.localnameList.append( "" );
- d->attList.valueList.append( string() );
- }
- // call the handler for prefix mapping
- if ( contentHnd ) {
- if ( !contentHnd->startPrefixMapping( lname, string() ) ) {
- d->error = contentHnd->errorString();
- return FALSE;
- }
- }
- } else {
- // no namespace declaration
- d->namespaceSupport.processName( name(), TRUE, uri, lname );
- d->attList.qnameList.append( name() );
- d->attList.uriList.append( uri );
- d->attList.localnameList.append( lname );
- d->attList.valueList.append( string() );
- }
- } else {
- // no namespace support
- d->attList.qnameList.append( name() );
- d->attList.uriList.append( "" );
- d->attList.localnameList.append( "" );
- d->attList.valueList.append( string() );
- }
- return TRUE;
-}
-
-/*!
- Parse a content [43].
-
- A content is only used between tags. If a end tag is found the < is already
- read and the head stand on the '/' of the end tag '</name>'.
-*/
-bool QXmlSimpleReader::parseContent()
-{
- bool charDataRead = FALSE;
-
- const signed char Init = 0;
- const signed char ChD = 1; // CharData
- const signed char ChD1 = 2; // CharData help state
- const signed char ChD2 = 3; // CharData help state
- const signed char Ref = 4; // Reference
- const signed char Lt = 5; // '<' read
- const signed char PI = 6; // PI
- const signed char Elem = 7; // Element
- const signed char Em = 8; // '!' read
- const signed char Com = 9; // Comment
- const signed char CDS = 10; // CDSect
- const signed char CDS1 = 11; // read a CDSect
- const signed char CDS2 = 12; // read a CDSect (help state)
- const signed char CDS3 = 13; // read a CDSect (help state)
- const signed char Done = 14; // finished reading content
-
- const signed char InpLt = 0; // <
- const signed char InpGt = 1; // >
- const signed char InpSlash = 2; // /
- const signed char InpQMark = 3; // ?
- const signed char InpEMark = 4; // !
- const signed char InpAmp = 5; // &
- const signed char InpDash = 6; // -
- const signed char InpOpenB = 7; // [
- const signed char InpCloseB = 8; // ]
- const signed char InpUnknown = 9;
-
- static signed char mapCLT2FSMChar[] = {
- InpUnknown, // white space
- InpUnknown, // %
- InpAmp, // &
- InpGt, // >
- InpLt, // <
- InpSlash, // /
- InpQMark, // ?
- InpEMark, // !
- InpDash, // -
- InpCloseB, // ]
- InpOpenB, // [
- InpUnknown, // =
- InpUnknown, // "
- InpUnknown, // '
- InpUnknown // unknown
- };
-
- // use some kind of state machine for parsing
- static signed char const table[14][10] = {
- /* InpLt InpGt InpSlash InpQMark InpEMark InpAmp InpDash InpOpenB InpCloseB InpUnknown */
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD1, ChD }, // Init
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD1, ChD }, // ChD
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD2, ChD }, // ChD1
- { Lt, -1, ChD, ChD, ChD, Ref, ChD, ChD, ChD2, ChD }, // ChD2
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD, ChD }, // Ref (same as Init)
- { -1, -1, Done, PI, Em, -1, -1, -1, -1, Elem }, // Lt
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD, ChD }, // PI (same as Init)
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD, ChD }, // Elem (same as Init)
- { -1, -1, -1, -1, -1, -1, Com, CDS, -1, -1 }, // Em
- { Lt, ChD, ChD, ChD, ChD, Ref, ChD, ChD, ChD, ChD }, // Com (same as Init)
- { CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS2, CDS1 }, // CDS
- { CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS2, CDS1 }, // CDS1
- { CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS3, CDS1 }, // CDS2
- { CDS1, Init, CDS1, CDS1, CDS1, CDS1, CDS1, CDS1, CDS3, CDS1 } // CDS3
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input (use lookup-table instead of nested ifs for performance
- // reasons)
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c.row() ) {
- input = InpUnknown;
- } else {
- input = mapCLT2FSMChar[ charLookupTable[ c.cell() ] ];
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Init:
- // next character
- next();
- break;
- case ChD:
- // on first call: clear string
- if ( !charDataRead ) {
- charDataRead = TRUE;
- stringClear();
- }
- stringAddC();
- next();
- break;
- case ChD1:
- // on first call: clear string
- if ( !charDataRead ) {
- charDataRead = TRUE;
- stringClear();
- }
- stringAddC();
- next();
- break;
- case ChD2:
- stringAddC();
- next();
- break;
- case Ref:
- if ( !charDataRead) {
- // reference may be CharData; so clear string to be safe
- stringClear();
- parseOk = parseReference( charDataRead, InContent );
- } else {
- bool tmp;
- parseOk = parseReference( tmp, InContent );
- }
- break;
- case Lt:
- // call the handler for CharData
- if ( contentHnd ) {
- if ( charDataRead ) {
- if ( d->reportWhitespaceCharData || !string().simplifyWhiteSpace().isEmpty() ) {
- if ( !contentHnd->characters( string() ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- }
- }
- charDataRead = FALSE;
- // next character
- next();
- break;
- case PI:
- parseOk = parsePI();
- break;
- case Elem:
- parseOk = parseElement();
- break;
- case Em:
- // next character
- next();
- break;
- case Com:
- parseOk = parseComment();
- break;
- case CDS:
- parseOk = parseString( "[CDATA[" );
- break;
- case CDS1:
- // read one character and add it
- stringAddC();
- next();
- break;
- case CDS2:
- // skip ']'
- next();
- break;
- case CDS3:
- // skip ']'...
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Ref:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
- break;
- case PI:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPI;
- goto parseError;
- }
- // call the handler
- if ( contentHnd ) {
- if ( !contentHnd->processingInstruction(name(),string()) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- break;
- case Elem:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGELEMENT;
- goto parseError;
- }
- break;
- case Com:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCOMMENT;
- goto parseError;
- }
- if ( lexicalHnd ) {
- if ( !lexicalHnd->comment( string() ) ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- break;
- case CDS:
- if( !parseOk ) {
- d->error = XMLERR_CDSECTHEADEREXPECTED;
- goto parseError;
- }
- // empty string
- stringClear();
- break;
- case CDS2:
- if (c != ']') {
- stringAddC( ']' );
- }
- break;
- case CDS3:
- // test if this skipping was legal
- if ( c == '>' ) {
- // the end of the CDSect
- if ( lexicalHnd ) {
- if ( !lexicalHnd->startCDATA() ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- if ( contentHnd ) {
- if ( !contentHnd->characters( string() ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- if ( lexicalHnd ) {
- if ( !lexicalHnd->endCDATA() ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- } else if (c == ']') {
- // three or more ']'
- stringAddC( ']' );
- } else {
- // after ']]' comes another character
- stringAddC( ']' );
- stringAddC( ']' );
- }
- break;
- case Done:
- // call the handler for CharData
- if ( contentHnd ) {
- if ( charDataRead ) {
- if ( d->reportWhitespaceCharData || !string().simplifyWhiteSpace().isEmpty() ) {
- if ( !contentHnd->characters( string() ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- }
- }
- // Done
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_ERRORPARSINGCONTENT;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse Misc [27].
-*/
-bool QXmlSimpleReader::parseMisc()
-{
- const signed char Init = 0;
- const signed char Lt = 1; // '<' was read
- const signed char Comment = 2; // read comment
- const signed char eatWS = 3; // eat whitespaces
- const signed char PI = 4; // read PI
- const signed char Comment2 = 5; // read comment
-
- const signed char InpWs = 0; // S
- const signed char InpLt = 1; // <
- const signed char InpQm = 2; // ?
- const signed char InpEm = 3; // !
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[3][5] = {
- /* InpWs InpLt InpQm InpEm InpUnknown */
- { eatWS, Lt, -1, -1, -1 }, // Init
- { -1, -1, PI, Comment, -1 }, // Lt
- { -1, -1, -1, -1, Comment2 } // Comment
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '<' ) {
- input = InpLt;
- } else if ( c == '?' ) {
- input = InpQm;
- } else if ( c == '!' ) {
- input = InpEm;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case eatWS:
- eat_ws();
- break;
- case Lt:
- next();
- break;
- case PI:
- parseOk = parsePI();
- break;
- case Comment:
- next();
- break;
- case Comment2:
- parseOk = parseComment();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case eatWS:
- return TRUE;
- case PI:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPI;
- goto parseError;
- }
- if ( contentHnd ) {
- if ( !contentHnd->processingInstruction(name(),string()) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- return TRUE;
- case Comment2:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCOMMENT;
- goto parseError;
- }
- if ( lexicalHnd ) {
- if ( !lexicalHnd->comment( string() ) ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a processing instruction [16].
-
- If xmldec is TRUE, it tries to parse a PI or a XML declaration [23].
-
- Precondition: the beginning '<' of the PI is already read and the head stand
- on the '?' of '<?'.
-
- If this function was successful, the head-position is on the first
- character after the PI.
-*/
-bool QXmlSimpleReader::parsePI( bool xmldecl )
-{
- const signed char Init = 0;
- const signed char QmI = 1; // ? was read
- const signed char Name = 2; // read Name
- const signed char XMLDecl = 3; // read XMLDecl
- const signed char Ws1 = 4; // eat ws after "xml" of XMLDecl
- const signed char PI = 5; // read PI
- const signed char Ws2 = 6; // eat ws after Name of PI
- const signed char Version = 7; // read versionInfo
- const signed char Ws3 = 8; // eat ws after versionInfo
- const signed char EorSD = 9; // read EDecl or SDDecl
- const signed char Ws4 = 10; // eat ws after EDecl or SDDecl
- const signed char SD = 11; // read SDDecl
- const signed char Ws5 = 12; // eat ws after SDDecl
- const signed char ADone = 13; // almost done
- const signed char Char = 14; // Char was read
- const signed char Qm = 15; // Qm was read
- const signed char Done = 16; // finished reading content
-
- const signed char InpWs = 0; // whitespace
- const signed char InpNameBe = 1; // is_nameBeginning()
- const signed char InpGt = 2; // >
- const signed char InpQm = 3; // ?
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[16][5] = {
- /* InpWs, InpNameBe InpGt InpQm InpUnknown */
- { -1, -1, -1, QmI, -1 }, // Init
- { -1, Name, -1, -1, -1 }, // QmI
- { -1, -1, -1, -1, -1 }, // Name (this state is left not through input)
- { Ws1, -1, -1, -1, -1 }, // XMLDecl
- { -1, Version, -1, -1, -1 }, // Ws1
- { Ws2, -1, -1, Qm, -1 }, // PI
- { Char, Char, Char, Qm, Char }, // Ws2
- { Ws3, -1, -1, ADone, -1 }, // Version
- { -1, EorSD, -1, ADone, -1 }, // Ws3
- { Ws4, -1, -1, ADone, -1 }, // EorSD
- { -1, SD, -1, ADone, -1 }, // Ws4
- { Ws5, -1, -1, ADone, -1 }, // SD
- { -1, -1, -1, ADone, -1 }, // Ws5
- { -1, -1, Done, -1, -1 }, // ADone
- { Char, Char, Char, Qm, Char }, // Char
- { Char, Char, Done, Qm, Char }, // Qm
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( is_NameBeginning(c) ) {
- input = InpNameBe;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == '?' ) {
- input = InpQm;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case QmI:
- next();
- break;
- case Name:
- parseOk = parseName();
- break;
- case Ws1:
- case Ws2:
- case Ws3:
- case Ws4:
- case Ws5:
- eat_ws();
- break;
- case Version:
- parseOk = parseAttribute();
- break;
- case EorSD:
- parseOk = parseAttribute();
- break;
- case SD:
- // get the SDDecl (syntax like an attribute)
- if ( d->standalone != QXmlSimpleReaderPrivate::Unknown ) {
- // already parsed the standalone declaration
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- parseOk = parseAttribute();
- break;
- case ADone:
- next();
- break;
- case Char:
- stringAddC();
- next();
- break;
- case Qm:
- // skip the '?'
- next();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Name:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- // test what name was read and determine the next state
- // (not very beautiful, I admit)
- if ( name().lower() == "xml" ) {
- if ( xmldecl && name()=="xml" ) {
- state = XMLDecl;
- } else {
- d->error = XMLERR_INVALIDNAMEFORPI;
- goto parseError;
- }
- } else {
- state = PI;
- stringClear();
- }
- break;
- case Version:
- // get version (syntax like an attribute)
- if ( !parseOk ) {
- d->error = XMLERR_VERSIONEXPECTED;
- goto parseError;
- }
- if ( name() != "version" ) {
- d->error = XMLERR_VERSIONEXPECTED;
- goto parseError;
- }
- d->xmlVersion = string();
- break;
- case EorSD:
- // get the EDecl or SDDecl (syntax like an attribute)
- if ( !parseOk ) {
- d->error = XMLERR_EDECLORSDDECLEXPECTED;
- goto parseError;
- }
- if ( name() == "standalone" ) {
- if ( string()=="yes" ) {
- d->standalone = QXmlSimpleReaderPrivate::Yes;
- } else if ( string()=="no" ) {
- d->standalone = QXmlSimpleReaderPrivate::No;
- } else {
- d->error = XMLERR_WRONGVALUEFORSDECL;
- goto parseError;
- }
- } else if ( name() == "encoding" ) {
- d->encoding = string();
- } else {
- d->error = XMLERR_EDECLORSDDECLEXPECTED;
- goto parseError;
- }
- break;
- case SD:
- if ( !parseOk ) {
- d->error = XMLERR_SDDECLEXPECTED;
- goto parseError;
- }
- if ( name() != "standalone" ) {
- d->error = XMLERR_SDDECLEXPECTED;
- goto parseError;
- }
- if ( string()=="yes" ) {
- d->standalone = QXmlSimpleReaderPrivate::Yes;
- } else if ( string()=="no" ) {
- d->standalone = QXmlSimpleReaderPrivate::No;
- } else {
- d->error = XMLERR_WRONGVALUEFORSDECL;
- goto parseError;
- }
- break;
- case Qm:
- // test if the skipping was legal
- if ( c != '>' ) {
- stringAddC( '?' );
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a document type definition (doctypedecl [28]).
-
- Precondition: the beginning '<!' of the doctype is already read the head
- stands on the 'D' of '<!DOCTYPE'.
-
- If this function was successful, the head-position is on the first
- character after the document type definition.
-*/
-bool QXmlSimpleReader::parseDoctype()
-{
- // some init-stuff
- d->systemId = QString::null;
- d->publicId = QString::null;
-
- const signed char Init = 0;
- const signed char Doctype = 1; // read the doctype
- const signed char Ws1 = 2; // eat_ws
- const signed char Doctype2 = 3; // read the doctype, part 2
- const signed char Ws2 = 4; // eat_ws
- const signed char Sys = 5; // read SYSTEM
- const signed char Ws3 = 6; // eat_ws
- const signed char MP = 7; // markupdecl or PEReference
- const signed char PER = 8; // PERReference
- const signed char Mup = 9; // markupdecl
- const signed char Ws4 = 10; // eat_ws
- const signed char MPE = 11; // end of markupdecl or PEReference
- const signed char Done = 12;
-
- const signed char InpWs = 0;
- const signed char InpD = 1; // 'D'
- const signed char InpS = 2; // 'S' or 'P'
- const signed char InpOB = 3; // [
- const signed char InpCB = 4; // ]
- const signed char InpPer = 5; // %
- const signed char InpGt = 6; // >
- const signed char InpUnknown = 7;
-
- // use some kind of state machine for parsing
- static signed char table[12][8] = {
- /* InpWs, InpD InpS InpOB InpCB InpPer InpGt InpUnknown */
- { -1, Doctype, -1, -1, -1, -1, -1, -1 }, // Init
- { Ws1, Doctype2, Doctype2, -1, -1, -1, -1, Doctype2 }, // Doctype
- { -1, Doctype2, Doctype2, -1, -1, -1, -1, Doctype2 }, // Ws1
- { Ws2, -1, Sys, MP, -1, -1, Done, -1 }, // Doctype2
- { -1, -1, Sys, MP, -1, -1, Done, -1 }, // Ws2
- { Ws3, -1, -1, MP, -1, -1, Done, -1 }, // Sys
- { -1, -1, -1, MP, -1, -1, Done, -1 }, // Ws3
- { -1, -1, -1, -1, MPE, PER, -1, Mup }, // MP
- { Ws4, -1, -1, -1, MPE, PER, -1, Mup }, // PER
- { Ws4, -1, -1, -1, MPE, PER, -1, Mup }, // Mup
- { -1, -1, -1, -1, MPE, PER, -1, Mup }, // Ws4
- { -1, -1, -1, -1, -1, -1, Done, -1 } // MPE
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == 'D' ) {
- input = InpD;
- } else if ( c == 'S' ) {
- input = InpS;
- } else if ( c == 'P' ) {
- input = InpS;
- } else if ( c == '[' ) {
- input = InpOB;
- } else if ( c == ']' ) {
- input = InpCB;
- } else if ( c == '%' ) {
- input = InpPer;
- } else if ( c == '>' ) {
- input = InpGt;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Doctype:
- parseOk = parseString( "DOCTYPE" );
- break;
- case Ws1:
- case Ws2:
- case Ws3:
- case Ws4:
- eat_ws();
- break;
- case Doctype2:
- parseName();
- break;
- case Sys:
- parseOk = parseExternalID();
- break;
- case MP:
- next_eat_ws();
- break;
- case PER:
- parseOk = parsePEReference( InDTD );
- break;
- case Mup:
- parseOk = parseMarkupdecl();
- break;
- case MPE:
- next_eat_ws();
- break;
- case Done:
- if ( lexicalHnd ) {
- if ( !lexicalHnd->endDTD() ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Doctype:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- if ( !is_S(c) ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- break;
- case Doctype2:
- d->doctype = name();
- if ( lexicalHnd ) {
- if ( !lexicalHnd->startDTD( d->doctype, d->publicId, d->systemId ) ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- break;
- case Sys:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- break;
- case PER:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- break;
- case Mup:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a ExternalID [75].
-
- If allowPublicID is TRUE parse ExternalID [75] or PublicID [83].
-*/
-bool QXmlSimpleReader::parseExternalID( bool allowPublicID )
-{
- // some init-stuff
- d->systemId = QString::null;
- d->publicId = QString::null;
-
- const signed char Init = 0;
- const signed char Sys = 1; // parse 'SYSTEM'
- const signed char SysWS = 2; // parse the whitespace after 'SYSTEM'
- const signed char SysSQ = 3; // parse SystemLiteral with '
- const signed char SysSQ2 = 4; // parse SystemLiteral with '
- const signed char SysDQ = 5; // parse SystemLiteral with "
- const signed char SysDQ2 = 6; // parse SystemLiteral with "
- const signed char Pub = 7; // parse 'PUBLIC'
- const signed char PubWS = 8; // parse the whitespace after 'PUBLIC'
- const signed char PubSQ = 9; // parse PubidLiteral with '
- const signed char PubSQ2 = 10; // parse PubidLiteral with '
- const signed char PubDQ = 11; // parse PubidLiteral with "
- const signed char PubDQ2 = 12; // parse PubidLiteral with "
- const signed char PubE = 13; // finished parsing the PubidLiteral
- const signed char PubWS2 = 14; // parse the whitespace after the PubidLiteral
- const signed char PDone = 15; // done if allowPublicID is TRUE
- const signed char Done = 16;
-
- const signed char InpSQ = 0; // '
- const signed char InpDQ = 1; // "
- const signed char InpS = 2; // S
- const signed char InpP = 3; // P
- const signed char InpWs = 4; // white space
- const signed char InpUnknown = 5;
-
- // use some kind of state machine for parsing
- static signed char table[15][6] = {
- /* InpSQ InpDQ InpS InpP InpWs InpUnknown */
- { -1, -1, Sys, Pub, -1, -1 }, // Init
- { -1, -1, -1, -1, SysWS, -1 }, // Sys
- { SysSQ, SysDQ, -1, -1, -1, -1 }, // SysWS
- { Done, SysSQ2, SysSQ2, SysSQ2, SysSQ2, SysSQ2 }, // SysSQ
- { Done, SysSQ2, SysSQ2, SysSQ2, SysSQ2, SysSQ2 }, // SysSQ2
- { SysDQ2, Done, SysDQ2, SysDQ2, SysDQ2, SysDQ2 }, // SysDQ
- { SysDQ2, Done, SysDQ2, SysDQ2, SysDQ2, SysDQ2 }, // SysDQ2
- { -1, -1, -1, -1, PubWS, -1 }, // Pub
- { PubSQ, PubDQ, -1, -1, -1, -1 }, // PubWS
- { PubE, -1, PubSQ2, PubSQ2, PubSQ2, PubSQ2 }, // PubSQ
- { PubE, -1, PubSQ2, PubSQ2, PubSQ2, PubSQ2 }, // PubSQ2
- { -1, PubE, PubDQ2, PubDQ2, PubDQ2, PubDQ2 }, // PubDQ
- { -1, PubE, PubDQ2, PubDQ2, PubDQ2, PubDQ2 }, // PubDQ2
- { PDone, PDone, PDone, PDone, PubWS2, PDone }, // PubE
- { SysSQ, SysDQ, PDone, PDone, PDone, PDone } // PubWS2
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '\'' ) {
- input = InpSQ;
- } else if ( c == '"' ) {
- input = InpDQ;
- } else if ( c == 'S' ) {
- input = InpS;
- } else if ( c == 'P' ) {
- input = InpP;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Sys:
- parseOk = parseString( "SYSTEM" );
- break;
- case SysWS:
- eat_ws();
- break;
- case SysSQ:
- case SysDQ:
- stringClear();
- next();
- break;
- case SysSQ2:
- case SysDQ2:
- stringAddC();
- next();
- break;
- case Pub:
- parseOk = parseString( "PUBLIC" );
- break;
- case PubWS:
- eat_ws();
- break;
- case PubSQ:
- case PubDQ:
- stringClear();
- next();
- break;
- case PubSQ2:
- case PubDQ2:
- stringAddC();
- next();
- break;
- case PubE:
- next();
- break;
- case PubWS2:
- d->publicId = string();
- eat_ws();
- break;
- case Done:
- d->systemId = string();
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Sys:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Pub:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case PDone:
- if ( allowPublicID ) {
- d->publicId = string();
- return TRUE;
- } else {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a markupdecl [29].
-*/
-bool QXmlSimpleReader::parseMarkupdecl()
-{
- const signed char Init = 0;
- const signed char Lt = 1; // < was read
- const signed char Em = 2; // ! was read
- const signed char CE = 3; // E was read
- const signed char Qm = 4; // ? was read
- const signed char Dash = 5; // - was read
- const signed char CA = 6; // A was read
- const signed char CEL = 7; // EL was read
- const signed char CEN = 8; // EN was read
- const signed char CN = 9; // N was read
- const signed char Done = 10;
-
- const signed char InpLt = 0; // <
- const signed char InpQm = 1; // ?
- const signed char InpEm = 2; // !
- const signed char InpDash = 3; // -
- const signed char InpA = 4; // A
- const signed char InpE = 5; // E
- const signed char InpL = 6; // L
- const signed char InpN = 7; // N
- const signed char InpUnknown = 8;
-
- // use some kind of state machine for parsing
- static signed char table[4][9] = {
- /* InpLt InpQm InpEm InpDash InpA InpE InpL InpN InpUnknown */
- { Lt, -1, -1, -1, -1, -1, -1, -1, -1 }, // Init
- { -1, Qm, Em, -1, -1, -1, -1, -1, -1 }, // Lt
- { -1, -1, -1, Dash, CA, CE, -1, CN, -1 }, // Em
- { -1, -1, -1, -1, -1, -1, CEL, CEN, -1 } // CE
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == '<' ) {
- input = InpLt;
- } else if ( c == '?' ) {
- input = InpQm;
- } else if ( c == '!' ) {
- input = InpEm;
- } else if ( c == '-' ) {
- input = InpDash;
- } else if ( c == 'A' ) {
- input = InpA;
- } else if ( c == 'E' ) {
- input = InpE;
- } else if ( c == 'L' ) {
- input = InpL;
- } else if ( c == 'N' ) {
- input = InpN;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Lt:
- next();
- break;
- case Em:
- next();
- break;
- case CE:
- next();
- break;
- case Qm:
- parseOk = parsePI();
- break;
- case Dash:
- parseOk = parseComment();
- break;
- case CA:
- parseOk = parseAttlistDecl();
- break;
- case CEL:
- parseOk = parseElementDecl();
- break;
- case CEN:
- parseOk = parseEntityDecl();
- break;
- case CN:
- parseOk = parseNotationDecl();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Qm:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGPI;
- goto parseError;
- }
- if ( contentHnd ) {
- if ( !contentHnd->processingInstruction(name(),string()) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- return TRUE;
- case Dash:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCOMMENT;
- goto parseError;
- }
- if ( lexicalHnd ) {
- if ( !lexicalHnd->comment( string() ) ) {
- d->error = lexicalHnd->errorString();
- goto parseError;
- }
- }
- return TRUE;
- case CA:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGATTLISTDECL;
- goto parseError;
- }
- return TRUE;
- case CEL:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGELEMENTDECL;
- goto parseError;
- }
- return TRUE;
- case CEN:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGENTITYDECL;
- goto parseError;
- }
- return TRUE;
- case CN:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNOTATIONDECL;
- goto parseError;
- }
- return TRUE;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a PEReference [69]
-*/
-bool QXmlSimpleReader::parsePEReference( EntityRecognitionContext context )
-{
- const signed char Init = 0;
- const signed char Next = 1;
- const signed char Name = 2;
- const signed char Done = 3;
-
- const signed char InpSemi = 0; // ;
- const signed char InpPer = 1; // %
- const signed char InpUnknown = 2;
-
- // use some kind of state machine for parsing
- static signed char table[3][3] = {
- /* InpSemi InpPer InpUnknown */
- { -1, Next, -1 }, // Init
- { -1, -1, Name }, // Next
- { Done, -1, -1 } // Name
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == ';' ) {
- input = InpSemi;
- } else if ( c == '%' ) {
- input = InpPer;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Next:
- next();
- break;
- case Name:
- parseOk = parseName( TRUE );
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Name:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- if ( d->parameterEntities.find( ref() ) == d->parameterEntities.end() ) {
- // ### skip it???
- if ( contentHnd ) {
- if ( !contentHnd->skippedEntity( QString("%") + ref() ) ) {
- d->error = contentHnd->errorString();
- goto parseError;
- }
- }
- } else {
- if ( context == InEntityValue ) {
- // Included in literal
- xmlRef = d->parameterEntities.find( ref() )
- .data().replace( QRegExp("\""), "&quot;" ).replace( QRegExp("'"), "&apos;" )
- + xmlRef;
- } else if ( context == InDTD ) {
- // Included as PE
- xmlRef = QString(" ") +
- d->parameterEntities.find( ref() ).data() +
- QString(" ") + xmlRef;
- }
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a AttlistDecl [52].
-
- Precondition: the beginning '<!' is already read and the head
- stands on the 'A' of '<!ATTLIST'
-*/
-bool QXmlSimpleReader::parseAttlistDecl()
-{
- const signed char Init = 0;
- const signed char Attlist = 1; // parse the string "ATTLIST"
- const signed char Ws = 2; // whitespace read
- const signed char Name = 3; // parse name
- const signed char Ws1 = 4; // whitespace read
- const signed char Attdef = 5; // parse the AttDef
- const signed char Ws2 = 6; // whitespace read
- const signed char Atttype = 7; // parse the AttType
- const signed char Ws3 = 8; // whitespace read
- const signed char DDecH = 9; // DefaultDecl with #
- const signed char DefReq = 10; // parse the string "REQUIRED"
- const signed char DefImp = 11; // parse the string "IMPLIED"
- const signed char DefFix = 12; // parse the string "FIXED"
- const signed char Attval = 13; // parse the AttValue
- const signed char Ws4 = 14; // whitespace read
- const signed char Done = 15;
-
- const signed char InpWs = 0; // white space
- const signed char InpGt = 1; // >
- const signed char InpHash = 2; // #
- const signed char InpA = 3; // A
- const signed char InpI = 4; // I
- const signed char InpF = 5; // F
- const signed char InpR = 6; // R
- const signed char InpUnknown = 7;
-
- // use some kind of state machine for parsing
- static signed char table[15][8] = {
- /* InpWs InpGt InpHash InpA InpI InpF InpR InpUnknown */
- { -1, -1, -1, Attlist, -1, -1, -1, -1 }, // Init
- { Ws, -1, -1, -1, -1, -1, -1, -1 }, // Attlist
- { -1, -1, -1, Name, Name, Name, Name, Name }, // Ws
- { Ws1, Done, Attdef, Attdef, Attdef, Attdef, Attdef, Attdef }, // Name
- { -1, Done, Attdef, Attdef, Attdef, Attdef, Attdef, Attdef }, // Ws1
- { Ws2, -1, -1, -1, -1, -1, -1, -1 }, // Attdef
- { -1, Atttype, Atttype, Atttype, Atttype, Atttype, Atttype, Atttype }, // Ws2
- { Ws3, -1, -1, -1, -1, -1, -1, -1 }, // Atttype
- { -1, Attval, DDecH, Attval, Attval, Attval, Attval, Attval }, // Ws3
- { -1, -1, -1, -1, DefImp, DefFix, DefReq, -1 }, // DDecH
- { Ws4, Ws4, -1, -1, -1, -1, -1, -1 }, // DefReq
- { Ws4, Ws4, -1, -1, -1, -1, -1, -1 }, // DefImp
- { Ws3, -1, -1, -1, -1, -1, -1, -1 }, // DefFix
- { Ws4, Ws4, -1, -1, -1, -1, -1, -1 }, // Attval
- { -1, Done, Attdef, Attdef, Attdef, Attdef, Attdef, Attdef } // Ws4
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == '#' ) {
- input = InpHash;
- } else if ( c == 'A' ) {
- input = InpA;
- } else if ( c == 'I' ) {
- input = InpI;
- } else if ( c == 'F' ) {
- input = InpF;
- } else if ( c == 'R' ) {
- input = InpR;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Attlist:
- parseOk = parseString( "ATTLIST" );
- break;
- case Ws:
- case Ws1:
- case Ws2:
- case Ws3:
- eat_ws();
- break;
- case Name:
- parseOk = parseName();
- break;
- case Attdef:
- parseOk = parseName();
- break;
- case Atttype:
- parseOk = parseAttType();
- break;
- case DDecH:
- next();
- break;
- case DefReq:
- parseOk = parseString( "REQUIRED" );
- break;
- case DefImp:
- parseOk = parseString( "IMPLIED" );
- break;
- case DefFix:
- parseOk = parseString( "FIXED" );
- break;
- case Attval:
- parseOk = parseAttValue();
- break;
- case Ws4:
- if ( declHnd ) {
- // TODO: not all values are computed yet...
- if ( !declHnd->attributeDecl( d->attDeclEName, d->attDeclAName, "", "", "" ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- eat_ws();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Attlist:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Name:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- d->attDeclEName = name();
- break;
- case Attdef:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- d->attDeclAName = name();
- break;
- case Atttype:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGATTTYPE;
- goto parseError;
- }
- break;
- case DefReq:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case DefImp:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case DefFix:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Attval:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGATTVALUE;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a AttType [54]
-*/
-bool QXmlSimpleReader::parseAttType()
-{
- const signed char Init = 0;
- const signed char ST = 1; // StringType
- const signed char TTI = 2; // TokenizedType starting with 'I'
- const signed char TTI2 = 3; // TokenizedType helpstate
- const signed char TTI3 = 4; // TokenizedType helpstate
- const signed char TTE = 5; // TokenizedType starting with 'E'
- const signed char TTEY = 6; // TokenizedType starting with 'ENTITY'
- const signed char TTEI = 7; // TokenizedType starting with 'ENTITI'
- const signed char N = 8; // N read (TokenizedType or Notation)
- const signed char TTNM = 9; // TokenizedType starting with 'NM'
- const signed char TTNM2 = 10; // TokenizedType helpstate
- const signed char NO = 11; // Notation
- const signed char NO2 = 12; // Notation helpstate
- const signed char NO3 = 13; // Notation helpstate
- const signed char NOName = 14; // Notation, read name
- const signed char NO4 = 15; // Notation helpstate
- const signed char EN = 16; // Enumeration
- const signed char ENNmt = 17; // Enumeration, read Nmtoken
- const signed char EN2 = 18; // Enumeration helpstate
- const signed char ADone = 19; // almost done (make next and accept)
- const signed char Done = 20;
-
- const signed char InpWs = 0; // whitespace
- const signed char InpOp = 1; // (
- const signed char InpCp = 2; // )
- const signed char InpPipe = 3; // |
- const signed char InpC = 4; // C
- const signed char InpE = 5; // E
- const signed char InpI = 6; // I
- const signed char InpM = 7; // M
- const signed char InpN = 8; // N
- const signed char InpO = 9; // O
- const signed char InpR = 10; // R
- const signed char InpS = 11; // S
- const signed char InpY = 12; // Y
- const signed char InpUnknown = 13;
-
- // use some kind of state machine for parsing
- static signed char table[19][14] = {
- /* InpWs InpOp InpCp InpPipe InpC InpE InpI InpM InpN InpO InpR InpS InpY InpUnknown */
- { -1, EN, -1, -1, ST, TTE, TTI, -1, N, -1, -1, -1, -1, -1 }, // Init
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done }, // ST
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, TTI2, Done, Done, Done }, // TTI
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, TTI3, Done, Done }, // TTI2
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done }, // TTI3
- { -1, -1, -1, -1, -1, -1, TTEI, -1, -1, -1, -1, -1, TTEY, -1 }, // TTE
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done }, // TTEY
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done }, // TTEI
- { -1, -1, -1, -1, -1, -1, -1, TTNM, -1, NO, -1, -1, -1, -1 }, // N
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, TTNM2, Done, Done }, // TTNM
- { Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done, Done }, // TTNM2
- { NO2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // NO
- { -1, NO3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // NO2
- { NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName, NOName }, // NO3
- { NO4, -1, ADone, NO3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // NOName
- { -1, -1, ADone, NO3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // NO4
- { -1, -1, ENNmt, -1, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt, ENNmt }, // EN
- { EN2, -1, ADone, EN, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // ENNmt
- { -1, -1, ADone, EN, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } // EN2
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '(' ) {
- input = InpOp;
- } else if ( c == ')' ) {
- input = InpCp;
- } else if ( c == '|' ) {
- input = InpPipe;
- } else if ( c == 'C' ) {
- input = InpC;
- } else if ( c == 'E' ) {
- input = InpE;
- } else if ( c == 'I' ) {
- input = InpI;
- } else if ( c == 'M' ) {
- input = InpM;
- } else if ( c == 'N' ) {
- input = InpN;
- } else if ( c == 'O' ) {
- input = InpO;
- } else if ( c == 'R' ) {
- input = InpR;
- } else if ( c == 'S' ) {
- input = InpS;
- } else if ( c == 'Y' ) {
- input = InpY;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case ST:
- parseOk = parseString( "CDATA" );
- break;
- case TTI:
- parseOk = parseString( "ID" );
- break;
- case TTI2:
- parseOk = parseString( "REF" );
- break;
- case TTI3:
- next(); // S
- break;
- case TTE:
- parseOk = parseString( "ENTIT" );
- break;
- case TTEY:
- next(); // Y
- break;
- case TTEI:
- parseOk = parseString( "IES" );
- break;
- case N:
- next(); // N
- break;
- case TTNM:
- parseOk = parseString( "MTOKEN" );
- break;
- case TTNM2:
- next(); // S
- break;
- case NO:
- parseOk = parseString( "OTATION" );
- break;
- case NO2:
- eat_ws();
- break;
- case NO3:
- next_eat_ws();
- break;
- case NOName:
- parseOk = parseName();
- break;
- case NO4:
- eat_ws();
- break;
- case EN:
- next_eat_ws();
- break;
- case ENNmt:
- parseOk = parseNmtoken();
- break;
- case EN2:
- eat_ws();
- break;
- case ADone:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case ST:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case TTI:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case TTI2:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case TTE:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case TTEI:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case TTNM:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case NO:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case NOName:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case ENNmt:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNMTOKEN;
- goto parseError;
- }
- break;
- case ADone:
- return TRUE;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a AttValue [10]
-
- Precondition: the head stands on the beginning " or '
-
- If this function was successful, the head stands on the first
- character after the closing " or ' and the value of the attribute
- is in string().
-*/
-bool QXmlSimpleReader::parseAttValue()
-{
- bool tmp;
-
- const signed char Init = 0;
- const signed char Dq = 1; // double quotes were read
- const signed char DqRef = 2; // read references in double quotes
- const signed char DqC = 3; // signed character read in double quotes
- const signed char Sq = 4; // single quotes were read
- const signed char SqRef = 5; // read references in single quotes
- const signed char SqC = 6; // signed character read in single quotes
- const signed char Done = 7;
-
- const signed char InpDq = 0; // "
- const signed char InpSq = 1; // '
- const signed char InpAmp = 2; // &
- const signed char InpLt = 3; // <
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[7][5] = {
- /* InpDq InpSq InpAmp InpLt InpUnknown */
- { Dq, Sq, -1, -1, -1 }, // Init
- { Done, DqC, DqRef, -1, DqC }, // Dq
- { Done, DqC, DqRef, -1, DqC }, // DqRef
- { Done, DqC, DqRef, -1, DqC }, // DqC
- { SqC, Done, SqRef, -1, SqC }, // Sq
- { SqC, Done, SqRef, -1, SqC }, // SqRef
- { SqC, Done, SqRef, -1, SqC } // SqRef
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == '"' ) {
- input = InpDq;
- } else if ( c == '\'' ) {
- input = InpSq;
- } else if ( c == '&' ) {
- input = InpAmp;
- } else if ( c == '<' ) {
- input = InpLt;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Dq:
- case Sq:
- stringClear();
- next();
- break;
- case DqRef:
- case SqRef:
- parseOk = parseReference( tmp, InAttributeValue );
- break;
- case DqC:
- case SqC:
- stringAddC();
- next();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case DqRef:
- case SqRef:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a elementdecl [45].
-
- Precondition: the beginning '<!E' is already read and the head
- stands on the 'L' of '<!ELEMENT'
-*/
-bool QXmlSimpleReader::parseElementDecl()
-{
- const signed char Init = 0;
- const signed char Elem = 1; // parse the beginning string
- const signed char Ws1 = 2; // whitespace required
- const signed char Nam = 3; // parse Name
- const signed char Ws2 = 4; // whitespace required
- const signed char Empty = 5; // read EMPTY
- const signed char Any = 6; // read ANY
- const signed char Cont = 7; // read contentspec (except ANY or EMPTY)
- const signed char Mix = 8; // read Mixed
- const signed char Mix2 = 9; //
- const signed char Mix3 = 10; //
- const signed char MixN1 = 11; //
- const signed char MixN2 = 12; //
- const signed char MixN3 = 13; //
- const signed char MixN4 = 14; //
- const signed char Cp = 15; // parse cp
- const signed char Cp2 = 16; //
- const signed char WsD = 17; // eat whitespace before Done
- const signed char Done = 18;
-
- const signed char InpWs = 0;
- const signed char InpGt = 1; // >
- const signed char InpPipe = 2; // |
- const signed char InpOp = 3; // (
- const signed char InpCp = 4; // )
- const signed char InpHash = 5; // #
- const signed char InpQm = 6; // ?
- const signed char InpAst = 7; // *
- const signed char InpPlus = 8; // +
- const signed char InpA = 9; // A
- const signed char InpE = 10; // E
- const signed char InpL = 11; // L
- const signed char InpUnknown = 12;
-
- // use some kind of state machine for parsing
- static signed char table[18][13] = {
- /* InpWs InpGt InpPipe InpOp InpCp InpHash InpQm InpAst InpPlus InpA InpE InpL InpUnknown */
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, Elem, -1 }, // Init
- { Ws1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Elem
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, Nam, Nam, Nam, Nam }, // Ws1
- { Ws2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Nam
- { -1, -1, -1, Cont, -1, -1, -1, -1, -1, Any, Empty, -1, -1 }, // Ws2
- { WsD, Done, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Empty
- { WsD, Done, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Any
- { -1, -1, -1, Cp, Cp, Mix, -1, -1, -1, Cp, Cp, Cp, Cp }, // Cont
- { Mix2, -1, MixN1, -1, Mix3, -1, -1, -1, -1, -1, -1, -1, -1 }, // Mix
- { -1, -1, MixN1, -1, Mix3, -1, -1, -1, -1, -1, -1, -1, -1 }, // Mix2
- { WsD, Done, -1, -1, -1, -1, -1, WsD, -1, -1, -1, -1, -1 }, // Mix3
- { -1, -1, -1, -1, -1, -1, -1, -1, -1, MixN2, MixN2, MixN2, MixN2 }, // MixN1
- { MixN3, -1, MixN1, -1, MixN4, -1, -1, -1, -1, -1, -1, -1, -1 }, // MixN2
- { -1, -1, MixN1, -1, MixN4, -1, -1, -1, -1, -1, -1, -1, -1 }, // MixN3
- { -1, -1, -1, -1, -1, -1, -1, WsD, -1, -1, -1, -1, -1 }, // MixN4
- { WsD, Done, -1, -1, -1, -1, Cp2, Cp2, Cp2, -1, -1, -1, -1 }, // Cp
- { WsD, Done, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // Cp2
- { -1, Done, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } // WsD
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // read input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == '|' ) {
- input = InpPipe;
- } else if ( c == '(' ) {
- input = InpOp;
- } else if ( c == ')' ) {
- input = InpCp;
- } else if ( c == '#' ) {
- input = InpHash;
- } else if ( c == '?' ) {
- input = InpQm;
- } else if ( c == '*' ) {
- input = InpAst;
- } else if ( c == '+' ) {
- input = InpPlus;
- } else if ( c == 'A' ) {
- input = InpA;
- } else if ( c == 'E' ) {
- input = InpE;
- } else if ( c == 'L' ) {
- input = InpL;
- } else {
- input = InpUnknown;
- }
- // get new state
-//qDebug( "%d -%d(%c)-> %d", state, input, c.latin1(), table[state][input] );
- state = table[state][input];
-
- // in some cases do special actions depending on state
- switch ( state ) {
- case Elem:
- parseOk = parseString( "LEMENT" );
- break;
- case Ws1:
- eat_ws();
- break;
- case Nam:
- parseOk = parseName();
- break;
- case Ws2:
- eat_ws();
- break;
- case Empty:
- parseOk = parseString( "EMPTY" );
- break;
- case Any:
- parseOk = parseString( "ANY" );
- break;
- case Cont:
- next_eat_ws();
- break;
- case Mix:
- parseOk = parseString( "#PCDATA" );
- break;
- case Mix2:
- eat_ws();
- break;
- case Mix3:
- next();
- break;
- case MixN1:
- next_eat_ws();
- break;
- case MixN2:
- parseOk = parseName();
- break;
- case MixN3:
- eat_ws();
- break;
- case MixN4:
- next();
- break;
- case Cp:
- parseOk = parseChoiceSeq();
- break;
- case Cp2:
- next();
- break;
- case WsD:
- next_eat_ws();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Elem:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Nam:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case Empty:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Any:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Mix:
- if( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case MixN2:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case Cp:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCHOICE;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a NotationDecl [82].
-
- Precondition: the beginning '<!' is already read and the head
- stands on the 'N' of '<!NOTATION'
-*/
-bool QXmlSimpleReader::parseNotationDecl()
-{
- const signed char Init = 0;
- const signed char Not = 1; // read NOTATION
- const signed char Ws1 = 2; // eat whitespaces
- const signed char Nam = 3; // read Name
- const signed char Ws2 = 4; // eat whitespaces
- const signed char ExtID = 5; // parse ExternalID
- const signed char Ws3 = 6; // eat whitespaces
- const signed char Done = 7;
-
- const signed char InpWs = 0;
- const signed char InpGt = 1; // >
- const signed char InpN = 2; // N
- const signed char InpUnknown = 3;
-
- // use some kind of state machine for parsing
- static signed char table[7][4] = {
- /* InpWs InpGt InpN InpUnknown */
- { -1, -1, Not, -1 }, // Init
- { Ws1, -1, -1, -1 }, // Not
- { -1, -1, Nam, Nam }, // Ws1
- { Ws2, Done, -1, -1 }, // Nam
- { -1, Done, ExtID, ExtID }, // Ws2
- { Ws3, Done, -1, -1 }, // ExtID
- { -1, Done, -1, -1 } // Ws3
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == 'N' ) {
- input = InpN;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Not:
- parseOk = parseString( "NOTATION" );
- break;
- case Ws1:
- eat_ws();
- break;
- case Nam:
- parseOk = parseName();
- break;
- case Ws2:
- eat_ws();
- break;
- case ExtID:
- parseOk = parseExternalID( TRUE );
- break;
- case Ws3:
- eat_ws();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Not:
- if ( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Nam:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case ExtID:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGEXTERNALID;
- goto parseError;
- }
- // call the handler
- if ( dtdHnd ) {
- if ( !dtdHnd->notationDecl( name(), d->publicId, d->systemId ) ) {
- d->error = dtdHnd->errorString();
- goto parseError;
- }
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse choice [49] or seq [50].
-
- Precondition: the beginning '('S? is already read and the head
- stands on the first non-whitespace character after it.
-*/
-bool QXmlSimpleReader::parseChoiceSeq()
-{
- const signed char Init = 0;
- const signed char Ws1 = 1; // eat whitespace
- const signed char CS_ = 2; // choice or set
- const signed char Ws2 = 3; // eat whitespace
- const signed char More = 4; // more cp to read
- const signed char Name = 5; // read name
- const signed char Done = 6; //
-
- const signed char InpWs = 0; // S
- const signed char InpOp = 1; // (
- const signed char InpCp = 2; // )
- const signed char InpQm = 3; // ?
- const signed char InpAst = 4; // *
- const signed char InpPlus = 5; // +
- const signed char InpPipe = 6; // |
- const signed char InpComm = 7; // ,
- const signed char InpUnknown = 8;
-
- // use some kind of state machine for parsing
- static signed char table[6][9] = {
- /* InpWs InpOp InpCp InpQm InpAst InpPlus InpPipe InpComm InpUnknown */
- { -1, Ws1, -1, -1, -1, -1, -1, -1, Name }, // Init
- { -1, CS_, -1, -1, -1, -1, -1, -1, CS_ }, // Ws1
- { Ws2, -1, Done, Ws2, Ws2, Ws2, More, More, -1 }, // CS_
- { -1, -1, Done, -1, -1, -1, More, More, -1 }, // Ws2
- { -1, Ws1, -1, -1, -1, -1, -1, -1, Name }, // More (same as Init)
- { Ws2, -1, Done, Ws2, Ws2, Ws2, More, More, -1 } // Name (same as CS_)
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '(' ) {
- input = InpOp;
- } else if ( c == ')' ) {
- input = InpCp;
- } else if ( c == '?' ) {
- input = InpQm;
- } else if ( c == '*' ) {
- input = InpAst;
- } else if ( c == '+' ) {
- input = InpPlus;
- } else if ( c == '|' ) {
- input = InpPipe;
- } else if ( c == ',' ) {
- input = InpComm;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Ws1:
- next_eat_ws();
- break;
- case CS_:
- parseOk = parseChoiceSeq();
- break;
- case Ws2:
- next_eat_ws();
- break;
- case More:
- next_eat_ws();
- break;
- case Name:
- parseOk = parseName();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case CS_:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGCHOICE;
- goto parseError;
- }
- break;
- case Name:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a EntityDecl [70].
-
- Precondition: the beginning '<!E' is already read and the head
- stand on the 'N' of '<!ENTITY'
-*/
-bool QXmlSimpleReader::parseEntityDecl()
-{
- const signed char Init = 0;
- const signed char Ent = 1; // parse "ENTITY"
- const signed char Ws1 = 2; // white space read
- const signed char Name = 3; // parse name
- const signed char Ws2 = 4; // white space read
- const signed char EValue = 5; // parse entity value
- const signed char ExtID = 6; // parse ExternalID
- const signed char Ws3 = 7; // white space read
- const signed char Ndata = 8; // parse "NDATA"
- const signed char Ws4 = 9; // white space read
- const signed char NNam = 10; // parse name
- const signed char PEDec = 11; // parse PEDecl
- const signed char Ws6 = 12; // white space read
- const signed char PENam = 13; // parse name
- const signed char Ws7 = 14; // white space read
- const signed char PEVal = 15; // parse entity value
- const signed char PEEID = 16; // parse ExternalID
- const signed char WsE = 17; // white space read
- const signed char EDDone = 19; // done, but also report an external, unparsed entity decl
- const signed char Done = 18;
-
- const signed char InpWs = 0; // white space
- const signed char InpPer = 1; // %
- const signed char InpQuot = 2; // " or '
- const signed char InpGt = 3; // >
- const signed char InpN = 4; // N
- const signed char InpUnknown = 5;
-
- // use some kind of state machine for parsing
- static signed char table[18][6] = {
- /* InpWs InpPer InpQuot InpGt InpN InpUnknown */
- { -1, -1, -1, -1, Ent, -1 }, // Init
- { Ws1, -1, -1, -1, -1, -1 }, // Ent
- { -1, PEDec, -1, -1, Name, Name }, // Ws1
- { Ws2, -1, -1, -1, -1, -1 }, // Name
- { -1, -1, EValue, -1, -1, ExtID }, // Ws2
- { WsE, -1, -1, Done, -1, -1 }, // EValue
- { Ws3, -1, -1, EDDone,-1, -1 }, // ExtID
- { -1, -1, -1, EDDone,Ndata, -1 }, // Ws3
- { Ws4, -1, -1, -1, -1, -1 }, // Ndata
- { -1, -1, -1, -1, NNam, NNam }, // Ws4
- { WsE, -1, -1, Done, -1, -1 }, // NNam
- { Ws6, -1, -1, -1, -1, -1 }, // PEDec
- { -1, -1, -1, -1, PENam, PENam }, // Ws6
- { Ws7, -1, -1, -1, -1, -1 }, // PENam
- { -1, -1, PEVal, -1, -1, PEEID }, // Ws7
- { WsE, -1, -1, Done, -1, -1 }, // PEVal
- { WsE, -1, -1, Done, -1, -1 }, // PEEID
- { -1, -1, -1, Done, -1, -1 } // WsE
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_S(c) ) {
- input = InpWs;
- } else if ( c == '%' ) {
- input = InpPer;
- } else if ( c == '"' || c == '\'' ) {
- input = InpQuot;
- } else if ( c == '>' ) {
- input = InpGt;
- } else if ( c == 'N' ) {
- input = InpN;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Ent:
- parseOk = parseString( "NTITY" );
- break;
- case Ws1:
- eat_ws();
- break;
- case Name:
- parseOk = parseName();
- break;
- case Ws2:
- eat_ws();
- break;
- case EValue:
- parseOk = parseEntityValue();
- break;
- case ExtID:
- parseOk = parseExternalID();
- break;
- case Ws3:
- eat_ws();
- break;
- case Ndata:
- parseOk = parseString( "NDATA" );
- break;
- case Ws4:
- eat_ws();
- break;
- case NNam:
- parseOk = parseName( TRUE );
- break;
- case PEDec:
- next();
- break;
- case Ws6:
- eat_ws();
- break;
- case PENam:
- parseOk = parseName();
- break;
- case Ws7:
- eat_ws();
- break;
- case PEVal:
- parseOk = parseEntityValue();
- break;
- case PEEID:
- parseOk = parseExternalID();
- break;
- case WsE:
- eat_ws();
- break;
- case EDDone:
- next();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Ent:
- if ( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case Name:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case EValue:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGENTITYVALUE;
- goto parseError;
- }
- if ( !entityExist( name() ) ) {
- d->entities.insert( name(), string() );
- if ( declHnd ) {
- if ( !declHnd->internalEntityDecl( name(), string() ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- }
- break;
- case ExtID:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGEXTERNALID;
- goto parseError;
- }
- break;
- case Ndata:
- if ( !parseOk ) {
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
- break;
- case NNam:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- if ( !entityExist( name() ) ) {
- d->externEntities.insert( name(), QXmlSimpleReaderPrivate::ExternEntity( d->publicId, d->systemId, ref() ) );
- if ( dtdHnd ) {
- if ( !dtdHnd->unparsedEntityDecl( name(), d->publicId, d->systemId, ref() ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- }
- break;
- case PENam:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case PEVal:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGENTITYVALUE;
- goto parseError;
- }
- if ( !entityExist( name() ) ) {
- d->parameterEntities.insert( name(), string() );
- if ( declHnd ) {
- if ( !declHnd->internalEntityDecl( QString("%")+name(), string() ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- }
- break;
- case PEEID:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGEXTERNALID;
- goto parseError;
- }
- if ( !entityExist( name() ) ) {
- d->externParameterEntities.insert( name(), QXmlSimpleReaderPrivate::ExternParameterEntity( d->publicId, d->systemId ) );
- if ( declHnd ) {
- if ( !declHnd->externalEntityDecl( QString("%")+name(), d->publicId, d->systemId ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- }
- break;
- case EDDone:
- if ( !entityExist( name() ) ) {
- d->externEntities.insert( name(), QXmlSimpleReaderPrivate::ExternEntity( d->publicId, d->systemId, QString::null ) );
- if ( declHnd ) {
- if ( !declHnd->externalEntityDecl( name(), d->publicId, d->systemId ) ) {
- d->error = declHnd->errorString();
- goto parseError;
- }
- }
- }
- return TRUE;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a EntityValue [9]
-*/
-bool QXmlSimpleReader::parseEntityValue()
-{
- bool tmp;
-
- const signed char Init = 0;
- const signed char Dq = 1; // EntityValue is double quoted
- const signed char DqC = 2; // signed character
- const signed char DqPER = 3; // PEReference
- const signed char DqRef = 4; // Reference
- const signed char Sq = 5; // EntityValue is double quoted
- const signed char SqC = 6; // signed character
- const signed char SqPER = 7; // PEReference
- const signed char SqRef = 8; // Reference
- const signed char Done = 9;
-
- const signed char InpDq = 0; // "
- const signed char InpSq = 1; // '
- const signed char InpAmp = 2; // &
- const signed char InpPer = 3; // %
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[9][5] = {
- /* InpDq InpSq InpAmp InpPer InpUnknown */
- { Dq, Sq, -1, -1, -1 }, // Init
- { Done, DqC, DqRef, DqPER, DqC }, // Dq
- { Done, DqC, DqRef, DqPER, DqC }, // DqC
- { Done, DqC, DqRef, DqPER, DqC }, // DqPER
- { Done, DqC, DqRef, DqPER, DqC }, // DqRef
- { SqC, Done, SqRef, SqPER, SqC }, // Sq
- { SqC, Done, SqRef, SqPER, SqC }, // SqC
- { SqC, Done, SqRef, SqPER, SqC }, // SqPER
- { SqC, Done, SqRef, SqPER, SqC } // SqRef
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == '"' ) {
- input = InpDq;
- } else if ( c == '\'' ) {
- input = InpSq;
- } else if ( c == '&' ) {
- input = InpAmp;
- } else if ( c == '%' ) {
- input = InpPer;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Dq:
- case Sq:
- stringClear();
- next();
- break;
- case DqC:
- case SqC:
- stringAddC();
- next();
- break;
- case DqPER:
- case SqPER:
- parseOk = parsePEReference( InEntityValue );
- break;
- case DqRef:
- case SqRef:
- parseOk = parseReference( tmp, InEntityValue );
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case DqPER:
- case SqPER:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGDOCTYPE;
- goto parseError;
- }
- break;
- case DqRef:
- case SqRef:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a comment [15].
-
- Precondition: the beginning '<!' of the comment is already read and the head
- stands on the first '-' of '<!--'.
-
- If this function was successful, the head-position is on the first
- character after the comment.
-*/
-bool QXmlSimpleReader::parseComment()
-{
- const signed char Init = 0;
- const signed char Dash1 = 1; // the first dash was read
- const signed char Dash2 = 2; // the second dash was read
- const signed char Com = 3; // read comment
- const signed char Com2 = 4; // read comment (help state)
- const signed char ComE = 5; // finished reading comment
- const signed char Done = 6;
-
- const signed char InpDash = 0; // -
- const signed char InpGt = 1; // >
- const signed char InpUnknown = 2;
-
- // use some kind of state machine for parsing
- static signed char table[6][3] = {
- /* InpDash InpGt InpUnknown */
- { Dash1, -1, -1 }, // Init
- { Dash2, -1, -1 }, // Dash1
- { Com2, Com, Com }, // Dash2
- { Com2, Com, Com }, // Com
- { ComE, Com, Com }, // Com2
- { -1, Done, -1 } // ComE
- };
- signed char state = Init;
- signed char input;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == '-' ) {
- input = InpDash;
- } else if ( c == '>' ) {
- input = InpGt;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Dash1:
- next();
- break;
- case Dash2:
- next();
- break;
- case Com:
- stringAddC();
- next();
- break;
- case Com2:
- next();
- break;
- case ComE:
- next();
- break;
- case Done:
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Dash2:
- stringClear();
- break;
- case Com2:
- // if next character is not a dash than don't skip it
- if ( c != '-' ) {
- stringAddC( '-' );
- }
- break;
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_ERRORPARSINGCOMMENT;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a Attribute [41].
-
- Precondition: the head stands on the first character of the name of the
- attribute (i.e. all whitespaces are already parsed).
-
- The head stand on the next character after the end quotes. The variable name
- contains the name of the attribute and the variable string contains the value
- of the attribute.
-*/
-bool QXmlSimpleReader::parseAttribute()
-{
- const signed char Init = 0;
- const signed char PName = 1; // parse name
- const signed char Ws = 2; // eat ws
- const signed char Eq = 3; // the '=' was read
- const signed char Quotes = 4; // " or ' were read
-
- const signed char InpNameBe = 0;
- const signed char InpEq = 1; // =
- const signed char InpDq = 2; // "
- const signed char InpSq = 3; // '
- const signed char InpUnknown = 4;
-
- // use some kind of state machine for parsing
- static signed char table[4][5] = {
- /* InpNameBe InpEq InpDq InpSq InpUnknown */
- { PName, -1, -1, -1, -1 }, // Init
- { -1, Eq, -1, -1, Ws }, // PName
- { -1, Eq, -1, -1, -1 }, // Ws
- { -1, -1, Quotes, Quotes, -1 } // Eq
- };
- signed char state = Init;
- signed char input;
- bool parseOk = TRUE;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_NameBeginning(c) ) {
- input = InpNameBe;
- } else if ( c == '=' ) {
- input = InpEq;
- } else if ( c == '"' ) {
- input = InpDq;
- } else if ( c == '\'' ) {
- input = InpSq;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case PName:
- parseOk = parseName();
- break;
- case Ws:
- eat_ws();
- break;
- case Eq:
- next_eat_ws();
- break;
- case Quotes:
- parseOk = parseAttValue();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case PName:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGNAME;
- goto parseError;
- }
- break;
- case Quotes:
- if ( !parseOk ) {
- d->error = XMLERR_ERRORPARSINGATTVALUE;
- goto parseError;
- }
- // Done
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a Name [5] and store the name in name or ref (if useRef is TRUE).
-*/
-bool QXmlSimpleReader::parseName( bool useRef )
-{
- const signed char Init = 0;
- const signed char Name1 = 1; // parse first signed character of the name
- const signed char Name = 2; // parse name
- const signed char Done = 3;
-
- const signed char InpNameBe = 0; // name beginning signed characters
- const signed char InpNameCh = 1; // NameChar without InpNameBe
- const signed char InpUnknown = 2;
-
- // use some kind of state machine for parsing
- static signed char table[3][3] = {
- /* InpNameBe InpNameCh InpUnknown */
- { Name1, -1, -1 }, // Init
- { Name, Name, Done }, // Name1
- { Name, Name, Done } // Name
- };
- signed char state = Init;
- signed char input;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_NameBeginning(c) ) {
- input = InpNameBe;
- } else if ( is_NameChar(c) ) {
- input = InpNameCh;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case Name1:
- if ( useRef ) {
- refClear();
- refAddC();
- } else {
- nameClear();
- nameAddC();
- }
- next();
- break;
- case Name:
- if ( useRef ) {
- refAddC();
- } else {
- nameAddC();
- }
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a Nmtoken [7] and store the name in name.
-*/
-bool QXmlSimpleReader::parseNmtoken()
-{
- const signed char Init = 0;
- const signed char NameF = 1;
- const signed char Name = 2;
- const signed char Done = 3;
-
- const signed char InpNameCh = 0; // NameChar without InpNameBe
- const signed char InpUnknown = 1;
-
- // use some kind of state machine for parsing
- static signed char table[3][2] = {
- /* InpNameCh InpUnknown */
- { NameF, -1 }, // Init
- { Name, Done }, // NameF
- { Name, Done } // Name
- };
- signed char state = Init;
- signed char input;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( is_NameChar(c) ) {
- input = InpNameCh;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case NameF:
- nameClear();
- nameAddC();
- next();
- break;
- case Name:
- nameAddC();
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case Done:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_LETTEREXPECTED;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Parse a Reference [67].
-
- charDataRead is set to TRUE if the reference must not be parsed. The
- character(s) which the reference mapped to are appended to string. The
- head stands on the first character after the reference.
-
- charDataRead is set to FALSE if the reference must be parsed. The
- character(s) which the reference mapped to are inserted at the reference
- position. The head stands on the first character of the replacement).
-*/
-bool QXmlSimpleReader::parseReference( bool &charDataRead, EntityRecognitionContext context )
-{
- // temporary variables
- uint tmp;
- bool ok;
-
- const signed char Init = 0;
- const signed char SRef = 1; // start of a reference
- const signed char ChRef = 2; // parse CharRef
- const signed char ChDec = 3; // parse CharRef decimal
- const signed char ChHexS = 4; // start CharRef hexadecimal
- const signed char ChHex = 5; // parse CharRef hexadecimal
- const signed char Name = 6; // parse name
- const signed char DoneD = 7; // done CharRef decimal
- const signed char DoneH = 8; // done CharRef hexadecimal
- const signed char DoneN = 9; // done EntityRef
-
- const signed char InpAmp = 0; // &
- const signed char InpSemi = 1; // ;
- const signed char InpHash = 2; // #
- const signed char InpX = 3; // x
- const signed char InpNum = 4; // 0-9
- const signed char InpHex = 5; // a-f A-F
- const signed char InpUnknown = 6;
-
- // use some kind of state machine for parsing
- static signed char table[8][7] = {
- /* InpAmp InpSemi InpHash InpX InpNum InpHex InpUnknown */
- { SRef, -1, -1, -1, -1, -1, -1 }, // Init
- { -1, -1, ChRef, Name, Name, Name, Name }, // SRef
- { -1, -1, -1, ChHexS, ChDec, -1, -1 }, // ChRef
- { -1, DoneD, -1, -1, ChDec, -1, -1 }, // ChDec
- { -1, -1, -1, -1, ChHex, ChHex, -1 }, // ChHexS
- { -1, DoneH, -1, -1, ChHex, ChHex, -1 }, // ChHex
- { -1, DoneN, -1, -1, -1, -1, -1 } // Name
- };
- signed char state = Init;
- signed char input;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c.row() ) {
- input = InpUnknown;
- } else if ( c.cell() == '&' ) {
- input = InpAmp;
- } else if ( c.cell() == ';' ) {
- input = InpSemi;
- } else if ( c.cell() == '#' ) {
- input = InpHash;
- } else if ( c.cell() == 'x' ) {
- input = InpX;
- } else if ( '0' <= c.cell() && c.cell() <= '9' ) {
- input = InpNum;
- } else if ( 'a' <= c.cell() && c.cell() <= 'f' ) {
- input = InpHex;
- } else if ( 'A' <= c.cell() && c.cell() <= 'F' ) {
- input = InpHex;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- state = table[state][input];
-
- // do some actions according to state
- switch ( state ) {
- case SRef:
- refClear();
- next();
- break;
- case ChRef:
- next();
- break;
- case ChDec:
- refAddC();
- next();
- break;
- case ChHexS:
- next();
- break;
- case ChHex:
- refAddC();
- next();
- break;
- case Name:
- // read the name into the ref
- parseName( TRUE );
- break;
- case DoneD:
- tmp = ref().toUInt( &ok, 10 );
- if ( ok ) {
- stringAddC( QChar(tmp) );
- } else {
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
- charDataRead = TRUE;
- next();
- break;
- case DoneH:
- tmp = ref().toUInt( &ok, 16 );
- if ( ok ) {
- stringAddC( QChar(tmp) );
- } else {
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
- charDataRead = TRUE;
- next();
- break;
- case DoneN:
- if ( !processReference( charDataRead, context ) )
- goto parseError;
- next();
- break;
- }
- // no input is read after this
- switch ( state ) {
- case DoneD:
- return TRUE;
- case DoneH:
- return TRUE;
- case DoneN:
- return TRUE;
- case -1:
- // Error
- d->error = XMLERR_ERRORPARSINGREFERENCE;
- goto parseError;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-/*!
- Helper function for parseReference()
-*/
-bool QXmlSimpleReader::processReference( bool &charDataRead, EntityRecognitionContext context )
-{
- QString reference = ref();
- if ( reference == "amp" ) {
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' ); stringAddC( 'a' ); stringAddC( 'm' ); stringAddC( 'p' ); stringAddC( ';' );
- } else {
- // Included or Included in literal
- stringAddC( '&' );
- }
- charDataRead = TRUE;
- } else if ( reference == "lt" ) {
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' ); stringAddC( 'l' ); stringAddC( 't' ); stringAddC( ';' );
- } else {
- // Included or Included in literal
- stringAddC( '<' );
- }
- charDataRead = TRUE;
- } else if ( reference == "gt" ) {
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' ); stringAddC( 'g' ); stringAddC( 't' ); stringAddC( ';' );
- } else {
- // Included or Included in literal
- stringAddC( '>' );
- }
- charDataRead = TRUE;
- } else if ( reference == "apos" ) {
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' ); stringAddC( 'a' ); stringAddC( 'p' ); stringAddC( 'o' ); stringAddC( 's' ); stringAddC( ';' );
- } else {
- // Included or Included in literal
- stringAddC( '\'' );
- }
- charDataRead = TRUE;
- } else if ( reference == "quot" ) {
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' ); stringAddC( 'q' ); stringAddC( 'u' ); stringAddC( 'o' ); stringAddC( 't' ); stringAddC( ';' );
- } else {
- // Included or Included in literal
- stringAddC( '"' );
- }
- charDataRead = TRUE;
- } else {
- QMap<QString,QString>::Iterator it;
- it = d->entities.find( reference );
- if ( it != d->entities.end() ) {
- // "Internal General"
- switch ( context ) {
- case InContent:
- // Included
- xmlRef = it.data() + xmlRef;
- charDataRead = FALSE;
- break;
- case InAttributeValue:
- // Included in literal
- xmlRef = it.data().replace( QRegExp("\""), "&quot;" ).replace( QRegExp("'"), "&apos;" )
- + xmlRef;
- charDataRead = FALSE;
- break;
- case InEntityValue:
- {
- // Bypassed
- stringAddC( '&' );
- for ( int i=0; i<(int)reference.length(); i++ ) {
- stringAddC( reference[i] );
- }
- stringAddC( ';');
- charDataRead = TRUE;
- }
- break;
- case InDTD:
- // Forbidden
- d->error = XMLERR_INTERNALGENERALENTITYINDTD;
- charDataRead = FALSE;
- break;
- }
- } else {
- QMap<QString,QXmlSimpleReaderPrivate::ExternEntity>::Iterator itExtern;
- itExtern = d->externEntities.find( reference );
- if ( itExtern == d->externEntities.end() ) {
- // entity not declared
- // ### check this case for conformance
- if ( context == InEntityValue ) {
- // Bypassed
- stringAddC( '&' );
- for ( int i=0; i<(int)reference.length(); i++ ) {
- stringAddC( reference[i] );
- }
- stringAddC( ';');
- charDataRead = TRUE;
- } else {
- if ( contentHnd ) {
- if ( !contentHnd->skippedEntity( reference ) ) {
- d->error = contentHnd->errorString();
- return FALSE; // error
- }
- }
- }
- } else if ( (*itExtern).notation.isNull() ) {
- // "External Parsed General"
- switch ( context ) {
- case InContent:
- // Included if validating
- if ( contentHnd ) {
- if ( !contentHnd->skippedEntity( reference ) ) {
- d->error = contentHnd->errorString();
- return FALSE; // error
- }
- }
- charDataRead = FALSE;
- break;
- case InAttributeValue:
- // Forbidden
- d->error = XMLERR_EXTERNALGENERALENTITYINAV;
- charDataRead = FALSE;
- break;
- case InEntityValue:
- {
- // Bypassed
- stringAddC( '&' );
- for ( int i=0; i<(int)reference.length(); i++ ) {
- stringAddC( reference[i] );
- }
- stringAddC( ';');
- charDataRead = TRUE;
- }
- break;
- case InDTD:
- // Forbidden
- d->error = XMLERR_EXTERNALGENERALENTITYINDTD;
- charDataRead = FALSE;
- break;
- }
- } else {
- // "Unparsed"
- // ### notify for "Occurs as Attribute Value" missing (but this is no reference, anyway)
- // Forbidden
- d->error = XMLERR_UNPARSEDENTITYREFERENCE;
- charDataRead = FALSE;
- return FALSE; // error
- }
- }
- }
- return TRUE; // no error
-}
-
-
-/*!
- Parse over a simple string.
-
- After the string was successfully parsed, the head is on the first
- character after the string.
-*/
-bool QXmlSimpleReader::parseString( const QString& s )
-{
- signed char Done = s.length();
-
- const signed char InpCharExpected = 0; // the character that was expected
- const signed char InpUnknown = 1;
-
- signed char state = 0; // state in this function is the position in the string s
- signed char input;
-
- while ( TRUE ) {
-
- // get input
- if ( atEnd() ) {
- d->error = XMLERR_UNEXPECTEDEOF;
- goto parseError;
- }
- if ( c == s[(int)state] ) {
- input = InpCharExpected;
- } else {
- input = InpUnknown;
- }
-
- // set state according to input
- if ( input == InpCharExpected ) {
- state++;
- } else {
- // Error
- d->error = XMLERR_UNEXPECTEDCHARACTER;
- goto parseError;
- }
-
- // do some actions according to state
- next();
- // no input is read after this
- if ( state == Done ) {
- return TRUE;
- }
-
- }
-
- return TRUE;
-
-parseError:
- reportParseError();
- return FALSE;
-}
-
-
-/*!
- Inits the data values.
-*/
-void QXmlSimpleReader::init( const QXmlInputSource& i )
-{
- xml = i.data();
- xmlLength = xml.length();
- xmlRef = "";
-
- d->externParameterEntities.clear();
- d->parameterEntities.clear();
- d->externEntities.clear();
- d->entities.clear();
-
- tags.clear();
-
- d->doctype = "";
- d->xmlVersion = "";
- d->encoding = "";
- d->standalone = QXmlSimpleReaderPrivate::Unknown;
-
- lineNr = 0;
- columnNr = -1;
- pos = 0;
- next();
- d->error = XMLERR_OK;
-}
-
-/*!
- Returns TRUE if a entity with the name \a e exists,
- otherwise returns FALSE.
-*/
-bool QXmlSimpleReader::entityExist( const QString& e ) const
-{
- if ( d->parameterEntities.find(e) == d->parameterEntities.end() &&
- d->externParameterEntities.find(e) == d->externParameterEntities.end() ) {
- return FALSE;
- } else {
- return TRUE;
- }
-}
-
-void QXmlSimpleReader::reportParseError()
-{
- if ( errorHnd )
- errorHnd->fatalError( QXmlParseException( d->error, columnNr+1, lineNr+1 ) );
-}
-
-#endif //QT_NO_XML
diff --git a/qtools/qxml.h b/qtools/qxml.h
deleted file mode 100644
index 94005bb..0000000
--- a/qtools/qxml.h
+++ /dev/null
@@ -1,671 +0,0 @@
-/****************************************************************************
-**
-**
-** Definition of QXmlSimpleReader and related classes.
-**
-** Created : 000518
-**
-** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
-**
-** This file is part of the XML module of the Qt GUI Toolkit.
-**
-** This file may be distributed under the terms of the Q Public License
-** as defined by Trolltech AS of Norway and appearing in the file
-** LICENSE.QPL included in the packaging of this file.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid Qt Enterprise Edition licenses may use this
-** file in accordance with the Qt Commercial License Agreement provided
-** with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
-** information about Qt Commercial License Agreements.
-** See http://www.trolltech.com/qpl/ for QPL licensing information.
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#ifndef QXML_H
-#define QXML_H
-
-#include <qmodules.h>
-
-#if !defined(QT_MODULE_XML)
-#define QM_EXPORT
-#else
-#define QM_EXPORT Q_EXPORT
-#endif
-
-#ifndef QT_H
-#include <qtextstream.h>
-#include <qfile.h>
-#include <qstring.h>
-#include <qstringlist.h>
-#include <qvaluestack_p.h>
-#include <qmap_p.h>
-#endif // QT_H
-
-#ifndef QT_NO_XML
-
-class QXmlNamespaceSupport;
-class QXmlAttributes;
-class QXmlContentHandler;
-class QXmlDefaultHandler;
-class QXmlDTDHandler;
-class QXmlEntityResolver;
-class QXmlErrorHandler;
-class QXmlLexicalHandler;
-class QXmlDeclHandler;
-class QXmlInputSource;
-class QXmlLocator;
-class QXmlNamespaceSupport;
-class QXmlParseException;
-
-class QXmlReader;
-class QXmlSimpleReader;
-
-class QXmlSimpleReaderPrivate;
-class QXmlNamespaceSupportPrivate;
-class QXmlAttributesPrivate;
-class QXmlInputSourcePrivate;
-class QXmlParseExceptionPrivate;
-class QXmlLocatorPrivate;
-class QXmlDefaultHandlerPrivate;
-
-
-//
-// SAX Namespace Support
-//
-
-#if defined(Q_TEMPLATEDLL)
-// MOC_SKIP_BEGIN
-template class QM_EXPORT QMap<QString, QString>;
-template class QM_EXPORT QValueStack<QMap<QString, QString> >;
-template class QM_EXPORT QValueStack<QString>;
-// MOC_SKIP_END
-#endif
-
-class QM_EXPORT QXmlNamespaceSupport
-{
-public:
- QXmlNamespaceSupport();
- ~QXmlNamespaceSupport();
-
- void setPrefix( const QString&, const QString& );
-
- QString prefix( const QString& ) const;
- QString uri( const QString& ) const;
- void splitName( const QString&, QString&, QString& ) const;
- void processName( const QString&, bool, QString&, QString& ) const;
- QStringList prefixes() const;
- QStringList prefixes( const QString& ) const;
-
- void pushContext();
- void popContext();
- void reset();
-private:
- QValueStack<QMap<QString, QString> > nsStack;
- QMap<QString, QString> ns;
-
- //QXmlNamespaceSupportPrivate *d;
-};
-
-
-//
-// SAX Attributes
-//
-
-class QM_EXPORT QXmlAttributes
-{
-public:
- QXmlAttributes() {}
- virtual ~QXmlAttributes() {}
-
- int index( const QString& qName ) const;
- int index( const QString& uri, const QString& localPart ) const;
- int length() const;
- QString localName( int index ) const;
- QString qName( int index ) const;
- QString uri( int index ) const;
- QString type( int index ) const;
- QString type( const QString& qName ) const;
- QString type( const QString& uri, const QString& localName ) const;
- QString value( int index ) const;
- QString value( const QString& qName ) const;
- QString value( const QString& uri, const QString& localName ) const;
-
-private:
- QStringList qnameList;
- QStringList uriList;
- QStringList localnameList;
- QStringList valueList;
-
- //QXmlAttributesPrivate *d;
-
- friend class QXmlSimpleReader;
-};
-
-//
-// SAX Input Source
-//
-
-class QM_EXPORT QXmlInputSource
-{
-public:
- QXmlInputSource();
- QXmlInputSource( QTextStream& stream );
- QXmlInputSource( QFile& file );
- virtual ~QXmlInputSource();
-
- virtual const QString& data() const;
- virtual void setData( const QString& d );
-
-private:
- void readInput( QByteArray& rawData );
-
- QString input;
-
- //QXmlInputSourcePrivate *d;
-};
-
-//
-// SAX Exception Classes
-//
-
-class QM_EXPORT QXmlParseException
-{
-public:
- QXmlParseException( const QString& name="", int c=-1, int l=-1, const QString& p="", const QString& s="" )
- : msg( name ), column( c ), line( l ), pub( p ), sys( s )
- { }
-
- int columnNumber() const;
- int lineNumber() const;
- QString publicId() const;
- QString systemId() const;
- QString message() const;
-
-private:
- QString msg;
- int column;
- int line;
- QString pub;
- QString sys;
-
- //QXmlParseExceptionPrivate *d;
-};
-
-
-//
-// XML Reader
-//
-
-class QM_EXPORT QXmlReader
-{
-public:
- virtual ~QXmlReader() {}
- virtual bool feature( const QString& name, bool *ok = 0 ) const = 0;
- virtual void setFeature( const QString& name, bool value ) = 0;
- virtual bool hasFeature( const QString& name ) const = 0;
- virtual void* property( const QString& name, bool *ok = 0 ) const = 0;
- virtual void setProperty( const QString& name, void* value ) = 0;
- virtual bool hasProperty( const QString& name ) const = 0;
- virtual void setEntityResolver( QXmlEntityResolver* handler ) = 0;
- virtual QXmlEntityResolver* entityResolver() const = 0;
- virtual void setDTDHandler( QXmlDTDHandler* handler ) = 0;
- virtual QXmlDTDHandler* DTDHandler() const = 0;
- virtual void setContentHandler( QXmlContentHandler* handler ) = 0;
- virtual QXmlContentHandler* contentHandler() const = 0;
- virtual void setErrorHandler( QXmlErrorHandler* handler ) = 0;
- virtual QXmlErrorHandler* errorHandler() const = 0;
- virtual void setLexicalHandler( QXmlLexicalHandler* handler ) = 0;
- virtual QXmlLexicalHandler* lexicalHandler() const = 0;
- virtual void setDeclHandler( QXmlDeclHandler* handler ) = 0;
- virtual QXmlDeclHandler* declHandler() const = 0;
- virtual bool parse( const QXmlInputSource& input ) = 0;
-};
-
-class QM_EXPORT QXmlSimpleReader : public QXmlReader
-{
-public:
- QXmlSimpleReader();
- virtual ~QXmlSimpleReader();
-
- bool feature( const QString& name, bool *ok = 0 ) const;
- void setFeature( const QString& name, bool value );
- bool hasFeature( const QString& name ) const;
-
- void* property( const QString& name, bool *ok = 0 ) const;
- void setProperty( const QString& name, void* value );
- bool hasProperty( const QString& name ) const;
-
- void setEntityResolver( QXmlEntityResolver* handler );
- QXmlEntityResolver* entityResolver() const;
- void setDTDHandler( QXmlDTDHandler* handler );
- QXmlDTDHandler* DTDHandler() const;
- void setContentHandler( QXmlContentHandler* handler );
- QXmlContentHandler* contentHandler() const;
- void setErrorHandler( QXmlErrorHandler* handler );
- QXmlErrorHandler* errorHandler() const;
- void setLexicalHandler( QXmlLexicalHandler* handler );
- QXmlLexicalHandler* lexicalHandler() const;
- void setDeclHandler( QXmlDeclHandler* handler );
- QXmlDeclHandler* declHandler() const;
-
- bool parse( const QXmlInputSource& input );
-
-private:
- // variables
- QXmlContentHandler* contentHnd;
- QXmlErrorHandler* errorHnd;
- QXmlDTDHandler* dtdHnd;
- QXmlEntityResolver* entityRes;
- QXmlLexicalHandler* lexicalHnd;
- QXmlDeclHandler* declHnd;
-
- QChar c; // the character at reading position
- int lineNr; // number of line
- int columnNr; // position in line
- int pos; // position in string
-
- int namePos;
- QChar nameArray[256]; // only used for names
- QString nameValue; // only used for names
- int refPos;
- QChar refArray[256]; // only used for references
- QString refValue; // only used for references
- int stringPos;
- QChar stringArray[256]; // used for any other strings that are parsed
- QString stringValue; // used for any other strings that are parsed
-
- QString xml;
- int xmlLength;
- QString xmlRef; // used for parsing of entity references
-
- QValueStack<QString> tags;
-
- QXmlSimpleReaderPrivate* d;
-
- static const QChar QEOF;
-
- // inlines
- virtual bool is_S( const QChar& );
- virtual bool is_Letter( const QChar& );
- virtual bool is_NameBeginning( const QChar& );
- virtual bool is_Digit( const QChar& );
- virtual bool is_CombiningChar( const QChar& );
- virtual bool is_Extender( const QChar& );
- virtual bool is_NameChar( const QChar& );
-
- QString& string();
- void stringClear();
- void stringAddC();
- void stringAddC(const QChar&);
- QString& name();
- void nameClear();
- void nameAddC();
- void nameAddC(const QChar&);
- QString& ref();
- void refClear();
- void refAddC();
- void refAddC(const QChar&);
-
- // used by parseReference() and parsePEReference()
- enum EntityRecognitionContext { InContent, InAttributeValue, InEntityValue, InDTD };
-
- // private functions
- void eat_ws();
- void next_eat_ws();
-
- void next();
- bool atEnd();
-
- void init( const QXmlInputSource& i );
-
- bool entityExist( const QString& ) const;
-
- bool parseProlog();
- bool parseElement();
- bool parseElementEmptyTag( bool &t, QString &uri, QString &lname );
- bool parseElementETagBegin2( QString &uri, QString &lname );
- bool parseElementAttribute( QString &prefix, QString &uri, QString &lname );
- bool parseMisc();
- bool parseContent();
-
- bool parsePI(bool xmldecl=FALSE);
- bool parseDoctype();
- bool parseComment();
-
- bool parseName( bool useRef=FALSE );
- bool parseNmtoken();
- bool parseAttribute();
- bool parseReference( bool &charDataRead, EntityRecognitionContext context );
- bool processReference( bool &charDataRead, EntityRecognitionContext context );
-
- bool parseExternalID( bool allowPublicID = FALSE );
- bool parsePEReference( EntityRecognitionContext context );
- bool parseMarkupdecl();
- bool parseAttlistDecl();
- bool parseAttType();
- bool parseAttValue();
- bool parseElementDecl();
- bool parseNotationDecl();
- bool parseChoiceSeq();
- bool parseEntityDecl();
- bool parseEntityValue();
-
- bool parseString( const QString& s );
-
- void reportParseError();
-
- friend class QXmlSimpleReaderPrivate;
- friend class QXmlLocator;
-};
-
-//
-// SAX Locator
-//
-
-class QM_EXPORT QXmlLocator
-{
-public:
- QXmlLocator( QXmlSimpleReader* parent )
- { reader = parent; }
- ~QXmlLocator()
- { }
-
- int columnNumber();
- int lineNumber();
-// QString getPublicId()
-// QString getSystemId()
-
-private:
- QXmlSimpleReader* reader;
-
- //QXmlLocatorPrivate *d;
-};
-
-//
-// SAX handler classes
-//
-
-class QM_EXPORT QXmlContentHandler
-{
-public:
- virtual ~QXmlContentHandler() {}
- virtual void setDocumentLocator( QXmlLocator* locator ) = 0;
- virtual bool startDocument() = 0;
- virtual bool endDocument() = 0;
- virtual bool startPrefixMapping( const QString& prefix, const QString& uri ) = 0;
- virtual bool endPrefixMapping( const QString& prefix ) = 0;
- virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ) = 0;
- virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ) = 0;
- virtual bool characters( const QString& ch ) = 0;
- virtual bool ignorableWhitespace( const QString& ch ) = 0;
- virtual bool processingInstruction( const QString& target, const QString& data ) = 0;
- virtual bool skippedEntity( const QString& name ) = 0;
- virtual QString errorString() = 0;
-};
-
-class QM_EXPORT QXmlErrorHandler
-{
-public:
- virtual ~QXmlErrorHandler() {}
- virtual bool warning( const QXmlParseException& exception ) = 0;
- virtual bool error( const QXmlParseException& exception ) = 0;
- virtual bool fatalError( const QXmlParseException& exception ) = 0;
- virtual QString errorString() = 0;
-};
-
-class QM_EXPORT QXmlDTDHandler
-{
-public:
- virtual ~QXmlDTDHandler() {}
- virtual bool notationDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
- virtual bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName ) = 0;
- virtual QString errorString() = 0;
-};
-
-class QM_EXPORT QXmlEntityResolver
-{
-public:
- virtual ~QXmlEntityResolver() {}
- virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret ) = 0;
- virtual QString errorString() = 0;
-};
-
-class QM_EXPORT QXmlLexicalHandler
-{
-public:
- virtual ~QXmlLexicalHandler() {}
- virtual bool startDTD( const QString& name, const QString& publicId, const QString& systemId ) = 0;
- virtual bool endDTD() = 0;
-// virtual bool startEntity( const QString& name ) = 0;
-// virtual bool endEntity( const QString& name ) = 0;
- virtual bool startCDATA() = 0;
- virtual bool endCDATA() = 0;
- virtual bool comment( const QString& ch ) = 0;
- virtual QString errorString() = 0;
-};
-
-class QM_EXPORT QXmlDeclHandler
-{
-public:
- virtual ~QXmlDeclHandler() {}
- virtual bool attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value ) = 0;
- virtual bool internalEntityDecl( const QString& name, const QString& value ) = 0;
- virtual bool externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
- virtual QString errorString() = 0;
-};
-
-
-class QM_EXPORT QXmlDefaultHandler : public QXmlContentHandler, public QXmlErrorHandler, public QXmlDTDHandler, public QXmlEntityResolver, public QXmlLexicalHandler, public QXmlDeclHandler
-{
-public:
- QXmlDefaultHandler() { }
- virtual ~QXmlDefaultHandler() { }
-
- void setDocumentLocator( QXmlLocator* locator );
- bool startDocument();
- bool endDocument();
- bool startPrefixMapping( const QString& prefix, const QString& uri );
- bool endPrefixMapping( const QString& prefix );
- bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts );
- bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName );
- bool characters( const QString& ch );
- bool ignorableWhitespace( const QString& ch );
- bool processingInstruction( const QString& target, const QString& data );
- bool skippedEntity( const QString& name );
-
- bool warning( const QXmlParseException& exception );
- bool error( const QXmlParseException& exception );
- bool fatalError( const QXmlParseException& exception );
-
- bool notationDecl( const QString& name, const QString& publicId, const QString& systemId );
- bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName );
-
- bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret );
-
- bool startDTD( const QString& name, const QString& publicId, const QString& systemId );
- bool endDTD();
-// bool startEntity( const QString& name );
-// bool endEntity( const QString& name );
- bool startCDATA();
- bool endCDATA();
- bool comment( const QString& ch );
-
- bool attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value );
- bool internalEntityDecl( const QString& name, const QString& value );
- bool externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId );
-
- QString errorString();
-
-private:
- //QXmlDefaultHandlerPrivate *d;
-};
-
-#ifdef _WS_QWS_
-#ifdef QT_XML_CPP
-#define inline
-#else
-#define QT_NO_XML_INLINE
-#endif
-#endif
-
-#ifndef QT_NO_XML_INLINE
-//
-// inlines
-//
-
-inline bool QXmlSimpleReader::is_S(const QChar& ch)
-{ return ch==' ' || ch=='\t' || ch=='\n' || ch=='\r'; }
-
-inline bool QXmlSimpleReader::is_Letter( const QChar& ch )
-{ return ch.isLetter(); }
-
-inline bool QXmlSimpleReader::is_NameBeginning( const QChar& ch )
-{ return ch=='_' || ch==':' || ch.isLetter(); }
-
-inline bool QXmlSimpleReader::is_Digit( const QChar& ch )
-{ return ch.isDigit(); }
-
-inline bool QXmlSimpleReader::is_CombiningChar( const QChar& )
-{ return FALSE; }
-
-inline bool QXmlSimpleReader::is_Extender( const QChar& )
-{ return FALSE; }
-
-inline bool QXmlSimpleReader::is_NameChar( const QChar& ch )
-{
- return ch=='.' || ch=='-' || ch=='_' || ch==':' ||
- is_Letter(ch) || is_Digit(ch) ||
- is_CombiningChar(ch) || is_Extender(ch);
-}
-
-inline void QXmlSimpleReader::next()
-{
- if ( !xmlRef.isEmpty() ) {
- c = xmlRef[0];
- xmlRef.remove( 0, 1 );
- } else {
- if ( c=='\n' || c=='\r' ) {
- lineNr++;
- columnNr = -1;
- }
- if ( pos >= xmlLength ) {
- c = QEOF;
- } else {
- c = xml[pos];
- columnNr++;
- pos++;
- }
- }
-}
-
-inline bool QXmlSimpleReader::atEnd()
-{ return c == QEOF; }
-
-inline void QXmlSimpleReader::eat_ws()
-{ while ( !atEnd() && is_S(c) ) next(); }
-
-inline void QXmlSimpleReader::next_eat_ws()
-{ next(); eat_ws(); }
-
-
-// use buffers instead of QString::operator+= when single characters are read
-inline QString& QXmlSimpleReader::string()
-{
- stringValue += QString( stringArray, stringPos );
- stringPos = 0;
- return stringValue;
-}
-inline QString& QXmlSimpleReader::name()
-{
- nameValue += QString( nameArray, namePos );
- namePos = 0;
- return nameValue;
-}
-inline QString& QXmlSimpleReader::ref()
-{
- refValue += QString( refArray, refPos );
- refPos = 0;
- return refValue;
-}
-
-inline void QXmlSimpleReader::stringClear()
-{ stringValue = ""; stringPos = 0; }
-inline void QXmlSimpleReader::nameClear()
-{ nameValue = ""; namePos = 0; }
-inline void QXmlSimpleReader::refClear()
-{ refValue = ""; refPos = 0; }
-
-inline void QXmlSimpleReader::stringAddC()
-{
- if ( stringPos >= 256 ) {
- stringValue += QString( stringArray, stringPos );
- stringPos = 0;
- }
- stringArray[stringPos++] = c;
-}
-inline void QXmlSimpleReader::nameAddC()
-{
- if ( namePos >= 256 ) {
- nameValue += QString( nameArray, namePos );
- namePos = 0;
- }
- nameArray[namePos++] = c;
-}
-inline void QXmlSimpleReader::refAddC()
-{
- if ( refPos >= 256 ) {
- refValue += QString( refArray, refPos );
- refPos = 0;
- }
- refArray[refPos++] = c;
-}
-
-inline void QXmlSimpleReader::stringAddC(const QChar& ch)
-{
- if ( stringPos >= 256 ) {
- stringValue += QString( stringArray, stringPos );
- stringPos = 0;
- }
- stringArray[stringPos++] = ch;
-}
-inline void QXmlSimpleReader::nameAddC(const QChar& ch)
-{
- if ( namePos >= 256 ) {
- nameValue += QString( nameArray, namePos );
- namePos = 0;
- }
- nameArray[namePos++] = ch;
-}
-inline void QXmlSimpleReader::refAddC(const QChar& ch)
-{
- if ( refPos >= 256 ) {
- refValue += QString( refArray, refPos );
- refPos = 0;
- }
- refArray[refPos++] = ch;
-}
-#endif
-
-#ifdef _WS_QWS_
-#ifdef QT_XML_CPP
-#undef inline
-#endif
-#endif
-
-#endif //QT_NO_XML
-
-#endif
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5004a95..c6af813 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,7 @@ include_directories(
${PROJECT_SOURCE_DIR}/liblodepng
${PROJECT_SOURCE_DIR}/libmscgen
${PROJECT_SOURCE_DIR}/libversion
+ ${PROJECT_SOURCE_DIR}/libxml
${PROJECT_SOURCE_DIR}/vhdlparser
${PROJECT_SOURCE_DIR}/src
${CLANG_INCLUDEDIR}
@@ -114,7 +115,6 @@ set(LEX_FILES scanner
commentcnv
commentscan
constexp
- xml
xmlcode
sqlcode
configimpl)
@@ -190,7 +190,6 @@ add_library(doxymain STATIC
${GENERATED_SRC}/scanner.l.h
${GENERATED_SRC}/sqlcode.l.h
${GENERATED_SRC}/vhdlcode.l.h
- ${GENERATED_SRC}/xml.l.h
${GENERATED_SRC}/xmlcode.l.h
${GENERATED_SRC}/code.cpp
${GENERATED_SRC}/commentcnv.cpp
@@ -206,7 +205,6 @@ add_library(doxymain STATIC
${GENERATED_SRC}/scanner.cpp
${GENERATED_SRC}/sqlcode.cpp
${GENERATED_SRC}/vhdlcode.cpp
- ${GENERATED_SRC}/xml.cpp
${GENERATED_SRC}/xmlcode.cpp
#
${GENERATED_SRC}/ce_parse.cpp
@@ -348,6 +346,7 @@ target_link_libraries(doxygen PRIVATE
md5
lodepng
mscgen
+ xml
doxygen_version
vhdlparser
${SQLITE3_LIBRARIES}
diff --git a/src/bufstr.h b/src/bufstr.h
index e64a049..ca733ad 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -1,13 +1,13 @@
/******************************************************************************
*
- *
+ *
*
*
* Copyright (C) 1997-2015 by Dimitri van 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.
*
@@ -18,20 +18,18 @@
#ifndef _BUFSTR_H
#define _BUFSTR_H
-#include <qglobal.h>
-#include <qcstring.h>
-#include <stdlib.h>
+#include <cstdlib>
/*! @brief Buffer used to store strings
- *
+ *
* This buffer is used append characters and strings. It will automatically
* resize itself, yet provide efficient random access to the content.
*/
-class BufStr
+class BufStr
{
public:
- BufStr(uint size)
- : m_size(size), m_writeOffset(0), m_spareRoom(10240), m_buf(0)
+ BufStr(uint size)
+ : m_size(size), m_writeOffset(0), m_spareRoom(10240), m_buf(0)
{
m_buf = (char *)calloc(size,1);
}
@@ -95,8 +93,8 @@ class BufStr
return m_buf;
}
uint curPos() const
- {
- return m_writeOffset;
+ {
+ return m_writeOffset;
}
void dropFromStart(uint bytes)
{
@@ -108,7 +106,7 @@ class BufStr
private:
void makeRoomFor(uint size)
{
- if (m_writeOffset+size>=m_size)
+ if (m_writeOffset+size>=m_size)
{
resize(m_size+size+m_spareRoom);
}
diff --git a/src/code.l b/src/code.l
index 233a4f0..f7e1775 100644
--- a/src/code.l
+++ b/src/code.l
@@ -400,7 +400,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
}
else // Start of Objective-C method
{
- //printf("Method!\n");
+ DBG_CTX((stderr,"Start of Objective-C method!\n"));
yyextra->code->codify(yytext);
BEGIN(ObjCMethod);
}
@@ -477,7 +477,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
{
if (ambig) // multiple input files match the name
{
- //printf("===== yes %s is ambiguous\n",yytext);
+ DBG_CTX((stderr,"===== yes %s is ambiguous\n",yytext));
QCString name = QDir::cleanDirPath(yytext).utf8();
if (!name.isEmpty() && yyextra->sourceFileDef)
{
@@ -499,7 +499,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
found = TRUE;
}
}
- //printf(" include file %s found=%d\n",fd ? fd->absFilePath().data() : "<none>",found);
+ DBG_CTX((stderr," include file %s found=%d\n",fd ? fd->absFilePath().data() : "<none>",found));
if (found)
{
writeMultiLineCodeLink(yyscanner,*yyextra->code,fd,yytext);
@@ -587,13 +587,13 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
BEGIN(Body);
}
<Body,ClassVar>"@end" {
- //printf("End of objc scope fd=%s\n",yyextra->sourceFileDef->name().data());
+ DBG_CTX((stderr,"End of objc scope fd=%s\n",yyextra->sourceFileDef->name().data()));
if (yyextra->sourceFileDef)
{
const FileDef *fd=yyextra->sourceFileDef;
yyextra->insideObjC = fd->name().lower().right(2)==".m" ||
fd->name().lower().right(3)==".mm";
- //printf("insideObjC=%d\n",yyextra->insideObjC);
+ DBG_CTX((stderr,"insideObjC=%d\n",yyextra->insideObjC));
}
else
{
@@ -702,7 +702,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
}
<PackageName>{ID}("."{ID})* {
yyextra->curClassName=substitute(yytext,".","::");
- //printf("found package: %s\n",yyextra->curClassName.data());
+ DBG_CTX((stderr,"found package: %s\n",yyextra->curClassName.data()));
addType(yyscanner);
codifyLines(yyscanner,yytext);
}
@@ -896,11 +896,9 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
endFontClass(yyscanner);
BEGIN(UsingName);
}
-<UsingName>{ID}("::"{ID})* { addUsingDirective(yyscanner,yytext);
+<UsingName>{ID}("::"{ID})* {
+ addUsingDirective(yyscanner,yytext);
generateClassOrGlobalLink(yyscanner,*yyextra->code,yytext);
- DBG_CTX((stderr,"** scope stack push CLASSBLOCK\n"));
- yyextra->scopeStack.push(CLASSBLOCK);
- pushScope(yyscanner,yytext);
BEGIN(Body);
}
<UsingName>\n { codifyLines(yyscanner,yytext); BEGIN(Body); }
@@ -1300,7 +1298,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
<Body>[,=;\[] {
if (yyextra->insideObjC && *yytext=='[')
{
- //printf("Found start of ObjC call!\n");
+ DBG_CTX((stderr,"Found start of ObjC call!\n"));
// start of a method call
yyextra->contextMap.clear();
yyextra->nameMap.clear();
@@ -1370,7 +1368,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
yyextra->name+=yytext;
if (yyextra->theCallContext.getClass())
{
- //printf("Calling method %s\n",yyextra->name.data());
+ DBG_CTX((stderr,"Calling method %s\n",yyextra->name.data()));
if (!generateClassMemberLink(yyscanner,*yyextra->code,yyextra->theCallContext.getClass(),yyextra->name))
{
yyextra->code->codify(yytext);
@@ -1395,7 +1393,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
saveObjCContext(yyscanner);
yyextra->currentCtx->format+=*yytext;
BEGIN(ObjCCall);
- //printf("open\n");
+ DBG_CTX((stderr,"open\n"));
}
<ObjCCall,ObjCMName>"]"|"}" {
yyextra->currentCtx->format+=*yytext;
@@ -1413,7 +1411,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
writeObjCMethodCall(yyscanner,ctx);
BEGIN(Body);
}
- //printf("close\n");
+ DBG_CTX((stderr,"close\n"));
}
<ObjCCall,ObjCMName>"//".* {
yyextra->currentCtx->format+=escapeComment(yyscanner,yytext);
@@ -1437,7 +1435,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
if (yyextra->braceCount==0)
{
yyextra->currentCtx->objectTypeOrName=yytext;
- //printf("new type=%s\n",yyextra->currentCtx->objectTypeOrName.data());
+ DBG_CTX((stderr,"new type=%s\n",yyextra->currentCtx->objectTypeOrName.data()));
BEGIN(ObjCMName);
}
}
@@ -1610,7 +1608,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
<MemberCall,MemberCall2,FuncCall>("*"{B}*)?")" {
if (yytext[0]==')') // no a pointer cast
{
- //printf("addVariable(%s,%s)\n",yyextra->parmType.data(),yyextra->parmName.data());
+ DBG_CTX((stderr,"addVariable(%s,%s)\n",yyextra->parmType.data(),yyextra->parmName.data()));
if (yyextra->parmType.isEmpty())
{
yyextra->parmType=yyextra->parmName;
@@ -2179,7 +2177,7 @@ NUMBER {INTEGER_NUMBER}|{FLOAT_NUMBER}
static void addVariable(yyscan_t yyscanner,QCString type,QCString name)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("VariableContext::addVariable(%s,%s)\n",type.data(),name.data());
+ DBG_CTX((stderr,"VariableContext::addVariable(%s,%s)\n",type.data(),name.data()));
QCString ltype = type.simplifyWhiteSpace();
QCString lname = name.simplifyWhiteSpace();
if (ltype.left(7)=="struct ")
@@ -2247,7 +2245,7 @@ static void pushScope(yyscan_t yyscanner,const char *s)
yyextra->classScope += "::";
yyextra->classScope += s;
}
- //printf("pushScope(%s) result: '%s'\n",s,yyextra->classScope.data());
+ DBG_CTX((stderr,"pushScope(%s) result: '%s'\n",s,yyextra->classScope.data()));
}
@@ -2265,7 +2263,7 @@ static void popScope(yyscan_t yyscanner)
{
//err("Too many end of scopes found!\n");
}
- //printf("popScope() result: '%s'\n",yyextra->classScope.data());
+ DBG_CTX((stderr,"popScope() result: '%s'\n",yyextra->classScope.data()));
}
static void setCurrentDoc(yyscan_t yyscanner,const QCString &anchor)
@@ -2298,12 +2296,12 @@ static void addToSearchIndex(yyscan_t yyscanner,const char *text)
static void setClassScope(yyscan_t yyscanner,const QCString &name)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("setClassScope(%s)\n",name.data());
+ DBG_CTX((stderr,"setClassScope(%s)\n",name.data()));
QCString n=name;
n=n.simplifyWhiteSpace();
int ts=n.find('<'); // start of template
int te=n.findRev('>'); // end of template
- //printf("ts=%d te=%d\n",ts,te);
+ DBG_CTX((stderr,"ts=%d te=%d\n",ts,te));
if (ts!=-1 && te!=-1 && te>ts)
{
// remove template from scope
@@ -2321,7 +2319,7 @@ static void setClassScope(yyscan_t yyscanner,const QCString &name)
n = n.mid(i+2);
}
pushScope(yyscanner,n);
- //printf("--->New class scope '%s'\n",yyextra->classScope.data());
+ DBG_CTX((stderr,"--->New class scope '%s'\n",yyextra->classScope.data()));
}
/*! start a new line of code, inserting a line number if yyextra->sourceFileDef
@@ -2339,7 +2337,7 @@ static void startCodeLine(yyscan_t yyscanner)
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
- //printf("%s:startCodeLine(%d)=%p\n",yyextra->sourceFileDef->name().data(),yyextra->yyLineNr,d);
+ DBG_CTX((stderr,"%s:startCodeLine(%d)=%p\n",yyextra->sourceFileDef->name().data(),yyextra->yyLineNr,d));
if (!yyextra->includeCodeFragment && d)
{
yyextra->currentDefinition = d;
@@ -2353,7 +2351,7 @@ static void startCodeLine(yyscan_t yyscanner)
yyextra->args.resize(0);
yyextra->parmType.resize(0);
yyextra->parmName.resize(0);
- //printf("Real scope: '%s'\n",yyextra->realScope.data());
+ DBG_CTX((stderr,"Real scope: '%s'\n",yyextra->realScope.data()));
yyextra->bodyCurlyCount = 0;
QCString lineAnchor;
lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
@@ -2413,7 +2411,7 @@ static void nextCodeLine(yyscan_t yyscanner)
static void codifyLines(yyscan_t yyscanner,const char *text)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("codifyLines(%d,\"%s\")\n",yyextra->yyLineNr,text);
+ DBG_CTX((stderr,"codifyLines(%d,\"%s\")\n",yyextra->yyLineNr,text));
const char *p=text,*sp=p;
char c;
bool done=FALSE;
@@ -2485,13 +2483,13 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
{
yyextra->yyLineNr++;
*(p-1)='\0';
- //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
+ DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp));
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
nextCodeLine(yyscanner);
}
else
{
- //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
+ DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp));
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
done=TRUE;
}
@@ -2569,7 +2567,7 @@ static const ClassDef *stripClassName(yyscan_t yyscanner,const char *s,const Def
{
cd=yyextra->symbolResolver.resolveClass(d,clName);
}
- //printf("stripClass trying '%s' = %p\n",clName.data(),cd);
+ DBG_CTX((stderr,"stripClass trying '%s' = %p\n",clName.data(),cd));
if (cd)
{
return cd;
@@ -2590,14 +2588,14 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
{
QCString scope = name.left(scopeEnd);
QCString locName = name.right(name.length()-scopeEnd-2);
- //printf("explicit scope: name=%s scope=%s\n",locName.data(),scope.data());
+ DBG_CTX((stderr,"explicit scope: name=%s scope=%s\n",locName.data(),scope.data()));
const ClassDef *mcd = getClass(scope);
if (mcd && !locName.isEmpty())
{
const MemberDef *md=mcd->getMemberByName(locName);
if (md)
{
- //printf("name=%s scope=%s\n",locName.data(),scope.data());
+ DBG_CTX((stderr,"name=%s scope=%s\n",locName.data(),scope.data()));
yyextra->theCallContext.setScope(ScopedTypeVariant(stripClassName(yyscanner,md->typeString(),md->getOuterScope())));
return md;
}
@@ -2610,7 +2608,7 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
const MemberDef *md=mnd->getMemberByName(locName);
if (md)
{
- //printf("name=%s scope=%s\n",locName.data(),scope.data());
+ DBG_CTX((stderr,"name=%s scope=%s\n",locName.data(),scope.data()));
yyextra->theCallContext.setScope(ScopedTypeVariant(stripClassName(yyscanner,md->typeString(),md->getOuterScope())));
return md;
}
@@ -2654,7 +2652,7 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
// look for a global member
if ((mn=Doxygen::functionNameLinkedMap->find(name)))
{
- //printf("global var '%s'\n",name.data());
+ DBG_CTX((stderr,"global var '%s'\n",name.data()));
if (mn->size()==1) // global defined only once
{
const std::unique_ptr<MemberDef> &md=mn->front();
@@ -2679,7 +2677,7 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
if (!md->isStatic() || md->getBodyDef()==yyextra->sourceFileDef)
{
yyextra->theCallContext.setScope(ScopedTypeVariant(stripClassName(yyscanner,md->typeString(),md->getOuterScope())));
- //printf("returning member %s in source file %s\n",md->name().data(),yyextra->sourceFileDef->name().data());
+ DBG_CTX((stderr,"returning member %s in source file %s\n",md->name().data(),yyextra->sourceFileDef->name().data()));
return md.get();
}
}
@@ -2727,14 +2725,14 @@ static bool getLinkInScope(yyscan_t yyscanner,
{
if (md->isLinkable())
{
- //printf("found it %s!\n",md->qualifiedName().data());
+ DBG_CTX((stderr,"found it %s!\n",md->qualifiedName().data()));
if (yyextra->exampleBlock)
{
std::lock_guard<std::mutex> lock(g_addExampleMutex);
QCString anchor;
anchor.sprintf("a%d",yyextra->anchorCount);
- //printf("addExampleFile(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
- // yyextra->exampleFile.data());
+ DBG_CTX((stderr,"addExampleFile(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
+ yyextra->exampleFile.data()));
MemberDefMutable *mdm = toMemberDefMutable(md);
if (mdm && mdm->addExample(anchor,yyextra->exampleName,yyextra->exampleFile))
{
@@ -2749,8 +2747,8 @@ static bool getLinkInScope(yyscan_t yyscanner,
if (d && d->isLinkable())
{
yyextra->theCallContext.setScope(ScopedTypeVariant(stripClassName(yyscanner,md->typeString(),md->getOuterScope())));
- //printf("yyextra->currentDefinition=%p yyextra->currentMemberDef=%p yyextra->insideBody=%d\n",
- // yyextra->currentDefinition,yyextra->currentMemberDef,yyextra->insideBody);
+ DBG_CTX((stderr,"yyextra->currentDefinition=%p yyextra->currentMemberDef=%p yyextra->insideBody=%d\n",
+ yyextra->currentDefinition,yyextra->currentMemberDef,yyextra->insideBody));
if (yyextra->currentDefinition && yyextra->currentMemberDef &&
md!=yyextra->currentMemberDef && yyextra->insideBody && yyextra->collectXRefs)
@@ -2758,7 +2756,7 @@ static bool getLinkInScope(yyscan_t yyscanner,
std::lock_guard<std::mutex> lock(g_docCrossReferenceMutex);
addDocCrossReference(toMemberDefMutable(yyextra->currentMemberDef),toMemberDefMutable(md));
}
- //printf("d->getReference()='%s' d->getOutputBase()='%s' name='%s' member name='%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data());
+ DBG_CTX((stderr,"d->getReference()='%s' d->getOutputBase()='%s' name='%s' member name='%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data()));
writeMultiLineCodeLink(yyscanner,ol,md, text ? text : memberText);
addToSearchIndex(yyscanner,text ? text : memberText);
@@ -2783,7 +2781,7 @@ static bool getLink(yyscan_t yyscanner,
bool varOnly)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("getLink(%s,%s) yyextra->curClassName=%s\n",className,memberName,yyextra->curClassName.data());
+ DBG_CTX((stderr,"getLink(%s,%s) yyextra->curClassName=%s\n",className,memberName,yyextra->curClassName.data()));
QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className;
if (!getLinkInScope(yyscanner,c,m,memberName,ol,text,varOnly))
@@ -2831,11 +2829,11 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
const MemberDef *md=0;
bool isLocal=FALSE;
- //printf("generateClassOrGlobalLink(className=%s)\n",className.data());
+ DBG_CTX((stderr,"generateClassOrGlobalLink(className=%s)\n",className.data()));
if (!yyextra->isPrefixedWithThis || (lcd=yyextra->theVarContext.findVariable(className))==0) // not a local variable
{
const Definition *d = yyextra->currentDefinition;
- //printf("d=%s yyextra->sourceFileDef=%s\n",d?d->name().data():"<none>",yyextra->sourceFileDef?yyextra->sourceFileDef->name().data():"<none>");
+ DBG_CTX((stderr,"d=%s yyextra->sourceFileDef=%s\n",d?d->name().data():"<none>",yyextra->sourceFileDef?yyextra->sourceFileDef->name().data():"<none>"));
cd = yyextra->symbolResolver.resolveClass(d,className);
md = yyextra->symbolResolver.getTypedef();
DBG_CTX((stderr,"non-local variable name=%s cd=%s md=%s!\n",
@@ -2859,7 +2857,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
writeMultiLineCodeLink(yyscanner,*yyextra->code,nd,clName);
return;
}
- //printf("md=%s\n",md?md->name().data():"<none>");
+ DBG_CTX((stderr,"md=%s\n",md?md->name().data():"<none>"));
DBG_CTX((stderr,"is found as a type cd=%s nd=%s\n",
cd?cd->name().data():"<null>",
nd?nd->name().data():"<null>"));
@@ -2873,10 +2871,10 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
}
else
{
- //printf("local variable!\n");
+ DBG_CTX((stderr,"local variable!\n"));
if (lcd->type()!=ScopedTypeVariant::Dummy)
{
- //printf("non-dummy context lcd=%s!\n",lcd->name().data());
+ DBG_CTX((stderr,"non-dummy context lcd=%s!\n",lcd->name().data()));
yyextra->theCallContext.setScope(*lcd);
// to following is needed for links to a global variable, but is
@@ -2900,8 +2898,8 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
std::lock_guard<std::mutex> lock(g_addExampleMutex);
QCString anchor;
anchor.sprintf("_a%d",yyextra->anchorCount);
- //printf("addExampleClass(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
- // yyextra->exampleFile.data());
+ DBG_CTX((stderr,"addExampleClass(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
+ yyextra->exampleFile.data()));
ClassDefMutable *cdm = toClassDefMutable(const_cast<ClassDef*>(cd));
if (cdm && cdm->addExample(anchor,yyextra->exampleName,yyextra->exampleFile))
{
@@ -2933,7 +2931,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
if (md==0) // not found as a typedef
{
md = setCallContextForVar(yyscanner,clName);
- //printf("setCallContextForVar(%s) md=%p yyextra->currentDefinition=%p\n",clName,md,yyextra->currentDefinition);
+ DBG_CTX((stderr,"setCallContextForVar(%s) md=%p yyextra->currentDefinition=%p\n",clName,md,yyextra->currentDefinition));
if (md && yyextra->currentDefinition)
{
DBG_CTX((stderr,"%s accessible from %s? %d md->getOuterScope=%s\n",
@@ -2982,17 +2980,17 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
// extract class definition of the return type in order to resolve
// a->b()->c() like call chains
- //printf("type='%s' args='%s' class=%s\n",
- // xmd->typeString(),xmd->argsString(),
- // xmd->getClassDef()->name().data());
+ DBG_CTX((stderr,"type='%s' args='%s' class=%s\n",
+ xmd->typeString(),xmd->argsString(),
+ xmd->getClassDef()->name().data()));
if (yyextra->exampleBlock)
{
std::lock_guard<std::mutex> lock(g_addExampleMutex);
QCString anchor;
anchor.sprintf("a%d",yyextra->anchorCount);
- //printf("addExampleFile(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
- // yyextra->exampleFile.data());
+ DBG_CTX((stderr,"addExampleFile(%s,%s,%s)\n",anchor.data(),yyextra->exampleName.data(),
+ yyextra->exampleFile.data()));
MemberDefMutable *mdm = toMemberDefMutable(xmd);
if (mdm && mdm->addExample(anchor,yyextra->exampleName,yyextra->exampleFile))
{
@@ -3011,7 +3009,7 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
if (xd && xd->isLinkable())
{
- //printf("yyextra->currentDefinition=%p yyextra->currentMemberDef=%p xmd=%p yyextra->insideBody=%d\n",yyextra->currentDefinition,yyextra->currentMemberDef,xmd,yyextra->insideBody);
+ DBG_CTX((stderr,"yyextra->currentDefinition=%p yyextra->currentMemberDef=%p xmd=%p yyextra->insideBody=%d\n",yyextra->currentDefinition,yyextra->currentMemberDef,xmd,yyextra->insideBody));
if (xmd->templateMaster()) xmd = xmd->templateMaster();
@@ -3045,7 +3043,7 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
{
const ClassDef *cd = toClassDef(def);
const MemberDef *xmd = cd->getMemberByName(memName);
- //printf("generateClassMemberLink(class=%s,member=%s)=%p\n",def->name().data(),memName,xmd);
+ DBG_CTX((stderr,"generateClassMemberLink(class=%s,member=%s)=%p\n",def->name().data(),memName,xmd));
if (xmd)
{
return generateClassMemberLink(yyscanner,ol,xmd,memName);
@@ -3065,7 +3063,7 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
else if (def && def->definitionType()==Definition::TypeNamespace)
{
const NamespaceDef *nd = toNamespaceDef(def);
- //printf("Looking for %s inside namespace %s\n",memName,nd->name().data());
+ DBG_CTX((stderr,"Looking for %s inside namespace %s\n",memName,nd->name().data()));
const Definition *innerDef = nd->findInnerCompound(memName);
if (innerDef)
{
@@ -3084,8 +3082,8 @@ static void generateMemberLink(yyscan_t yyscanner,
const char *memName)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
- // varName.data(),memName,yyextra->classScope.data());
+ DBG_CTX((stderr,"generateMemberLink(object=%s,mem=%s) classScope=%s\n",
+ varName.data(),memName,yyextra->classScope.data()));
if (varName.isEmpty()) return;
@@ -3095,10 +3093,10 @@ static void generateMemberLink(yyscan_t yyscanner,
{
if (stv->type()!=ScopedTypeVariant::Dummy)
{
- //printf("Class found!\n");
+ DBG_CTX((stderr,"Class found!\n"));
if (getLink(yyscanner,stv->name(),memName,ol))
{
- //printf("Found result!\n");
+ DBG_CTX((stderr,"Found result!\n"));
return;
}
if (stv->localDef() && !stv->localDef()->baseClasses().empty())
@@ -3107,7 +3105,7 @@ static void generateMemberLink(yyscan_t yyscanner,
{
if (getLink(yyscanner,bcName,memName,ol))
{
- //printf("Found result!\n");
+ DBG_CTX((stderr,"Found result!\n"));
return;
}
}
@@ -3119,7 +3117,7 @@ static void generateMemberLink(yyscan_t yyscanner,
const ClassDef *vcd = yyextra->symbolResolver.resolveClass(yyextra->currentDefinition,yyextra->classScope);
if (vcd && vcd->isLinkable())
{
- //printf("Found class %s for variable '%s'\n",yyextra->classScope.data(),varName.data());
+ DBG_CTX((stderr,"Found class %s for variable '%s'\n",yyextra->classScope.data(),varName.data()));
MemberName *vmn=Doxygen::memberNameLinkedMap->find(varName);
if (vmn==0)
{
@@ -3137,7 +3135,7 @@ static void generateMemberLink(yyscan_t yyscanner,
{
if (vmd->getClassDef()==jcd)
{
- //printf("Found variable type=%s\n",vmd->typeString());
+ DBG_CTX((stderr,"Found variable type=%s\n",vmd->typeString()));
const ClassDef *mcd=stripClassName(yyscanner,vmd->typeString(),vmd->getOuterScope());
if (mcd && mcd->isLinkable())
{
@@ -3150,12 +3148,12 @@ static void generateMemberLink(yyscan_t yyscanner,
}
if (vmn)
{
- //printf("There is a variable with name '%s'\n",varName);
+ DBG_CTX((stderr,"There is a variable with name '%s'\n",varName));
for (const auto &vmd : *vmn)
{
if (vmd->getClassDef()==vcd)
{
- //printf("Found variable type=%s\n",vmd->typeString());
+ DBG_CTX((stderr,"Found variable type=%s\n",vmd->typeString()));
const ClassDef *mcd=stripClassName(yyscanner,vmd->typeString(),vmd->getOuterScope());
if (mcd && mcd->isLinkable())
{
@@ -3177,7 +3175,7 @@ static void generatePHPVariableLink(yyscan_t yyscanner,CodeOutputInterface &ol,c
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
QCString name = varName+7; // strip $this->
name.prepend("$");
- //printf("generatePHPVariableLink(%s) name=%s scope=%s\n",varName,name.data(),yyextra->classScope.data());
+ DBG_CTX((stderr,"generatePHPVariableLink(%s) name=%s scope=%s\n",varName,name.data(),yyextra->classScope.data()));
if (!getLink(yyscanner,yyextra->classScope,name,ol,varName))
{
codifyLines(yyscanner,varName);
@@ -3220,7 +3218,7 @@ static void generateFunctionLink(yyscan_t yyscanner,CodeOutputInterface &ol,cons
locFunc=locFunc.right(locFunc.length()-i-len).stripWhiteSpace();
int ts=locScope.find('<'); // start of template
int te=locScope.findRev('>'); // end of template
- //printf("ts=%d te=%d\n",ts,te);
+ DBG_CTX((stderr,"ts=%d te=%d\n",ts,te));
if (ts!=-1 && te!=-1 && te>ts)
{
// remove template from scope
@@ -3228,7 +3226,7 @@ static void generateFunctionLink(yyscan_t yyscanner,CodeOutputInterface &ol,cons
}
ts=funcScope.find('<'); // start of template
te=funcScope.findRev('>'); // end of template
- //printf("ts=%d te=%d\n",ts,te);
+ DBG_CTX((stderr,"ts=%d te=%d\n",ts,te));
if (ts!=-1 && te!=-1 && te>ts)
{
// remove template from scope
@@ -3343,12 +3341,12 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
const char *p = ctx->format.data();
if (!ctx->methodName.isEmpty())
{
- //printf("writeObjCMethodCall(%s) obj=%s method=%s\n",
- // ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data());
+ DBG_CTX((stderr,"writeObjCMethodCall(%s) obj=%s method=%s\n",
+ ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data()));
if (!ctx->objectTypeOrName.isEmpty() && ctx->objectTypeOrName.at(0)!='$')
{
- //printf("Looking for object=%s method=%s\n",ctx->objectTypeOrName.data(),
- // ctx->methodName.data());
+ DBG_CTX((stderr,"Looking for object=%s method=%s\n",ctx->objectTypeOrName.data(),
+ ctx->methodName.data()));
const ScopedTypeVariant *stv = yyextra->theVarContext.findVariable(ctx->objectTypeOrName);
if (stv==0) // not a local variable
{
@@ -3365,29 +3363,29 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
ctx->objectType = yyextra->symbolResolver.resolveClass(yyextra->currentDefinition,ctx->objectTypeOrName);
ctx->method = yyextra->symbolResolver.getTypedef();
}
- //printf(" object is class? %p\n",ctx->objectType);
+ DBG_CTX((stderr," object is class? %p\n",ctx->objectType));
if (ctx->objectType) // found class
{
ctx->method = ctx->objectType->getMemberByName(ctx->methodName);
- //printf(" yes->method=%s\n",ctx->method?ctx->method->name().data():"<none>");
+ DBG_CTX((stderr," yes->method=%s\n",ctx->method?ctx->method->name().data():"<none>"));
}
else if (ctx->method==0) // search for class variable with the same name
{
- //printf(" no\n");
- //printf("yyextra->currentDefinition=%p\n",yyextra->currentDefinition);
+ DBG_CTX((stderr," no\n"));
+ DBG_CTX((stderr,"yyextra->currentDefinition=%p\n",yyextra->currentDefinition));
if (yyextra->currentDefinition &&
yyextra->currentDefinition->definitionType()==Definition::TypeClass)
{
ctx->objectVar = (toClassDef(yyextra->currentDefinition))->getMemberByName(ctx->objectTypeOrName);
- //printf(" ctx->objectVar=%p\n",ctx->objectVar);
+ DBG_CTX((stderr," ctx->objectVar=%p\n",ctx->objectVar));
if (ctx->objectVar)
{
ctx->objectType = stripClassName(yyscanner,ctx->objectVar->typeString(),yyextra->currentDefinition);
- //printf(" ctx->objectType=%p\n",ctx->objectType);
+ DBG_CTX((stderr," ctx->objectType=%p\n",ctx->objectType));
if (ctx->objectType && !ctx->methodName.isEmpty())
{
ctx->method = ctx->objectType->getMemberByName(ctx->methodName);
- //printf(" ctx->method=%p\n",ctx->method);
+ DBG_CTX((stderr," ctx->method=%p\n",ctx->method));
}
}
}
@@ -3395,7 +3393,7 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
}
else // local variable
{
- //printf(" object is local variable\n");
+ DBG_CTX((stderr," object is local variable\n"));
if (stv->globalDef() && !ctx->methodName.isEmpty())
{
const ClassDef *cd = toClassDef(stv->globalDef());
@@ -3403,13 +3401,13 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
{
ctx->method = cd->getMemberByName(ctx->methodName);
}
- //printf(" class=%p method=%p\n",cd,ctx->method);
+ DBG_CTX((stderr," class=%p method=%p\n",cd,ctx->method));
}
}
}
}
- //printf("[");
+ DBG_CTX((stderr,"["));
while ((c=*p++)) // for each character in ctx->format
{
if (c=='$')
@@ -3448,7 +3446,7 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
}
else
{
- //printf("Invalid name: id=%d\n",refId);
+ DBG_CTX((stderr,"Invalid name: id=%d\n",refId));
}
}
else if (nc=='o') // reference to potential object name
@@ -3539,7 +3537,7 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
}
else
{
- //printf("Invalid object: id=%d\n",refId);
+ DBG_CTX((stderr,"Invalid object: id=%d\n",refId));
}
}
else if (nc=='c') // reference to nested call
@@ -3578,12 +3576,12 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
ctx->method = ctx->objectType->getMemberByName(ctx->methodName);
}
}
- //printf(" ***** method=%s -> object=%p\n",ictx->method->name().data(),ctx->objectType);
+ DBG_CTX((stderr," ***** method=%s -> object=%p\n",ictx->method->name().data(),ctx->objectType));
}
}
else
{
- //printf("Invalid context: id=%d\n",refId);
+ DBG_CTX((stderr,"Invalid context: id=%d\n",refId));
}
}
else if (nc=='w') // some word
@@ -3629,10 +3627,10 @@ static void writeObjCMethodCall(yyscan_t yyscanner,ObjCCallCtx *ctx)
codifyLines(yyscanner,s);
}
}
- //printf("%s %s]\n",ctx->objectTypeOrName.data(),ctx->methodName.data());
- //printf("}=(type='%s',name='%s')",
- // ctx->objectTypeOrName.data(),
- // ctx->methodName.data());
+ DBG_CTX((stderr,"%s %s]\n",ctx->objectTypeOrName.data(),ctx->methodName.data()));
+ DBG_CTX((stderr,"}=(type='%s',name='%s')",
+ ctx->objectTypeOrName.data(),
+ ctx->methodName.data()));
}
// Replaces an Objective-C method name fragment s by a marker of the form
@@ -3717,13 +3715,13 @@ static void saveObjCContext(yyscan_t yyscanner)
if (yyextra->braceCount==0 && YY_START==ObjCCall)
{
yyextra->currentCtx->objectTypeOrName=yyextra->currentCtx->format.mid(1);
- //printf("new type=%s\n",yyextra->currentCtx->objectTypeOrName.data());
+ DBG_CTX((stderr,"new type=%s\n",yyextra->currentCtx->objectTypeOrName.data()));
}
yyextra->contextStack.push(yyextra->currentCtx);
}
else
{
- //printf("Trying to save NULL context!\n");
+ DBG_CTX((stderr,"Trying to save NULL context!\n"));
}
auto newCtx = std::make_unique<ObjCCallCtx>();
newCtx->id = yyextra->currentCtxId;
@@ -3732,7 +3730,7 @@ static void saveObjCContext(yyscan_t yyscanner)
newCtx->objectType = 0;
newCtx->objectVar = 0;
newCtx->method = 0;
- //printf("save state=%d\n",YY_START);
+ DBG_CTX((stderr,"save state=%d\n",YY_START));
yyextra->currentCtx = newCtx.get();
yyextra->contextMap.emplace(std::make_pair(yyextra->currentCtxId,std::move(newCtx)));
yyextra->braceCount = 0;
@@ -3742,7 +3740,7 @@ static void saveObjCContext(yyscan_t yyscanner)
static void restoreObjCContext(yyscan_t yyscanner)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("restore state=%d->%d\n",YY_START,yyextra->currentCtx->lexState);
+ DBG_CTX((stderr,"restore state=%d->%d\n",YY_START,yyextra->currentCtx->lexState));
BEGIN(yyextra->currentCtx->lexState);
yyextra->braceCount = yyextra->currentCtx->braceCount;
if (!yyextra->contextStack.empty())
@@ -3753,7 +3751,7 @@ static void restoreObjCContext(yyscan_t yyscanner)
else
{
yyextra->currentCtx = 0;
- //printf("Trying to pop context while yyextra->contextStack is empty!\n");
+ DBG_CTX((stderr,"Trying to pop context while yyextra->contextStack is empty!\n"));
}
}
@@ -3780,7 +3778,7 @@ CCodeParser::~CCodeParser()
void CCodeParser::resetCodeParserState()
{
struct yyguts_t *yyg = (struct yyguts_t*)p->yyscanner;
- //printf("***CodeParser::reset()\n");
+ DBG_CTX((stderr,"***CodeParser::reset()\n"));
yyextra->theVarContext.clear();
while (!yyextra->classScopeLengthStack.empty()) yyextra->classScopeLengthStack.pop();
yyextra->codeClassMap.clear();
@@ -3796,8 +3794,8 @@ void CCodeParser::parseCode(CodeOutputInterface &od,const char *className,const
{
yyscan_t yyscanner = p->yyscanner;
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- //printf("***parseCode() exBlock=%d exName=%s fd=%p className=%s searchCtx=%s\n",
- // exBlock,exName,fd,className,searchCtx?searchCtx->name().data():"<none>");
+ DBG_CTX((stderr,"***parseCode() exBlock=%d exName=%s fd=%p className=%s searchCtx=%s\n",
+ exBlock,exName,fd,className,searchCtx?searchCtx->name().data():"<none>"));
if (s.isEmpty()) return;
@@ -3832,7 +3830,7 @@ void CCodeParser::parseCode(CodeOutputInterface &od,const char *className,const
yyextra->theCallContext.clear();
while (!yyextra->scopeStack.empty()) yyextra->scopeStack.pop();
yyextra->classScope = className;
- //printf("parseCCode %s\n",className);
+ DBG_CTX((stderr,"parseCCode %s\n",className));
yyextra->exampleBlock = exBlock;
yyextra->exampleName = exName;
yyextra->sourceFileDef = fd;
@@ -3858,10 +3856,10 @@ void CCodeParser::parseCode(CodeOutputInterface &od,const char *className,const
if (!yyextra->exampleName.isEmpty())
{
yyextra->exampleFile = convertNameToFile(yyextra->exampleName+"-example",FALSE,TRUE);
- //printf("yyextra->exampleFile=%s\n",yyextra->exampleFile.data());
+ DBG_CTX((stderr,"yyextra->exampleFile=%s\n",yyextra->exampleFile.data()));
}
yyextra->includeCodeFragment = inlineFragment;
- //printf("** exBlock=%d exName=%s include=%d\n",exBlock,exName,inlineFragment);
+ DBG_CTX((stderr,"** exBlock=%d exName=%s include=%d\n",exBlock,exName,inlineFragment));
startCodeLine(yyscanner);
yyextra->type.resize(0);
yyextra->name.resize(0);
diff --git a/src/config.xml b/src/config.xml
index d9b29aa..7d5808a 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -1316,22 +1316,33 @@ FILE_VERSION_FILTER = "cleartool desc -fmt \%Vn"
<docs>
<![CDATA[
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
+ potential errors in the documentation, such as documenting some
+ parameters in a documented function twice, or documenting parameters that
don't exist or using markup commands wrongly.
]]>
</docs>
</option>
+ <option type='bool' id='WARN_IF_INCOMPLETE_DOC' defval='1'>
+ <docs>
+<![CDATA[
+ If \c WARN_IF_INCOMPLETE_DOC is set to \c YES, doxygen will warn about
+ incomplete function parameter documentation.
+ If set to \c NO, doxygen will accept that some parameters have no
+ documentation without warning.
+]]>
+ </docs>
+ </option>
<option type='bool' id='WARN_NO_PARAMDOC' defval='0'>
<docs>
<![CDATA[
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
+ wrong parameter documentation, but not about the absence of
documentation.
If \ref cfg_extract_all "EXTRACT_ALL" is set to \c YES then this flag will
automatically be disabled.
+ See also \ref cfg_warn_if_incomplete_doc "WARN_IF_INCOMPLETE_DOC"
]]>
</docs>
</option>
diff --git a/src/constexp.h b/src/constexp.h
index 0b52e14..212387b 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -1,13 +1,10 @@
/******************************************************************************
*
- *
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2021 by Dimitri van 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.
*
@@ -19,14 +16,14 @@
#ifndef _CONSTEXP_H
#define _CONSTEXP_H
-#include <qcstring.h>
+#include <string>
class ConstExpressionParser
{
public:
ConstExpressionParser();
~ConstExpressionParser();
- bool parse(const char *fileName,int line,const QCString &expression);
+ bool parse(const char *fileName,int line,const std::string &expression);
private:
struct Private;
Private *p;
diff --git a/src/constexp.l b/src/constexp.l
index 0f053bd..acff1eb 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -132,7 +132,7 @@ ConstExpressionParser::~ConstExpressionParser()
delete p;
}
-bool ConstExpressionParser::parse(const char *fileName,int lineNr,const QCString &s)
+bool ConstExpressionParser::parse(const char *fileName,int lineNr,const std::string &s)
{
struct yyguts_t *yyg = (struct yyguts_t*)p->yyscanner;
@@ -146,13 +146,13 @@ bool ConstExpressionParser::parse(const char *fileName,int lineNr,const QCString
yyextra->inputPosition = 0;
constexpYYrestart( yyin, p->yyscanner );
- printlex(yy_flex_debug, TRUE, __FILE__, fileName);
+ printlex(yy_flex_debug, true, __FILE__, fileName);
//printf("Expression: '%s'\n",s.data());
constexpYYparse(p->yyscanner);
//printf("Result: %ld\n",(long)g_resultValue);
- printlex(yy_flex_debug, FALSE, __FILE__, fileName);
+ printlex(yy_flex_debug, false, __FILE__, fileName);
bool result = (long)yyextra->resultValue!=0;
return result;
diff --git a/src/constexp.y b/src/constexp.y
index c4110f9..560b3c3 100644
--- a/src/constexp.y
+++ b/src/constexp.y
@@ -1,13 +1,10 @@
/******************************************************************************
*
- *
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2021 by Dimitri van 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.
*
@@ -28,8 +25,8 @@
int constexpYYerror(yyscan_t yyscanner, const char *s)
{
struct constexpYY_state* yyextra = constexpYYget_extra(yyscanner);
- warn(yyextra->constExpFileName, yyextra->constExpLineNr,
- "preprocessing issue while doing constant expression evaluation: %s: input='%s'",s,yyextra->inputString);
+ warn(yyextra->constExpFileName.c_str(), yyextra->constExpLineNr,
+ "preprocessing issue while doing constant expression evaluation: %s: input='%s'",s,yyextra->inputString.c_str());
return 0;
}
@@ -81,8 +78,8 @@ start: constant_expression
constant_expression: logical_or_expression
{ $$ = $1; }
- | logical_or_expression
- TOK_QUESTIONMARK logical_or_expression
+ | logical_or_expression
+ TOK_QUESTIONMARK logical_or_expression
TOK_COLON logical_or_expression
{
bool c = ($1.isInt() ? ((long)$1 != 0) : ((double)$1 != 0.0));
@@ -108,9 +105,9 @@ logical_and_expression: inclusive_or_expression
inclusive_or_expression: exclusive_or_expression
{ $$ = $1; }
- | inclusive_or_expression TOK_BITWISEOR
+ | inclusive_or_expression TOK_BITWISEOR
exclusive_or_expression
- {
+ {
$$ = CPPValue( (long)$1 | (long)$3 );
}
;
@@ -126,7 +123,7 @@ exclusive_or_expression: and_expression
and_expression: equality_expression
{ $$ = $1; }
| and_expression TOK_AMPERSAND equality_expression
- {
+ {
$$ = CPPValue( (long)$1 & (long)$3 );
}
;
@@ -134,7 +131,7 @@ and_expression: equality_expression
equality_expression: relational_expression
{ $$ = $1; }
| equality_expression TOK_EQUAL relational_expression
- {
+ {
$$ = CPPValue( (long)((double)$1 == (double)$3) );
}
| equality_expression TOK_NOTEQUAL relational_expression
@@ -146,7 +143,7 @@ equality_expression: relational_expression
relational_expression: shift_expression
{ $$ = $1; }
| relational_expression TOK_LESSTHAN shift_expression
- {
+ {
$$ = CPPValue( (long)((double)$1 < (double)$3) );
}
| relational_expression TOK_GREATERTHAN shift_expression
@@ -169,7 +166,7 @@ shift_expression: additive_expression
{ $$ = $1; }
| shift_expression TOK_SHIFTLEFT additive_expression
{
- $$ = CPPValue( (long)$1 << (long)$3 );
+ $$ = CPPValue( (long)$1 << (long)$3 );
}
| shift_expression TOK_SHIFTRIGHT additive_expression
{
@@ -185,7 +182,7 @@ additive_expression: multiplicative_expression
{
$$ = CPPValue( (double)$1 + (double)$3 );
}
- else
+ else
{
$$ = CPPValue( (long)$1 + (long)$3 );
}
@@ -196,7 +193,7 @@ additive_expression: multiplicative_expression
{
$$ = CPPValue( (double)$1 - (double)$3 );
}
- else
+ else
{
$$ = CPPValue( (long)$1 - (long)$3 );
}
@@ -206,7 +203,7 @@ additive_expression: multiplicative_expression
multiplicative_expression: unary_expression
{ $$ = $1; }
| multiplicative_expression TOK_STAR unary_expression
- {
+ {
if (!$1.isInt() || !$3.isInt())
{
$$ = CPPValue( (double)$1 * (double)$3 );
@@ -217,7 +214,7 @@ multiplicative_expression: unary_expression
}
}
| multiplicative_expression TOK_DIVIDE unary_expression
- {
+ {
if (!$1.isInt() || !$3.isInt())
{
$$ = CPPValue( (double)$1 / (double)$3 );
@@ -230,7 +227,7 @@ multiplicative_expression: unary_expression
}
}
| multiplicative_expression TOK_MOD unary_expression
- {
+ {
long value = $3;
if (value==0) value=1;
$$ = CPPValue( (long)$1 % value );
@@ -242,8 +239,8 @@ unary_expression: primary_expression
| TOK_PLUS unary_expression
{ $$ = $1; }
| TOK_MINUS unary_expression
- {
- if ($2.isInt())
+ {
+ if ($2.isInt())
$$ = CPPValue(-(long)$2);
else
$$ = CPPValue(-(double)$2);
diff --git a/src/constexp_p.h b/src/constexp_p.h
index ad09b2d..1f3408b 100644
--- a/src/constexp_p.h
+++ b/src/constexp_p.h
@@ -1,10 +1,10 @@
/******************************************************************************
*
- * Copyright (C) 1997-2019 by Dimitri van Heesch.
+ * Copyright (C) 1997-2021 by Dimitri van 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.
*
@@ -16,7 +16,7 @@
#ifndef _CONSTEXP_P_H
#define _CONSTEXP_P_H
-#include <qcstring.h>
+#include <string>
//! @file
//! @brief Private interface between Parser (constexp.y) and Lexer (constexp.l)
@@ -27,12 +27,12 @@
typedef void* yyscan_t;
struct constexpYY_state
{
- QCString strToken;
- CPPValue resultValue;
- int constExpLineNr;
- QCString constExpFileName;
+ std::string strToken;
+ CPPValue resultValue;
+ int constExpLineNr;
+ std::string constExpFileName;
- const char *inputString;
+ std::string inputString;
int inputPosition;
};
constexpYY_state* constexpYYget_extra(yyscan_t yyscanner );
diff --git a/src/context.cpp b/src/context.cpp
index 572e0d3..d2cfa9e 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -4046,11 +4046,11 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor);
init=TRUE;
}
- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); }
+ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); }
Cachable &cache = getCache();
cache.propertyAttrs.reset(TemplateList::alloc());
- if (md && md->isProperty())
+ if (md->isProperty())
{
if (md->isGettable()) cache.propertyAttrs->append("get");
if (md->isPrivateGettable()) cache.propertyAttrs->append("private get");
@@ -4060,7 +4060,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set");
}
cache.eventAttrs.reset(TemplateList::alloc());
- if (md && md->isEvent())
+ if (md->isEvent())
{
if (md->isAddable()) cache.eventAttrs->append("add");
if (md->isRemovable()) cache.eventAttrs->append("remove");
diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp
index 1543498..31f0ab5 100644
--- a/src/cppvalue.cpp
+++ b/src/cppvalue.cpp
@@ -1,13 +1,10 @@
/******************************************************************************
*
- *
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2021 by Dimitri van 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.
*
@@ -21,30 +18,30 @@
#include "cppvalue.h"
#include "constexp.h"
-CPPValue parseOctal(const QCString& token)
+CPPValue parseOctal(const std::string& token)
{
long val = 0;
- for (const char *p = token.data(); *p != 0; p++)
+ for (const char *p = token.c_str(); *p != 0; p++)
{
if (*p >= '0' && *p <= '7') val = val * 8 + *p - '0';
}
return CPPValue(val);
}
-CPPValue parseDecimal(const QCString& token)
+CPPValue parseDecimal(const std::string& token)
{
long val = 0;
- for (const char *p = token.data(); *p != 0; p++)
+ for (const char *p = token.c_str(); *p != 0; p++)
{
if (*p >= '0' && *p <= '9') val = val * 10 + *p - '0';
}
return CPPValue(val);
}
-CPPValue parseHexadecimal(const QCString& token)
+CPPValue parseHexadecimal(const std::string& token)
{
long val = 0;
- for (const char *p = token.data(); *p != 0; p++)
+ for (const char *p = token.c_str(); *p != 0; p++)
{
if (*p >= '0' && *p <= '9') val = val * 16 + *p - '0';
else if (*p >= 'a' && *p <= 'f') val = val * 16 + *p - 'a' + 10;
@@ -54,7 +51,7 @@ CPPValue parseHexadecimal(const QCString& token)
return CPPValue(val);
}
-CPPValue parseCharacter(const QCString& token) // does not work for '\n' and the alike
+CPPValue parseCharacter(const std::string& token) // does not work for '\n' and the alike
{
if (token[1]=='\\')
{
@@ -80,16 +77,16 @@ CPPValue parseCharacter(const QCString& token) // does not work for '\n' and the
case '6': // fall through
case '7': // fall through
return parseOctal(token);
- case 'x':
+ case 'x':
case 'X': return parseHexadecimal(token);
- default: printf("Invalid escape sequence %s found!\n",token.data());
- return CPPValue(0L);
+ default: printf("Invalid escape sequence %s found!\n",token.data());
+ return CPPValue(0L);
}
}
return CPPValue((long)token[1]);
}
-CPPValue parseFloat(const QCString& token)
+CPPValue parseFloat(const std::string& token)
{
- return CPPValue(atof(token));
+ return CPPValue(std::stod(token));
}
diff --git a/src/cppvalue.h b/src/cppvalue.h
index cde033d..7732068 100644
--- a/src/cppvalue.h
+++ b/src/cppvalue.h
@@ -1,13 +1,10 @@
/******************************************************************************
*
- *
- *
- *
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2021 by Dimitri van 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.
*
@@ -19,16 +16,15 @@
#ifndef _CPPVALUE_H
#define _CPPVALUE_H
-#include <stdio.h>
-#include <qglobal.h>
-#include <qcstring.h>
+#include <cstdio>
+#include <string>
/** A class representing a C-preprocessor value. */
class CPPValue
{
public:
enum Type { Int, Float };
-
+
CPPValue(long val=0) : type(Int) { v.l = val; }
CPPValue(double val) : type(Float) { v.d = val; }
@@ -36,10 +32,10 @@ class CPPValue
operator long () const { return type==Int ? v.l : (long)v.d; }
bool isInt() const { return type == Int; }
-
+
void print() const
{
- if (type==Int)
+ if (type==Int)
printf("(%ld)\n",v.l);
else
printf("(%f)\n",v.d);
@@ -53,10 +49,10 @@ class CPPValue
} v;
};
-extern CPPValue parseOctal(const QCString& token);
-extern CPPValue parseDecimal(const QCString& token);
-extern CPPValue parseHexadecimal(const QCString& token);
-extern CPPValue parseCharacter(const QCString& token);
-extern CPPValue parseFloat(const QCString& token);
+extern CPPValue parseOctal(const std::string& token);
+extern CPPValue parseDecimal(const std::string& token);
+extern CPPValue parseHexadecimal(const std::string& token);
+extern CPPValue parseCharacter(const std::string& token);
+extern CPPValue parseFloat(const std::string& token);
#endif
diff --git a/src/debug.cpp b/src/debug.cpp
index c270b47..bc5abb2 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -31,6 +31,7 @@ static std::map< std::string, Debug::DebugMask > s_labels =
{ "functions", Debug::Functions },
{ "variables", Debug::Variables },
{ "preprocessor", Debug::Preprocessor },
+ { "nolineno", Debug::NoLineNo },
{ "classes", Debug::Classes },
{ "commentcnv", Debug::CommentCnv },
{ "commentscan", Debug::CommentScan },
@@ -79,7 +80,7 @@ static int labelToEnumValue(const char *l)
int Debug::setFlag(const char *lab)
{
int retVal = labelToEnumValue(lab);
- curMask = (DebugMask)(curMask | labelToEnumValue(lab));
+ curMask = (DebugMask)(curMask | retVal);
return retVal;
}
diff --git a/src/debug.h b/src/debug.h
index e71595f..5d4717a 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -37,7 +37,8 @@ class Debug
Lex = 0x00002000,
Plantuml = 0x00004000,
FortranFixed2Free = 0x00008000,
- Cite = 0x00010000
+ Cite = 0x00010000,
+ NoLineNo = 0x00020000
};
static void print(DebugMask mask,int prio,const char *fmt,...);
diff --git a/src/docparser.cpp b/src/docparser.cpp
index a179904..b63674a 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -512,7 +512,7 @@ static void checkRetvalName(const QCString &name)
*/
static void checkUnOrMultipleDocumentedParams()
{
- if (g_memberDef && g_hasParamCommand && Config_getBool(WARN_IF_DOC_ERROR))
+ if (g_memberDef && g_hasParamCommand)
{
const ArgumentList &al=g_memberDef->isDocsForDefinition() ?
g_memberDef->argumentList() :
@@ -544,7 +544,7 @@ static void checkUnOrMultipleDocumentedParams()
if (argName == par) count++;
}
}
- if (count > 1)
+ if ((count > 1) && Config_getBool(WARN_IF_DOC_ERROR))
{
warn_doc_error(g_memberDef->getDefFileName(),
g_memberDef->getDefLine(),
@@ -555,7 +555,7 @@ static void checkUnOrMultipleDocumentedParams()
" has multiple @param documentation sections").data());
}
}
- if (notArgCnt>0)
+ if ((notArgCnt>0) && Config_getBool(WARN_IF_INCOMPLETE_DOC))
{
bool first=TRUE;
QCString errMsg=
@@ -587,10 +587,10 @@ static void checkUnOrMultipleDocumentedParams()
errMsg+=" parameter '"+argName+"'";
}
}
- warn_doc_error(g_memberDef->getDefFileName(),
- g_memberDef->getDefLine(),
- "%s",
- substitute(errMsg,"%","%%").data());
+ warn_incomplete_doc(g_memberDef->getDefFileName(),
+ g_memberDef->getDefLine(),
+ "%s",
+ substitute(errMsg,"%","%%").data());
}
}
}
@@ -829,6 +829,7 @@ inline void errorHandleDefaultToken(DocNode *parent,int tok,
{
case TK_COMMAND_AT:
cmd_start = "@";
+ // fall through
case TK_COMMAND_BS:
children.push_back(std::make_unique<DocWord>(parent,TK_COMMAND_CHAR(tok) + g_token->name));
warn_doc_error(g_fileName,getDoctokinizerLineNr(),"Illegal command %s as part of a %s",
@@ -1519,7 +1520,7 @@ reparsetoken:
{
QCString scope;
doctokenizerYYsetStateSetScope();
- doctokenizerYYlex();
+ (void)doctokenizerYYlex();
scope = g_token->name;
g_context = scope;
//printf("Found scope='%s'\n",scope.data());
diff --git a/src/dotgroupcollaboration.cpp b/src/dotgroupcollaboration.cpp
index 3a14577..1dc1380 100644
--- a/src/dotgroupcollaboration.cpp
+++ b/src/dotgroupcollaboration.cpp
@@ -288,6 +288,7 @@ void DotGroupCollaboration::Edge::write( FTextStream &t ) const
{
if (first) first=FALSE; else t << "\\n";
t << DotNode::convertLabel(link.label);
+ count++;
}
if (count==maxLabels) t << "\\n...";
t << "\"";
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index f5a280b..28bb49b 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -106,6 +106,14 @@
#include "clangparser.h"
#include "symbolresolver.h"
+#if USE_SQLITE3
+#include <sqlite3.h>
+#endif
+
+#if USE_LIBCLANG
+#include <clang/Basic/Version.h>
+#endif
+
// provided by the generated file resources.cpp
extern void initResources();
@@ -9959,6 +9967,39 @@ static void devUsage()
//----------------------------------------------------------------------------
+// print the version of doxygen
+
+static void version(const bool extended)
+{
+ QCString versionString = getFullVersion();
+ msg("%s\n",versionString.data());
+ if (extended)
+ {
+ QCString extVers;
+#if USE_SQLITE3
+ if (!extVers.isEmpty()) extVers+= ", ";
+ extVers += "sqlite3 ";
+ extVers += sqlite3_libversion();
+#endif
+#if USE_LIBCLANG
+ if (!extVers.isEmpty()) extVers+= ", ";
+ extVers += "clang support ";
+ extVers += CLANG_VERSION_STRING;
+#endif
+#if MULTITHREADED_SOURCE_GENERATOR
+ if (!extVers.isEmpty()) extVers+= ", ";
+ extVers += "multi-threaded support ";
+#endif
+ if (!extVers.isEmpty())
+ {
+ int lastComma = extVers.findRev(',');
+ if (lastComma != -1) extVers = extVers.replace(lastComma,1," and");
+ msg(" with %s.\n",extVers.data());
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
// print the usage of doxygen
static void usage(const char *name,const char *versionString)
@@ -9992,7 +10033,7 @@ static void usage(const char *name,const char *versionString)
msg("If -s is specified the comments of the configuration items in the config file will be omitted.\n");
msg("If configName is omitted 'Doxyfile' will be used as a default.\n");
msg("If - is used for configFile doxygen will write / read the configuration to /from standard output / input.\n\n");
- msg("-v print version string\n");
+ msg("-v print version string, -V print extended version information\n");
}
//----------------------------------------------------------------------------
@@ -10400,7 +10441,12 @@ void readConfiguration(int argc, char **argv)
g_dumpSymbolMap = TRUE;
break;
case 'v':
- msg("%s\n",versionString.data());
+ version(false);
+ cleanUpDoxygen();
+ exit(0);
+ break;
+ case 'V':
+ version(true);
cleanUpDoxygen();
exit(0);
break;
@@ -10412,7 +10458,14 @@ void readConfiguration(int argc, char **argv)
}
else if (qstrcmp(&argv[optind][2],"version")==0)
{
- msg("%s\n",versionString.data());
+ version(false);
+ cleanUpDoxygen();
+ exit(0);
+ }
+ else if ((qstrcmp(&argv[optind][2],"Version")==0) ||
+ (qstrcmp(&argv[optind][2],"VERSION")==0))
+ {
+ version(true);
cleanUpDoxygen();
exit(0);
}
diff --git a/src/doxygen.h b/src/doxygen.h
index 5c8ad1b..227efcc 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -16,8 +16,6 @@
#ifndef DOXYGEN_H
#define DOXYGEN_H
-#include <qdatetime.h>
-
#include "containers.h"
#include "ftextstream.h"
#include "membergroup.h"
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 4b2f623..b900148 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -258,8 +258,9 @@ bool GroupDefImpl::addClass(const ClassDef *cd)
bool GroupDefImpl::addNamespace(const NamespaceDef *def)
{
+ //printf("adding namespace hidden=%d\n",def->isHidden());
if (def->isHidden()) return false;
- if (m_namespaces.find(def->name())!=0)
+ if (m_namespaces.find(def->name())==0)
{
updateLanguage(def);
m_namespaces.add(def->name(),def);
@@ -1310,11 +1311,11 @@ void addClassToGroups(const Entry *root,ClassDef *cd)
void addNamespaceToGroups(const Entry *root,NamespaceDef *nd)
{
- //printf("root->groups.size()=%d\n",root->groups.size());
+ //printf("root->groups.size()=%zu\n",root->groups.size());
for (const Grouping &g : root->groups)
{
GroupDef *gd = Doxygen::groupLinkedMap->find(g.groupname);
- //printf("group '%s'\n",s->data());
+ //printf("group '%s' gd=%p\n",g.groupname.data(),(void*)gd);
if (gd && gd->addNamespace(nd))
{
NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
@@ -1373,8 +1374,8 @@ void addGroupToGroups(const Entry *root,GroupDef *subGroup)
/*! Add a member to the group with the highest priority */
void addMemberToGroups(const Entry *root,MemberDef *md)
{
- //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
- // root, root->name.data(), md, md->name().data(), root->groups->count() );
+ //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%zu\n",
+ // root, root->name.data(), md, md->name().data(), root->groups.size() );
// Search entry's group list for group with highest pri.
Grouping::GroupPri_t pri = Grouping::GROUPING_LOWEST;
diff --git a/src/index.cpp b/src/index.cpp
index 4791ed5..1f425d4 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -25,7 +25,6 @@
#include <assert.h>
#include <qtextstream.h>
-#include <qdatetime.h>
#include <qdir.h>
#include <qregexp.h>
@@ -1411,17 +1410,19 @@ static void writeFileIndex(OutputList &ol)
QCString path=fd->getPath();
if (path.isEmpty()) path="[external]";
auto it = pathMap.find(path.str());
- if (it!=pathMap.end())
+ if (it!=pathMap.end()) // existing path -> append
{
outputFiles.at(it->second).files.push_back(fd.get());
}
- else
+ else // new path -> create path entry + append
{
pathMap.insert(std::make_pair(path.str(),outputFiles.size()));
outputFiles.emplace_back(path);
+ outputFiles.back().files.push_back(fd.get());
}
}
}
+
// sort the files by path
std::sort(outputFiles.begin(),
outputFiles.end(),
diff --git a/src/layout.cpp b/src/layout.cpp
index 427747e..b8984e0 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -32,6 +32,7 @@
#include "config.h"
#include "xml.h"
#include "resourcemgr.h"
+#include "debug.h"
inline QCString compileOptions(const QCString &def)
{
@@ -1503,7 +1504,7 @@ void LayoutDocManager::init()
XMLParser parser(handlers);
layoutParser.setDocumentLocator(&parser);
QCString layout_default = ResourceMgr::instance().getAsString("layout_default.xml");
- parser.parse("layout_default.xml",layout_default);
+ parser.parse("layout_default.xml",layout_default,Debug::isFlagSet(Debug::Lex));
}
LayoutDocManager::~LayoutDocManager()
@@ -1546,7 +1547,7 @@ void LayoutDocManager::parse(const char *fileName)
handlers.error = [&layoutParser](const std::string &fn,int lineNr,const std::string &msg) { layoutParser.error(fn,lineNr,msg); };
XMLParser parser(handlers);
layoutParser.setDocumentLocator(&parser);
- parser.parse(fileName,fileToString(fileName));
+ parser.parse(fileName,fileToString(fileName),Debug::isFlagSet(Debug::Lex));
}
//---------------------------------------------------------------------------------
diff --git a/src/message.cpp b/src/message.cpp
index 95a7553..5f06984 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -240,6 +240,14 @@ void warn_undoc(const char *file,int line,const char *fmt, ...)
va_end(args);
}
+void warn_incomplete_doc(const char *file,int line,const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ do_warn(Config_getBool(WARN_IF_INCOMPLETE_DOC), file, line, warning_str, fmt, args);
+ va_end(args);
+}
+
void warn_doc_error(const char *file,int line,const char *fmt, ...)
{
va_list args;
diff --git a/src/message.h b/src/message.h
index af49632..aa63ecb 100644
--- a/src/message.h
+++ b/src/message.h
@@ -29,6 +29,7 @@ extern void warn(const char *file,int line,const char *fmt, ...) PRINTFLIKE(3, 4
extern void va_warn(const char* file, int line, const char* fmt, va_list args);
extern void warn_simple(const char *file,int line,const char *text);
extern void warn_undoc(const char *file,int line,const char *fmt, ...) PRINTFLIKE(3, 4);
+extern void warn_incomplete_doc(const char *file,int line,const char *fmt, ...) PRINTFLIKE(3, 4);
extern void warn_doc_error(const char *file,int line,const char *fmt, ...) PRINTFLIKE(3, 4);
extern void warn_uncond(const char *fmt, ...) PRINTFLIKE(1, 2);
extern void err(const char *fmt, ...) PRINTFLIKE(1, 2);
diff --git a/src/pre.l b/src/pre.l
index 4a86562..21746a0 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -2702,7 +2702,7 @@ static bool computeExpression(yyscan_t yyscanner,const QCString &expr)
e = removeIdsAndMarkers(e);
if (e.isEmpty()) return FALSE;
//printf("parsing '%s'\n",e.data());
- return state->constExpParser.parse(state->yyFileName,state->yyLineNr,e);
+ return state->constExpParser.parse(state->yyFileName,state->yyLineNr,e.str());
}
/*! expands the macro definition in \a name
@@ -3390,11 +3390,12 @@ void Preprocessor::processFile(const char *fileName,BufStr &input,BufStr &output
char *newPos=output.data()+output.curPos();
Debug::print(Debug::Preprocessor,0,"Preprocessor output of %s (size: %d bytes):\n",fileName,newPos-orgPos);
int line=1;
- Debug::print(Debug::Preprocessor,0,"---------\n00001 ");
+ Debug::print(Debug::Preprocessor,0,"---------\n");
+ if (!Debug::isFlagSet(Debug::NoLineNo)) Debug::print(Debug::Preprocessor,0,"00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
- if (*orgPos=='\n') Debug::print(Debug::Preprocessor,0,"%05d ",++line);
+ if (*orgPos=='\n' && !Debug::isFlagSet(Debug::NoLineNo)) Debug::print(Debug::Preprocessor,0,"%05d ",++line);
orgPos++;
}
Debug::print(Debug::Preprocessor,0,"\n---------\n");
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index f04fb38..65a5258 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -17,6 +17,8 @@
*
*/
+#include <chrono>
+#include <ctime>
#include <stdlib.h>
#include <qdir.h>
@@ -48,16 +50,20 @@
#include "filename.h"
#include "namespacedef.h"
+
//#define DBG_RTF(x) x;
#define DBG_RTF(x)
static QCString dateToRTFDateString()
{
- const QDateTime &d = QDateTime::currentDateTime();
+ auto now = std::chrono::system_clock::now();
+ auto time = std::chrono::system_clock::to_time_t(now);
+ auto tm = *localtime(&time);
+
QCString result;
result.sprintf("\\yr%d\\mo%d\\dy%d\\hr%d\\min%d\\sec%d",
- d.date().year(), d.date().month(), d.date().day(),
- d.time().hour(),d.time().minute(),d.time().second());
+ tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
return result;
}
diff --git a/src/scanner.l b/src/scanner.l
index 19381dd..6970d3e 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -7197,7 +7197,7 @@ static void parseCompounds(yyscan_t yyscanner,const std::shared_ptr<Entry> &rt)
// deep copy group list from parent (see bug 727732)
bool autoGroupNested = Config_getBool(GROUP_NESTED_COMPOUNDS);
- if (autoGroupNested && ce->section!=Entry::ENUM_SEC && !(ce->spec&Entry::Enum))
+ if (autoGroupNested && !rt->groups.empty() && ce->section!=Entry::ENUM_SEC && !(ce->spec&Entry::Enum))
{
ce->groups = rt->groups;
}
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index d5f8d5f..0a7c8f1 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -38,6 +38,7 @@
#include "filename.h"
#include "section.h"
#include "containers.h"
+#include "debug.h"
/** Information about an linkable anchor */
class TagAnchorInfo
@@ -1499,7 +1500,7 @@ void parseTagFile(const std::shared_ptr<Entry> &root,const char *fullName)
handlers.error = [&tagFileParser](const std::string &fileName,int lineNr,const std::string &msg) { tagFileParser.error(fileName,lineNr,msg); };
XMLParser parser(handlers);
tagFileParser.setDocumentLocator(&parser);
- parser.parse(fullName,inputStr);
+ parser.parse(fullName,inputStr,Debug::isFlagSet(Debug::Lex));
tagFileParser.buildLists(root);
tagFileParser.addIncludes();
//tagFileParser.dump();
diff --git a/src/util.cpp b/src/util.cpp
index d387b02..3bf349a 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -22,6 +22,7 @@
#include <cinttypes>
#include <string.h>
+#include <ctime>
#include <mutex>
#include <unordered_set>
@@ -30,7 +31,6 @@
#include <qregexp.h>
#include <qfileinfo.h>
#include <qdir.h>
-#include <qdatetime.h>
#include "util.h"
#include "message.h"
@@ -1418,11 +1418,10 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
return "";
}
-static QDateTime getCurrentDateTime()
+static std::tm getCurrentDateTime()
{
- QDateTime current = QDateTime::currentDateTime();
QCString sourceDateEpoch = Portable::getenv("SOURCE_DATE_EPOCH");
- if (!sourceDateEpoch.isEmpty())
+ if (!sourceDateEpoch.isEmpty()) // see https://reproducible-builds.org/specs/source-date-epoch/
{
bool ok;
uint64 epoch = sourceDateEpoch.toUInt64(&ok);
@@ -1436,42 +1435,39 @@ static QDateTime getCurrentDateTime()
warnedOnce=TRUE;
}
}
- else if (epoch>UINT_MAX)
+ else // use given epoch value as current 'built' time
{
- static bool warnedOnce=FALSE;
- if (!warnedOnce)
- {
- warn_uncond("Environment variable SOURCE_DATE_EPOCH must have a value smaller than or equal to %d; actual value %" PRIu64 "\n",UINT_MAX, (uint64_t)epoch);
- warnedOnce=TRUE;
- }
- }
- else // all ok, replace current time with epoch value
- {
- current.setTimeUtc_t((ulong)epoch); // TODO: add support for 64bit epoch value
+ auto epoch_start = std::chrono::time_point<std::chrono::system_clock>{};
+ auto epoch_seconds = std::chrono::seconds(epoch);
+ auto build_time = epoch_start + epoch_seconds;
+ std::time_t time = std::chrono::system_clock::to_time_t(build_time);
+ return *gmtime(&time);
}
}
- return current;
+
+ // return current local time
+ auto now = std::chrono::system_clock::now();
+ std::time_t time = std::chrono::system_clock::to_time_t(now);
+ return *localtime(&time);
}
QCString dateToString(bool includeTime)
{
- const QDateTime current = getCurrentDateTime();
- return theTranslator->trDateTime(current.date().year(),
- current.date().month(),
- current.date().day(),
- current.date().dayOfWeek(),
- current.time().hour(),
- current.time().minute(),
- current.time().second(),
+ auto current = getCurrentDateTime();
+ return theTranslator->trDateTime(current.tm_year + 1900,
+ current.tm_mon + 1,
+ current.tm_mday,
+ (current.tm_wday+6)%7+1, // map: Sun=0..Sat=6 to Mon=1..Sun=7
+ current.tm_hour,
+ current.tm_min,
+ current.tm_sec,
includeTime);
}
QCString yearToString()
{
- const QDateTime current = getCurrentDateTime();
- QCString result;
- result.sprintf("%d", current.date().year());
- return result;
+ auto current = getCurrentDateTime();
+ return QCString().setNum(current.tm_year+1900);
}
//----------------------------------------------------------------------
@@ -1933,12 +1929,10 @@ static bool matchArgument2(
dstA.canType=""; // invalidate cached type value
}
- if (srcA.canType.isEmpty())
+ if (srcA.canType.isEmpty() || dstA.canType.isEmpty())
{
+ // need to re-evaluate both see issue #8370
srcA.canType = extractCanonicalArgType(srcScope,srcFileScope,srcA);
- }
- if (dstA.canType.isEmpty())
- {
dstA.canType = extractCanonicalArgType(dstScope,dstFileScope,dstA);
}
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index ce1224f..299ae26 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -3046,8 +3046,9 @@ void FlowChart::colTextNodes()
const FlowChart &ftemp = flowList[j+1];
if (ftemp.type & EMPTY)
{
- flowList.insert(flowList.begin()+j+1,FlowChart(TEXT_NO,"empty ",0));
- flowList[j+1].stamp = flo.stamp;
+ FlowChart fc(TEXT_NO,"empty ",0);
+ fc.stamp = flo.stamp;
+ flowList.insert(flowList.begin()+j+1,fc);
}
}
}
diff --git a/templates/html/search.js b/templates/html/search.js
index fb226f7..08d1c06 100644
--- a/templates/html/search.js
+++ b/templates/html/search.js
@@ -335,11 +335,15 @@ function SearchBox(name, resultsPath, inFrame, label, extension)
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
var code = searchValue.toLowerCase().charCodeAt(0);
- var idxChar = searchValue.substr(0, 1).toLowerCase();
+ var idxChar = searchValue.substr(0, 1);
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
{
idxChar = searchValue.substr(0, 2);
}
+ else if (code <128)
+ {
+ idxChar = idxChar.toLowerCase();
+ }
var resultsPage;
var resultsPageWithSearch;