changeset 249:f4dc208aa1e3

doc: improve readability
author David Demelier <markand@malikania.fr>
date Tue, 01 Dec 2020 17:18:12 +0100
parents 37771eaf4245
children 8ef7fb7f14ad
files doc/CMakeLists.txt doc/doxybook.json doc/templates/breadcrumbs.tmpl doc/templates/class_members_details.tmpl doc/templates/class_members_inherited_tables.tmpl doc/templates/class_members_tables.tmpl doc/templates/details.tmpl doc/templates/footer.tmpl doc/templates/header.tmpl doc/templates/index.tmpl doc/templates/index_classes.tmpl doc/templates/index_examples.tmpl doc/templates/index_files.tmpl doc/templates/index_groups.tmpl doc/templates/index_namespaces.tmpl doc/templates/index_pages.tmpl doc/templates/kind_class.tmpl doc/templates/kind_example.tmpl doc/templates/kind_file.tmpl doc/templates/kind_group.tmpl doc/templates/kind_nonclass.tmpl doc/templates/kind_page.tmpl doc/templates/member_details.tmpl doc/templates/meta.tmpl doc/templates/nonclass_members_details.tmpl doc/templates/nonclass_members_tables.tmpl
diffstat 24 files changed, 553 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/doc/CMakeLists.txt	Tue Dec 01 12:56:11 2020 +0100
+++ b/doc/CMakeLists.txt	Tue Dec 01 17:18:12 2020 +0100
@@ -52,30 +52,32 @@
 	)
 
 	# 1. Generate XML structure with Doxygen.
-	set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO)
-	set(DOXYGEN_SHOW_INCLUDE_FILES NO)
-	set(DOXYGEN_SHOW_USED_FILES NO)
 	set(DOXYGEN_ALLOW_UNICODE_NAMES YES)
 	set(DOXYGEN_AUTOLINK_SUPPORT NO)
 	set(DOXYGEN_ENABLE_PREPROCESSING YES)
 	set(DOXYGEN_EXAMPLE_PATH examples)
 	set(DOXYGEN_EXCLUDE_PATTERNS *_p.h)
 	set(DOXYGEN_FILE_PATTERNS *.h)
+	set(DOXYGEN_GENERATE_HTML YES)
 	set(DOXYGEN_GENERATE_LATEX NO)
 	set(DOXYGEN_GENERATE_MAN NO)
 	set(DOXYGEN_GENERATE_XML YES)
-	set(DOXYGEN_GENERATE_HTML YES)
+	set(DOXYGEN_HIDE_SCOPE_NAMES YES)
 	set(DOXYGEN_INPUT_ENCODING UTF-8)
 	set(DOXYGEN_MAX_INITIALIZER_LINES 0)
 	set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
 	set(DOXYGEN_OUTPUT_DIRECTORY doxygen)
 	set(DOXYGEN_PREDEFINED DOXYGEN)
+	set(DOXYGEN_QUIET YES)
+	set(DOXYGEN_RECURSIVE YES)
+	set(DOXYGEN_SHOW_GROUPED_MEMB_INC NO)
+	set(DOXYGEN_SHOW_INCLUDE_FILES NO)
+	set(DOXYGEN_SHOW_USED_FILES NO)
+	set(DOXYGEN_TAB_SIZE 8)
+	set(DOXYGEN_WARNINGS YES)
+
 	set(DOXYGEN_HTML_OUTPUT ${doc_BINARY_DIR}/doxygen/html)
 	set(DOXYGEN_XML_OUTPUT ${doc_BINARY_DIR}/doxygen/xml)
-	set(DOXYGEN_QUIET YES)
-	set(DOXYGEN_RECURSIVE YES)
-	set(DOXYGEN_TAB_SIZE 8)
-	set(DOXYGEN_WARNINGS YES)
 
 	# 0. Create commands to prepare the output build directory.
 	list(
@@ -103,6 +105,7 @@
 	list(
 		APPEND commands
 		COMMAND ${DOXYBOOK2_EXE} -q
+			-t ${doc_SOURCE_DIR}/templates
 			-i ${doc_BINARY_DIR}/doxygen/xml
 			-o ${doc_BINARY_DIR}/docs
 			-c ${doc_SOURCE_DIR}/doxybook.json
--- a/doc/doxybook.json	Tue Dec 01 12:56:11 2020 +0100
+++ b/doc/doxybook.json	Tue Dec 01 17:18:12 2020 +0100
@@ -1,5 +1,5 @@
 {
-  "baseUrl": "http://projects.malikania.fr/molko/doc/",
+  "baseUrl": "/",
   "indexInFolders": true,
   "linkSuffix": "/",
   "indexClassesName": "index",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/breadcrumbs.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,1 @@
+{% if exists("moduleBreadcrumbs") %}**Module:** {% for module in moduleBreadcrumbs %}**[{{module.title}}]({{module.url}})**{% if not loop.is_last %} **/** {% endif %}{% endfor %}{% endif %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/class_members_details.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,66 @@
+{% if exists("publicTypes") %}## Public Types Documentation
+
+{% for child in publicTypes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("protectedTypes") %}## Protected Types Documentation
+
+{% for child in protectedTypes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicSlots") %}## Public Slots Documentation
+
+{% for child in publicSlots %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("protectedSlots") %}## Protected Slots Documentation
+
+{% for child in protectedSlots %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicSignals") %}## Public Signals Documentation
+
+{% for child in publicSignals %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("protectedSignals") %}## Protected Signals Documentation
+
+{% for child in protectedSignals %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicFunctions") %}## Public Functions Documentation
+
+{% for child in publicFunctions %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("protectedFunctions") %}## Protected Functions Documentation
+
+{% for child in protectedFunctions %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicAttributes") %}## Public Attributes Documentation
+
+{% for child in publicAttributes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("protectedAttributes") %}## Protected Attributes Documentation
+
+{% for child in protectedAttributes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("friends") %}## Friends
+
+{% for child in friends %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/class_members_inherited_tables.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,79 @@
+{% for base in baseClasses %}
+{% if existsIn(base, "publicClasses") %}**Public Classes inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicClasses %}| {{child.kind}} | **[{{last(stripNamespace(child.name))}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedClasses") %}**Protected Classes inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedClasses %}| {{child.kind}} | **[{{last(stripNamespace(child.name))}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "publicTypes") %}**Public Types inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicTypes %}| {{child.kind}}{% if existsIn(child, "type") %} {{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if child.kind == "enum" %}{ {% for enumvalue in child.enumvalues %}{{enumvalue.name}}{% if existsIn(enumvalue, "initializer") %} {{enumvalue.initializer}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %} }{% endif %}{% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedTypes") %}**Protected Types inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedTypes %}| {{child.kind}}{% if existsIn(child, "type") %} {{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if child.kind == "enum" %}{ {% for enumvalue in child.enumvalues %}{{enumvalue.name}}{% if existsIn(enumvalue, "initializer") %} {{enumvalue.initializer}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %} }{% endif %}{% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "publicSlots") %}**Public Slots inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicSlots %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedSlots") %}**Protected Slots inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedSlots %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "publicSignals") %}**Public Signals inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicSignals %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedSignals") %}**Protected Signals inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedSignals %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "publicFunctions") %}**Public Functions inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicFunctions %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedFunctions") %}**Protected Functions inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedFunctions %}| {% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "publicAttributes") %}**Public Attributes inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.publicAttributes %}| {% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "protectedAttributes") %}**Protected Attributes inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.protectedAttributes %}| {% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if existsIn(base, "friends") %}**Friends inherited from [{{base.name}}]({{base.url}})**
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in base.friends %}| {% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**{% if child.type != "class" %}({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}{% endfor %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/details.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,130 @@
+{% if exists("brief") %}{{brief}}
+{% endif %}
+{% if exists("paramList") %}**Parameters**: 
+
+{% for param in paramList %}  * **{{param.name}}** {{param.text}}
+{% endfor %}
+{% endif %}
+{% if exists("returnsList") %}**Returns**: 
+
+{% for param in returnsList %}  * **{{param.name}}** {{param.text}}
+{% endfor %}
+{% endif %}
+{% if exists("exceptionsList") %}**Exceptions**: 
+
+{% for param in exceptionsList %}  * **{{param.name}}** {{param.text}}
+{% endfor %}
+{% endif %}
+{% if exists("templateParamsList") %}**Template Parameters**: 
+
+{% for param in templateParamsList %}  * **{{param.name}}** {{param.text}}
+{% endfor %}
+{% endif %}
+{% if exists("deprecated") %}**Deprecated**: 
+
+{{deprecated}}
+{% endif %}
+{% if exists("see") %}**See**: {% if length(see) == 1 %}{{first(see)}}{% else %}
+
+{% for item in see %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("returns") %}**Return**: {% if length(returns) == 1 %}{{first(returns)}}{% else %}
+
+{% for item in returns %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("authors") %}**Author**: {% if length(authors) == 1 %}{{first(authors)}}{% else %}
+
+{% for item in authors %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("version") %}**Version**: {% if length(version) == 1 %}{{first(version)}}{% else %}
+
+{% for item in version %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("since") %}**Since**: {% if length(since) == 1 %}{{first(since)}}{% else %}
+
+{% for item in since %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("date") %}**Date**: {% if length(date) == 1 %}{{first(date)}}{% else %}
+
+{% for item in date %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("note") %}**Note**: {% if length(note) == 1 %}{{first(note)}}{% else %}
+
+{% for item in note %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("bugs") %}**Bug**: {% if length(bugs) == 1 %}{{first(bugs)}}{% else %}
+
+{% for item in bugs %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("tests") %}**Test**: {% if length(tests) == 1 %}{{first(tests)}}{% else %}
+
+{% for item in tests %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("todos") %}**Todo**: {% if length(todos) == 1 %}{{first(todos)}}{% else %}
+
+{% for item in todos %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("warning") %}**Warning**: {% if length(warning) == 1 %}{{first(warning)}}{% else %}
+
+{% for item in warning %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("pre") %}**Precondition**: {% if length(pre) == 1 %}{{first(pre)}}{% else %}
+
+{% for item in pre %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("post") %}**Postcondition**: {% if length(post) == 1 %}{{first(post)}}{% else %}
+
+{% for item in post %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("copyright") %}**Copyright**: {% if length(copyright) == 1 %}{{first(copyright)}}{% else %}
+
+{% for item in copyright %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("invariant") %}**Invariant**: {% if length(invariant) == 1 %}{{first(invariant)}}{% else %}
+
+{% for item in invariant %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("remark") %}**Remark**: {% if length(remark) == 1 %}{{first(remark)}}{% else %}
+
+{% for item in remark %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("attention") %}**Attention**: {% if length(attention) == 1 %}{{first(attention)}}{% else %}
+
+{% for item in attention %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("par") %}**Par**: {% if length(par) == 1 %}{{first(par)}}{% else %}
+
+{% for item in par %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("rcs") %}**Rcs**: {% if length(rcs) == 1 %}{{first(rcs)}}{% else %}
+
+{% for item in rcs %}  * {{item}}
+{% endfor %}{% endif %}
+{% endif %}
+{% if exists("reimplements") %}**Reimplements**: [{{reimplements.fullname}}]({{reimplements.url}})
+
+{% endif %}{% if exists("reimplementedBy") %}**Reimplemented by**: {% for impl in reimplementedBy %}[{{impl.fullname}}]({{impl.url}}){% if not loop.is_last %}, {% endif %}{% endfor %}
+
+{% endif %}
+{% if exists("details") %}{{details}}
+{% endif %}
+{% if exists("inbody") %}{{inbody}}
+{% endif %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/footer.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,3 @@
+-------------------------------
+
+Updated on {{date("%e %B %Y at %H:%M:%S %Z")}}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/header.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,7 @@
+---
+{% if exists("title") %}title: {{title}}{% else if exists("name") %}title: {{name}}{% endif %}
+{% if exists("summary") %}summary: {{summary}} {% endif%}
+{% include "meta" %}
+---
+
+{% if exists("title") %}# {{title}}{% else if exists("kind") and kind != "page" %}# {{name}} {{title(kind)}} Reference{% endif %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,10 @@
+
+{% for child0 in children %}* **{{child0.kind}} [{{child0.title}}]({{child0.url}})** {% if existsIn(child0, "brief") %}<br>{{child0.brief}}{% endif %}{% if existsIn(child0, "children") %}{% for child1 in child0.children %}
+    * **{{child1.kind}} [{{last(stripNamespace(child1.title))}}]({{child1.url}})** {% if existsIn(child1, "brief") %}<br>{{child1.brief}}{% endif %}{% if existsIn(child1, "children") %}{% for child2 in child1.children %}
+        * **{{child2.kind}} [{{last(stripNamespace(child2.title))}}]({{child2.url}})** {% if existsIn(child2, "brief") %}<br>{{child2.brief}}{% endif %}{% if existsIn(child2, "children") %}{% for child3 in child2.children %}
+            * **{{child3.kind}} [{{last(stripNamespace(child3.title))}}]({{child3.url}})** {% if existsIn(child3, "brief") %}<br>{{child3.brief}}{% endif %}{% if existsIn(child3, "children") %}{% for child4 in child3.children %}
+                * **{{child4.kind}} [{{last(stripNamespace(child4.title))}}]({{child4.url}})** {% if existsIn(child4, "brief") %}<br>{{child4.brief}}{% endif %}{% if existsIn(child4, "children") %}{% for child5 in child4.children %}
+                    * **{{child5.kind}} [{{last(stripNamespace(child5.title))}}]({{child5.url}})** {% if existsIn(child5, "brief") %}<br>{{child5.brief}}{% endif %}{% if existsIn(child5, "children") %}{% for child6 in child5.children %}
+                        * **{{child6.kind}} [{{last(stripNamespace(child6.title))}}]({{child6.url}})** {% if existsIn(child6, "brief") %}<br>{{child6.brief}}{% endif %}{% if existsIn(child6, "children") %}{% for child7 in child6.children %}
+                            * **{{child7.kind}} [{{last(stripNamespace(child7.title))}}]({{child7.url}})** {% if existsIn(child7, "brief") %}<br>{{child7.brief}}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}{% endfor %}{% endif %}
+{% endfor %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_classes.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_examples.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_files.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_groups.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_namespaces.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/index_pages.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% include "index" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_class.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,32 @@
+{% include "header" %}
+
+{% include "breadcrumbs" %}
+
+{% if exists("brief") %}{{brief}}{% endif %}{% if hasDetails %} [More...](#detailed-description)
+{% endif %}
+
+{% if exists("baseClasses") %}Inherits from {% for child in baseClasses %}{% if existsIn(child, "url") %}[{{child.name}}]({{child.url}}){% else %}{{child.name}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}
+{% endif %}
+{% if exists("derivedClasses") %}Inherited by {% for child in derivedClasses %}{% if existsIn(child, "url") %}[{{child.name}}]({{child.url}}){% else %}{{child.name}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}
+{% endif %}
+
+{% include "class_members_tables" %}
+
+{% if hasAdditionalMembers %}## Additional inherited members
+
+{% include "class_members_inherited_tables" %}
+{% endif %}
+
+{% if hasDetails %}## Detailed Description
+
+```cpp{% if exists("templateParams") %}
+template <{% for param in templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},
+{% endif %}{% endfor %}>{% endif %}
+{% if kind == "interface" %}class{% else %}{{kind}}{% endif %} {{name}};
+```
+
+{% include "details" %}{% endif %}
+
+{% include "class_members_details" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_example.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% if exists("details") %}{{details}}{% endif %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_file.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,21 @@
+{% include "header" %}
+
+{% if exists("brief") %}{{brief}}{% endif %}{% if hasDetails %} [More...](#detailed-description)
+{% endif %}
+
+{% include "nonclass_members_tables" %}
+
+{% if hasDetails %}## Detailed Description
+
+{% include "details" %}{% endif %}
+
+{% include "nonclass_members_details" %}
+
+{% if exists("programlisting")%}## Source code
+
+```cpp
+{{programlisting}}
+```
+{% endif %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_group.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,16 @@
+{% include "header" %}
+
+{% include "breadcrumbs" %}
+
+{% if exists("brief") %}{{brief}}{% endif %}{% if hasDetails %} [More...](#detailed-description)
+{% endif %}
+
+{% include "nonclass_members_tables" %}
+
+{% if hasDetails %}## Detailed Description
+
+{% include "details" %}{% endif %}
+
+{% include "nonclass_members_details" %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_nonclass.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,16 @@
+{% include "header" %}
+
+{% include "breadcrumbs" %}
+
+{% if exists("brief") %}{{brief}}{% endif %}{% if hasDetails %} [More...](#detailed-description)
+{% endif %}
+
+{% include "nonclass_members_tables" %}
+
+{% if hasDetails %}## Detailed Description
+
+{% include "details" %}{% endif %}
+
+{% include "nonclass_members_details" %}
+
+{% include "footer" %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/kind_page.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,5 @@
+{% include "header" %}
+
+{% if exists("details") %}{{details}}{% endif %}
+
+{% include "footer" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/member_details.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,30 @@
+{% if kind in ["function", "slot", "signal"] %}```cpp
+{% if exists("templateParams") %}template <{% for param in templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},
+{% endif %}{% endfor %}>
+{% endif %}{% if static %}static {% endif %}{% if inline %}inline {% endif %}{% if explicit %}explicit {% endif %}{% if virtual %}virtual {% endif %}{% if exists("typePlain") %}{{typePlain}} {% endif %}{{name}}{% if length(params) > 0 %}(
+{% for param in params %}    {{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}
+{% endfor %}){% else %}(){% endif %}{% if const %} const{% endif %}{% if override %} override{% endif %}{% if default %} =default{% endif %}{% if deleted %} =deleted{% endif %}{% if pureVirtual %} =0{% endif %}
+```{% endif %}{% if kind == "enum" %}
+| Enumerator | Value | Description |
+| ---------- | ----- | ----------- |
+{% for enumvalue in enumvalues %}| {{enumvalue.name}} | {% if existsIn(enumvalue, "initializer") %}{{replace(enumvalue.initializer, "= ", "")}}{% endif %} | {% if existsIn(enumvalue, "brief") %}{{enumvalue.brief}}{% endif %} {% if existsIn(enumvalue, "details") %}{{enumvalue.details}}{% endif %} |
+{% endfor %}
+{% endif %}{% if kind == "variable" %}```cpp
+{% if static %}static {% endif %}{% if exists("definition") %}{{definition}} {% endif %}{% if exists("initializer") %} {{initializer}}{% endif %};
+```{% endif %}{% if kind == "typedef" %}```cpp
+{{definition}};
+```{% endif %}{% if kind == "using" %}```cpp
+{% if exists("templateParams") %}template <{% for param in templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},
+{% endif %}{% endfor %}>
+{% endif %}{{definition}};
+```{% endif %}{% if kind == "friend" %}```cpp
+friend {% if exists("typePlain") %}{{typePlain}} {% endif %}{{name}}{% if exists("params") %}{% endif %}{% if length(params) > 0 %}(
+{% for param in params %}    {{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}
+{% endfor %}){% else if typePlain != "class" %}(){% endif %};
+```{% endif %}{% if kind == "define" %}```cpp
+#define {{name}}{% if exists("params") %}(
+{% for param in params %}    {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}
+{% endfor %}){% endif %}{% if exists("initializer") %} {{initializer}}{% endif %}
+```{% endif %}
+
+{% include "details" %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/nonclass_members_details.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,24 @@
+{% if exists("publicTypes") %}## Types Documentation
+
+{% for child in publicTypes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicFunctions") %}## Functions Documentation
+
+{% for child in publicFunctions %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("publicAttributes") %}## Attributes Documentation
+
+{% for child in publicAttributes %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
+{% if exists("defines") %}## Macro Documentation
+
+{% for child in defines %}### {{child.kind}} {{child.name}}
+
+{{ render("member_details", child) }}
+{% endfor %}{% endif %}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/templates/nonclass_members_tables.tmpl	Tue Dec 01 17:18:12 2020 +0100
@@ -0,0 +1,66 @@
+{% if exists("groups") %}## Modules
+
+| Name           |
+| -------------- |
+{% for child in groups %}| **[{{child.title}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("dirs") %}## Directories
+
+| Name           |
+| -------------- |
+{% for child in dirs %}| **[{{child.title}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("files") %}## Files
+
+| Name           |
+| -------------- |
+{% for child in files %}| **[{{child.title}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("namespaces") %}## Namespaces
+
+| Name           |
+| -------------- |
+{% for child in namespaces %}| **[{{child.name}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicClasses") %}## Classes
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicClasses %}| {{child.kind}} | **[{{child.name}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicTypes") %}## Types
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicTypes %}| {% if existsIn(child, "templateParams") %}template \<{% for param in child.templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}{% endfor %}\></br>{% endif %}{{child.kind}}{% if existsIn(child, "type") %} {{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if child.kind == "enum" %}{ {% for enumvalue in child.enumvalues %}{{enumvalue.name}}{% if existsIn(enumvalue, "initializer") %} {{enumvalue.initializer}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %} }{% endif %}{% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicSlots") %}## Slots
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicSlots %}| {% if existsIn(child, "templateParams") %}template \<{% for param in child.templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}{% endfor %}\></br>{% endif %}{% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicSignals") %}## Signals
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicSignals %}| {% if existsIn(child, "templateParams") %}template \<{% for param in child.templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}{% endfor %}\></br>{% endif %}{% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicFunctions") %}## Functions
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicFunctions %}| {% if existsIn(child, "templateParams") %}template \<{% for param in child.templateParams %}{{param.typePlain}} {{param.name}}{% if existsIn(param, "defvalPlain") %} ={{param.defvalPlain}}{% endif %}{% if not loop.is_last %},{% endif %}{% endfor %}\></br>{% endif %}{% if child.virtual %}virtual {% endif %}{% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**({% for param in child.params %}{{param.type}} {{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% if child.const %} const{% endif %}{% if child.override %} override{% endif %}{% if child.default %} =default{% endif %}{% if child.deleted %} =deleted{% endif %}{% if child.pureVirtual %} =0{% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("publicAttributes") %}## Attributes
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in publicAttributes %}| {% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})** {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
+{% if exists("defines") %}## Defines
+
+|                | Name           |
+| -------------- | -------------- |
+{% for child in defines %}| {% if existsIn(child, "type") %}{{child.type}}{% endif %} | **[{{child.name}}]({{child.url}})**{% if existsIn(child, "params") %}({% for param in child.params %}{{param.name}}{% if existsIn(param, "defval") %} ={{param.defval}}{% endif %}{% if not loop.is_last %}, {% endif %}{% endfor %}){% endif %} {% if existsIn(child, "brief") %}<br>{{child.brief}}{% endif %} |
+{% endfor %}{% endif %}
\ No newline at end of file