:py:`compound.footer_navigation` Footer navigation of a page. See
`Navigation properties`_ for details.
:py:`compound.brief` Brief description. Can be empty. [1]_
+:py:`compound.is_deprecated` Whether the compound is deprecated. Not
+ set for pages. [7]_
:py:`compound.description` Detailed description. Can be empty. [2]_
:py:`compound.modules` List of submodules in this compound.
Set only for modules. See
:py:`module.url` URL of the file containing detailed module docs
:py:`module.name` Module name (just the leaf)
:py:`module.brief` Brief description. Can be empty. [1]_
+:py:`module.is_deprecated` Whether the module is deprecated. [7]_
=========================== ===================================================
`Directory properties`_
:py:`dir.url` URL of the file containing detailed directory docs
:py:`dir.name` Directory name (just the leaf)
:py:`dir.brief` Brief description. Can be empty. [1]_
+:py:`dir.is_deprecated` Whether the directory is deprecated. [7]_
=========================== ===================================================
`File properties`_
:py:`file.url` URL of the file containing detailed file docs
:py:`file.name` File name (just the leaf)
:py:`file.brief` Brief description. Can be empty. [1]_
+:py:`file.is_deprecated` Whether the file is deprecated. [7]_
=========================== ===================================================
`Namespace properties`_
.. class:: m-table m-fullwidth
-=========================== ===================================================
-Property Description
-=========================== ===================================================
-:py:`namespace.url` URL of the file containing detailed namespace docs
-:py:`namespace.name` Namespace name. Fully qualified in case it's in a
- file documentation, just the leaf name if in a
- namespace documentation.
-:py:`namespace.brief` Brief description. Can be empty. [1]_
-=========================== ===================================================
+=============================== ===============================================
+Property Description
+=============================== ===============================================
+:py:`namespace.url` URL of the file containing detailed namespace
+ docs
+:py:`namespace.name` Namespace name. Fully qualified in case it's in
+ a file documentation, just the leaf name if in
+ a namespace documentation.
+:py:`namespace.brief` Brief description. Can be empty. [1]_
+:py:`namespace.is_deprecated` Whether the namespace is deprecated. [7]_
+=============================== ===============================================
`Class properties`_
```````````````````
:py:`class.templates` Template specification. See `Template properties`_
for details.
:py:`class.brief` Brief description. Can be empty. [1]_
+:py:`class.is_deprecated` Whether the class is deprecated. [7]_
:py:`class.is_protected` Whether this is a protected base class. Set only
for base classes.
:py:`class.is_virtual` Whether this is a virtual base class. Set only for
:py:`enum.description` Detailed description. Can be empty. [2]_
:py:`enum.has_details` If there is enough content for the full
description block [5]_
+:py:`enum.is_deprecated` Whether the enum is deprecated. [7]_
:py:`enum.is_protected` If the enum is :cpp:`protected`. Set only for
member types.
:py:`enum.values` List of enum values
:py:`value.id` Identifier hash [3]_
:py:`value.name` Value name [4]_
:py:`value.initializer` Value initializer. Can be empty. [1]_
+:py:`value.is_deprecated` Whether the value is deprecated. [7]_
:py:`value.description` Detailed description. Can be empty. [2]_
=========================== ===================================================
:cpp:`using`. . See `Template properties`_ for
details.
:py:`typedef.brief` Brief description. Can be empty. [1]_
+:py:`typedef.is_deprecated` Whether the typedef is deprecated. [7]_
:py:`typedef.description` Detailed description. Can be empty. [2]_
:py:`typedef.has_details` If there is enough content for the full description
block [4]_
:cpp:`virtual`\ ity and :cpp:`delete`\ d /
:cpp:`default`\ ed functions is removed from
the suffix and available via other properties.
+:py:`func.is_deprecated` Whether the function is deprecated. [7]_
:py:`func.is_protected` If the function is :cpp:`protected`. Set only
for member functions.
:py:`func.is_private` If the function is :cpp:`private`. Set only for
:py:`var.description` Detailed description. Can be empty. [2]_
:py:`var.has_details` If there is enough content for the full description
block [5]_
+:py:`var.is_deprecated` Whether the variable is deprecated. [7]_
:py:`var.is_static` If the variable is :cpp:`static`. Set only for
member variables.
:py:`var.is_protected` If the variable is :cpp:`protected`. Set only for
:py:`define.return_value` Return value description. Can be empty.
:py:`define.brief` Brief description. Can be empty. [1]_
:py:`define.description` Detailed description. Can be empty. [2]_
+:py:`define.is_deprecated` Whether the define is deprecated. [7]_
:py:`define.has_details` If there is enough content for the full
description block [5]_
=============================== ===============================================
the brief listing on top of the page to avoid unnecessary repetition.
.. [6] :py:`i.type` and :py:`param.default` is rendered as HTML and usually
contains links to related documentation
+.. [7] :py:`i.is_deprecated` is set to :py:`True` if detailed docs of given
+ symbol contain the ``@deprecated`` command and to :py:`False` otherwise
`Navigation page templates`_
----------------------------
:py:`i.name` Name
:py:`i.url` URL of the file with detailed documentation
:py:`i.brief` Brief documentation
+:py:`i.is_deprecated` Whether the entry is deprecated. [7]_
:py:`i.has_nestable_children` If the list has nestable children (i.e., dirs
or namespaces)
:py:`i.children` Recursive list of child entries
class ResultFlag(Flag):
HAS_SUFFIX = 1 << 0
+ IS_DEPRECATED = 1 << 1
_TYPE = 0xf << 4
NAMESPACE = 1 << 4
out.add_css_class = None
out.footer_navigation = False
out.example_navigation = None
+ out.is_deprecated = False
# DOXYGEN <PARA> PATCHING 1/4
#
# resetting here explicitly.
add_css_class = parsed.add_css_class
- # Bubble up also footer / example navigation
+ # Bubble up also footer / example navigation, deprecation flag
if parsed.footer_navigation: out.footer_navigation = True
if parsed.example_navigation: out.example_navigation = parsed.example_navigation
+ if parsed.is_deprecated: out.is_deprecated = True
# Assert we didn't miss anything important
assert not parsed.section
file = match.group(1)
if file.startswith(('deprecated', 'bug')):
color = 'm-danger'
+ out.is_deprecated = True
elif file.startswith('todo'):
color = 'm-dim'
else:
assert not parsed.section # might be problematic
return parsed.parsed
+def parse_enum_desc(state: State, element: ET.Element) -> str:
+ # Verify that we didn't ignore any important info by accident
+ parsed = parse_desc_internal(state, element.find('detaileddescription'))
+ parsed.parsed += parse_desc(state, element.find('inbodydescription'))
+ assert not parsed.templates and not parsed.params and not parsed.return_value
+ assert not parsed.section # might be problematic
+ return (parsed.parsed, parsed.is_deprecated)
+
+def parse_enum_value_desc(state: State, element: ET.Element) -> str:
+ # Verify that we didn't ignore any important info by accident
+ parsed = parse_desc_internal(state, element.find('detaileddescription'))
+ assert not parsed.templates and not parsed.params and not parsed.return_value
+ assert not parsed.section # might be problematic
+ return (parsed.parsed, parsed.is_deprecated)
+
def parse_var_desc(state: State, element: ET.Element) -> str:
# Verify that we didn't ignore any important info by accident
parsed = parse_desc_internal(state, element.find('detaileddescription'))
parsed.parsed += parse_desc(state, element.find('inbodydescription'))
assert not parsed.templates and not parsed.params and not parsed.return_value
assert not parsed.section # might be problematic
- return parsed.parsed
+ return (parsed.parsed, parsed.is_deprecated)
def parse_toplevel_desc(state: State, element: ET.Element):
# Verify that we didn't ignore any important info by accident
assert not parsed.return_value
if parsed.params:
logging.warning("{}: use @tparam instead of @param for documenting class templates, @param is ignored".format(state.current))
- return (parsed.parsed, parsed.templates, parsed.section[2] if parsed.section else '', parsed.footer_navigation, parsed.example_navigation)
+ return (parsed.parsed, parsed.templates, parsed.section[2] if parsed.section else '', parsed.footer_navigation, parsed.example_navigation, parsed.is_deprecated)
def parse_typedef_desc(state: State, element: ET.Element):
# Verify that we didn't ignore any important info by accident
parsed.parsed += parse_desc(state, element.find('inbodydescription'))
assert not parsed.params and not parsed.return_value
assert not parsed.section # might be problematic
- return (parsed.parsed, parsed.templates)
+ return (parsed.parsed, parsed.templates, parsed.is_deprecated)
def parse_func_desc(state: State, element: ET.Element):
# Verify that we didn't ignore any important info by accident
parsed = parse_desc_internal(state, element.find('detaileddescription'))
parsed.parsed += parse_desc(state, element.find('inbodydescription'))
assert not parsed.section # might be problematic
- return (parsed.parsed, parsed.templates, parsed.params, parsed.return_value)
+ return (parsed.parsed, parsed.templates, parsed.params, parsed.return_value, parsed.is_deprecated)
def parse_define_desc(state: State, element: ET.Element):
# Verify that we didn't ignore any important info by accident
parsed.parsed += parse_desc(state, element.find('inbodydescription'))
assert not parsed.templates
assert not parsed.section # might be problematic
- return (parsed.parsed, parsed.params, parsed.return_value)
+ return (parsed.parsed, parsed.params, parsed.return_value, parsed.is_deprecated)
def parse_inline_desc(state: State, element: ET.Element) -> str:
if element is None: return ''
enum.name = element.find('name').text
if enum.name.startswith('@'): enum.name = '(anonymous)'
enum.brief = parse_desc(state, element.find('briefdescription'))
- enum.description = parse_desc(state, element.find('detaileddescription')) + parse_desc(state, element.find('inbodydescription'))
+ enum.description, enum.is_deprecated = parse_enum_desc(state, element)
enum.is_protected = element.attrib['prot'] == 'protected'
enum.is_strong = False
if 'strong' in element.attrib:
value.initializer = html.escape(enumvalue.findtext('initializer', ''))
if ''.join(enumvalue.find('briefdescription').itertext()).strip():
logging.warning("{}: ignoring brief description of enum value {}::{}".format(state.current, enum.name, value.name))
- value.description = parse_desc(state, enumvalue.find('detaileddescription'))
+ value.description, value.is_deprecated = parse_enum_value_desc(state, enumvalue)
if value.description:
enum.has_value_details = True
if not state.doxyfile['M_SEARCH_DISABLED']:
result = Empty()
- result.flags = ResultFlag.ENUM_VALUE
+ result.flags = ResultFlag.ENUM_VALUE|(ResultFlag.IS_DEPRECATED if value.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + value.id
result.prefix = state.current_prefix + [enum.name]
result.name = value.name
if enum.brief or enum.has_details or enum.has_value_details:
if not state.doxyfile['M_SEARCH_DISABLED']:
result = Empty()
- result.flags = ResultFlag.ENUM
+ result.flags = ResultFlag.ENUM|(ResultFlag.IS_DEPRECATED if enum.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + enum.id
result.prefix = state.current_prefix
result.name = enum.name
typedef.args = parse_type(state, element.find('argsstring'))
typedef.name = element.find('name').text
typedef.brief = parse_desc(state, element.find('briefdescription'))
- typedef.description, templates = parse_typedef_desc(state, element)
+ typedef.description, templates, typedef.is_deprecated = parse_typedef_desc(state, element)
typedef.is_protected = element.attrib['prot'] == 'protected'
typedef.has_template_details, typedef.templates = parse_template_params(state, element.find('templateparamlist'), templates)
typedef.has_details = typedef.description or typedef.has_template_details
if typedef.brief or typedef.has_details:
result = Empty()
- result.flags = ResultFlag.TYPEDEF
+ result.flags = ResultFlag.TYPEDEF|(ResultFlag.IS_DEPRECATED if typedef.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + typedef.id
result.prefix = state.current_prefix
result.name = typedef.name
func.type = parse_type(state, element.find('type'))
func.name = fix_type_spacing(html.escape(element.find('name').text))
func.brief = parse_desc(state, element.find('briefdescription'))
- func.description, templates, params, func.return_value = parse_func_desc(state, element)
+ func.description, templates, params, func.return_value, func.is_deprecated = parse_func_desc(state, element)
# Extract function signature to prefix, suffix and various flags. Important
# things affecting caller such as static or const (and rvalue overloads)
if func.brief or func.has_details:
if not state.doxyfile['M_SEARCH_DISABLED']:
result = Empty()
- result.flags = ResultFlag.FUNC
+ result.flags = ResultFlag.FUNC|(ResultFlag.IS_DEPRECATED if func.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + func.id
result.prefix = state.current_prefix
result.name = func.name
var.is_private = element.attrib['prot'] == 'private'
var.name = element.find('name').text
var.brief = parse_desc(state, element.find('briefdescription'))
- var.description = parse_var_desc(state, element)
+ var.description, var.is_deprecated = parse_var_desc(state, element)
var.has_details = not not var.description
if var.brief or var.has_details:
if not state.doxyfile['M_SEARCH_DISABLED']:
result = Empty()
- result.flags = ResultFlag.VAR
+ result.flags = ResultFlag.VAR|(ResultFlag.IS_DEPRECATED if var.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + var.id
result.prefix = state.current_prefix
result.name = var.name
define.id = extract_id(element)
define.name = element.find('name').text
define.brief = parse_desc(state, element.find('briefdescription'))
- define.description, params, define.return_value = parse_define_desc(state, element)
+ define.description, params, define.return_value, define.is_deprecated = parse_define_desc(state, element)
define.has_param_details = False
define.params = None
if define.brief or define.has_details:
if not state.doxyfile['M_SEARCH_DISABLED']:
result = Empty()
- result.flags = ResultFlag.DEFINE
+ result.flags = ResultFlag.DEFINE|(ResultFlag.IS_DEPRECATED if define.is_deprecated else ResultFlag(0))
result.url = state.current_url + '#' + define.id
result.prefix = []
result.name = define.name
compound.children = []
compound.parent = None # is filled in by postprocess_state()
+ compound.is_deprecated = False
+ for i in compounddef.find('detaileddescription').findall('.//xrefsect'):
+ id = i.attrib['id']
+ match = xref_id_rx.match(id)
+ file = match.group(1)
+ if file.startswith('deprecated'):
+ compound.is_deprecated = True
+ break
+
if compound.kind in ['class', 'struct', 'union']:
# Fix type spacing
compound.name = fix_type_spacing(compound.name)
# Otherwise add it multiple times with all possible prefixes
else:
# TODO: escape elsewhere so i don't have to unescape here
- index = map.add(html.unescape(result_joiner.join(prefixed_name)), compound.url, flags=kind)
+ index = map.add(html.unescape(result_joiner.join(prefixed_name)), compound.url, flags=kind|(ResultFlag.IS_DEPRECATED if compound.is_deprecated else ResultFlag(0)))
for i in range(len(prefixed_name)):
lookahead_barriers = []
name = ''
compound.has_template_details = False
compound.templates = None
compound.brief = parse_desc(state, compounddef.find('briefdescription'))
- compound.description, templates, compound.sections, footer_navigation, example_navigation = parse_toplevel_desc(state, compounddef.find('detaileddescription'))
+ compound.description, templates, compound.sections, footer_navigation, example_navigation, compound.is_deprecated = parse_toplevel_desc(state, compounddef.find('detaileddescription'))
compound.example_navigation = None
compound.footer_navigation = None
compound.modules = []
f.url = file.url
f.name = file.leaf_name
f.brief = file.brief
+ f.is_deprecated = file.is_deprecated
if compounddef_child.tag == 'innerdir':
compound.dirs += [f]
namespace.url = symbol.url
namespace.name = symbol.leaf_name if compound.kind == 'namespace' else symbol.name
namespace.brief = symbol.brief
+ namespace.is_deprecated = symbol.is_deprecated
compound.namespaces += [namespace]
else:
class_.url = symbol.url
class_.name = symbol.leaf_name if compound.kind in ['namespace', 'class', 'struct', 'union'] else symbol.name
class_.brief = symbol.brief
+ class_.is_deprecated = symbol.is_deprecated
class_.templates = symbol.templates
# Put classes into the public/protected section for
class_.name = symbol.leaf_name
class_.brief = symbol.brief
class_.templates = symbol.templates
+ class_.is_deprecated = symbol.is_deprecated
class_.is_protected = compounddef_child.attrib['prot'] == 'protected'
class_.is_virtual = compounddef_child.attrib['virt'] == 'virtual'
class_.name = symbol.leaf_name
class_.brief = symbol.brief
class_.templates = symbol.templates
+ class_.is_deprecated = symbol.is_deprecated
compound.derived_classes += [class_]
g.url = group.url
g.name = group.leaf_name
g.brief = group.brief
+ g.is_deprecated = group.is_deprecated
compound.modules += [g]
# Other, grouped in sections
entry.url = compound.url
entry.brief = compound.brief
entry.children = []
+ entry.is_deprecated = compound.is_deprecated
entry.has_nestable_children = False
# If a top-level thing, put it directly into the list
break;
}
- list += this.fromUtf8('<li' + (i ? '' : ' id="search-current"') + '><a href="' + results[i].url + '" onmouseover="selectResult(event)"><div class="m-label m-flat ' + color + '">' + type + '</div><div><span class="m-text m-dim">' + this.escapeForRtl(results[i].name.substr(0, results[i].name.length - value.length - results[i].suffixLength)) + '</span><span class="m-dox-search-typed">' + this.escapeForRtl(results[i].name.substr(results[i].name.length - value.length - results[i].suffixLength, value.length)) + '</span>' + this.escapeForRtl(results[i].name.substr(results[i].name.length - results[i].suffixLength)) + '</div></a></li>');
+ list += this.fromUtf8('<li' + (i ? '' : ' id="search-current"') + '><a href="' + results[i].url + '" onmouseover="selectResult(event)"><div class="m-label m-flat ' + color + '">' + type + '</div>' + (results[i].flags & 2 ? '<div class="m-label m-danger">deprecated</div>' : '') + '<div><span class="m-text m-dim">' + this.escapeForRtl(results[i].name.substr(0, results[i].name.length - value.length - results[i].suffixLength)) + '</span><span class="m-dox-search-typed">' + this.escapeForRtl(results[i].name.substr(results[i].name.length - value.length - results[i].suffixLength, value.length)) + '</span>' + this.escapeForRtl(results[i].name.substr(results[i].name.length - results[i].suffixLength)) + '</div></a></li>');
}
document.getElementById('search-results').innerHTML = list;
document.getElementById('search-current').scrollIntoView(true);
{% for i in index.symbols recursive %}
{% if i.children %}
<li class="m-dox-collapsible{% if loop.depth > M_CLASS_TREE_EXPAND_LEVELS or (i.kind != 'namespace' and not M_EXPAND_INNER_TYPES) %} collapsed{% endif %}">
- <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>
+ <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}
+
+ {# the above is here to preserve the newline #}
<ul class="m-dox">
{{ loop(i.children)|indent(4, true) }}
</ul>
</li>
{% else %}
- <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span></li>
+ <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</li>
{% endif %}
{% endfor %}
</ul>
{% set j = joiner(', ') %}
<div class="m-dox-template">template<{% for t in class.templates %}{{ j() }}{{ t.type }}{% if t.name %} {{ t.name }}{% endif %}{% if t.default %} = {{ t.default }}{% endif %}{% endfor %}></div>
{% endif %}
- {{ class.kind }} <a href="{{ class.url }}" class="m-dox">{{ class.name }}</a>{% if class.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}{% if class.is_virtual %} <span class="m-label m-flat m-warning">virtual</span>{% endif %}
+ {{ class.kind }} <a href="{{ class.url }}" class="m-dox">{{ class.name }}</a>{% if class.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% if class.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}{% if class.is_virtual %} <span class="m-label m-flat m-warning">virtual</span>{% endif %}
{# the empty line is above to fix spacing #}
</dt>
<dt>
{% set j = joiner(',\n ') %}
- <span class="m-dox-wrap-bumper">#define <a href="#{{ define.id }}" {% if define.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ define.id }}"{% endif %}>{{ define.name }}</a>{% if define.params != None %}(</span><span class="m-dox-wrap">{% for param in define.params %}{{ j() }}{{ param[0] }}{% endfor %}){% endif %}</span>
+ <span class="m-dox-wrap-bumper">#define <a href="#{{ define.id }}" {% if define.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ define.id }}"{% endif %}>{{ define.name }}</a>{% if define.params != None %}(</span><span class="m-dox-wrap">{% for param in define.params %}{{ j() }}{{ param[0] }}{% endfor %}){% endif %}{% if define.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</span>
</dt>
<dd>{{ define.brief }}</dd>
- <dt>directory <a href="{{ dir.url }}" class="m-dox">{{ dir.name }}</a>/</dt>
+ <dt>directory <a href="{{ dir.url }}" class="m-dox">{{ dir.name }}</a>/{% if dir.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</dt>
<dd>{{ dir.brief }}</dd>
<dt>
{% set j = joiner(',\n ') %}
- <span class="m-dox-wrap-bumper">enum {% if enum.is_strong %}class {% endif %}<a href="#{{ enum.id }}" {% if enum.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ enum.id }}"{% endif %}>{{ enum.name }}</a>{% if enum.type %}: {{ enum.type }}{% endif %} { </span><span class="m-dox-wrap">{% for value in enum.values %}{{ j() }}<a href="#{{ value.id }}" class="m-dox">{{ value.name }}</a>{% if value.initializer %} {{ value.initializer }}{% endif %}{% endfor %} }{% if mark_nonpublic and enum.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}</span>
+ <span class="m-dox-wrap-bumper">enum {% if enum.is_strong %}class {% endif %}<a href="#{{ enum.id }}" {% if enum.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ enum.id }}"{% endif %}>{{ enum.name }}</a>{% if enum.type %}: {{ enum.type }}{% endif %} { </span><span class="m-dox-wrap">{% for value in enum.values %}{{ j() }}<a href="#{{ value.id }}" class="m-dox">{{ value.name }}</a>{% if value.initializer %} {{ value.initializer }}{% endif %}{% if value.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% endfor %} }{% if enum.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% if mark_nonpublic and enum.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}</span>
</dt>
<dd>{{ enum.brief }}</dd>
- <dt>file <a href="{{ file.url }}" class="m-dox">{{ file.name }}</a></dt>
+ <dt>file <a href="{{ file.url }}" class="m-dox">{{ file.name }}</a>{% if file.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</dt>
<dd>{{ file.brief }}</dd>
<div class="m-dox-template">template<{% for t in func.templates %}{{ j() }}{{ t.type }}{% if t.name %} {{ t.name }}{% endif %}{% if t.default %} = {{ t.default }}{% endif%}{% endfor %}></div>
{% endif %}
{% set j = joiner(',\n ') %}
- <span class="m-dox-wrap-bumper">{{ func.prefix }}{% if func.type == 'void' %}void {% elif func.type %}auto {% endif %}<a href="#{{ func.id }}" {% if func.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ func.id }}"{% endif %}>{{ func.name }}</a>(</span><span class="m-dox-wrap">{% for param in func.params %}{{ j() }}{{ param.type_name }}{% if param.default %} = {{ param.default }}{% endif %}{% endfor %}){{ func.suffix }}{% if func.type and func.type != 'void' %} -> {{ func.type }}{% endif %}{% if not func.type or mark_nonpublic %}{% if func.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% elif func.is_private %} <span class="m-label m-flat m-danger">private</span>{% endif %}{% endif %}{% if func.is_defaulted %} <span class="m-label m-flat m-info">defaulted</span>{% endif %}{% if func.is_deleted %} <span class="m-label m-flat m-danger">deleted</span>{% endif %}{% if func.is_explicit %} <span class="m-label m-flat m-info">explicit</span> {% endif %}{% if func.is_pure_virtual %} <span class="m-label m-flat m-warning">pure virtual</span>{% elif func.is_virtual %} <span class="m-label m-flat m-warning">virtual</span>{% endif %}{% if func.is_constexpr %} <span class="m-label m-flat m-primary">constexpr</span>{% endif %}{% if func.is_noexcept %} <span class="m-label m-flat m-success">noexcept</span>{% endif %}</span>
+ <span class="m-dox-wrap-bumper">{{ func.prefix }}{% if func.type == 'void' %}void {% elif func.type %}auto {% endif %}<a href="#{{ func.id }}" {% if func.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ func.id }}"{% endif %}>{{ func.name }}</a>(</span><span class="m-dox-wrap">{% for param in func.params %}{{ j() }}{{ param.type_name }}{% if param.default %} = {{ param.default }}{% endif %}{% endfor %}){{ func.suffix }}{% if func.type and func.type != 'void' %} -> {{ func.type }}{% endif %}{% if func.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% if not func.type or mark_nonpublic %}{% if func.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% elif func.is_private %} <span class="m-label m-flat m-danger">private</span>{% endif %}{% endif %}{% if func.is_defaulted %} <span class="m-label m-flat m-info">defaulted</span>{% endif %}{% if func.is_deleted %} <span class="m-label m-flat m-danger">deleted</span>{% endif %}{% if func.is_explicit %} <span class="m-label m-flat m-info">explicit</span> {% endif %}{% if func.is_pure_virtual %} <span class="m-label m-flat m-warning">pure virtual</span>{% elif func.is_virtual %} <span class="m-label m-flat m-warning">virtual</span>{% endif %}{% if func.is_constexpr %} <span class="m-label m-flat m-primary">constexpr</span>{% endif %}{% if func.is_noexcept %} <span class="m-label m-flat m-success">noexcept</span>{% endif %}</span>
</dt>
<dd>{{ func.brief }}</dd>
- <dt>module <a href="{{ module.url }}" class="m-dox">{{ module.name }}</a></dt>
+ <dt>module <a href="{{ module.url }}" class="m-dox">{{ module.name }}</a>{% if module.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</dt>
<dd>{{ module.brief }}</dd>
- <dt>namespace <a href="{{ namespace.url }}" class="m-dox">{{ namespace.name }}</a></dt>
+ <dt>namespace <a href="{{ namespace.url }}" class="m-dox">{{ namespace.name }}</a>{% if namespace.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</dt>
<dd>{{ namespace.brief }}</dd>
{% set j = joiner(', ') %}
<div class="m-dox-template">template<{% for t in typedef.templates %}{{ j() }}{{ t.type }}{% if t.name %} {{ t.name }}{% endif %}{% if t.default %} = {{ t.default }}{% endif%}{% endfor %}></div>
{% endif %}
- using <a href="#{{ typedef.id }}" {% if typedef.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ typedef.id }}"{% endif %}>{{ typedef.name }}</a> = {{ typedef.type }}{{ typedef.args }}{% if mark_nonpublic and typedef.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}
+ using <a href="#{{ typedef.id }}" {% if typedef.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ typedef.id }}"{% endif %}>{{ typedef.name }}</a> = {{ typedef.type }}{{ typedef.args }}{% if typedef.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% if mark_nonpublic and typedef.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}
{# This empty line needs to be there otherwise it's eaten #}
</dt>
- <dt>{% if var.is_static %}static {% endif %}{{ var.type }} <a href="#{{ var.id }}" {% if var.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ var.id }}"{% endif %}>{{ var.name }}</a>{% if mark_nonpublic and var.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}{% if var.is_constexpr %} <span class="m-label m-flat m-primary">constexpr</span>{% endif %}</dt>
+ <dt>{% if var.is_static %}static {% endif %}{{ var.type }} <a href="#{{ var.id }}" {% if var.has_details %}class="m-dox"{% else %}class="m-dox-self" name="{{ var.id }}"{% endif %}>{{ var.name }}</a>{% if var.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}{% if mark_nonpublic and var.is_protected %} <span class="m-label m-flat m-warning">protected</span>{% endif %}{% if var.is_constexpr %} <span class="m-label m-flat m-primary">constexpr</span>{% endif %}</dt>
<dd>{{ var.brief }}</dd>
{% for i in index.files recursive %}
{% if i.children %}
<li class="m-dox-collapsible{% if loop.depth > M_FILE_TREE_EXPAND_LEVELS %} collapsed{% endif %}">
- <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>
+ <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}
+
+ {# the above is here to preserve the newline #}
<ul class="m-dox">
{{ loop(i.children)|indent(4, true) }}
</ul>
</li>
{% else %}
- <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span></li>
+ <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</li>
{% endif %}
{% endfor %}
</ul>
{% for i in index.modules recursive %}
{% if i.has_nestable_children %}
<li class="m-dox-collapsible">
- <a href="#" onclick="return toggle(this)">module</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>
+ <a href="#" onclick="return toggle(this)">module</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}
+
+ {# the above is here to preserve the newline #}
<ul class="m-dox">
{{ loop(i.children)|indent(4, true) }}
</ul>
</li>
{% else %}
- <li>module <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span></li>
+ <li>module <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</li>
{% endif %}
{% endfor %}
</ul>
{% for i in index.symbols|selectattr('kind', 'equalto', 'namespace') recursive %}
{% if i.has_nestable_children %}
<li class="m-dox-collapsible">
- <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>
+ <a href="#" onclick="return toggle(this)">{{ i.kind }}</a> <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}
+
+ {# the above is here to preserve the newline #}
<ul class="m-dox">
{{ loop(i.children|selectattr('kind', 'equalto', 'namespace'))|indent(4, true) }}
</ul>
</li>
{% else %}
- <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span></li>
+ <li>{{ i.kind }} <a href="{{ i.url }}" class="m-dox">{{ i.name }}</a> <span class="m-dox">{{ i.brief }}</span>{% if i.is_deprecated %} <span class="m-label m-danger">deprecated</span>{% endif %}</li>
{% endif %}
{% endfor %}
</ul>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>Dir/DeprecatedFile.h file | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ <span class="m-breadcrumb"><a href="dir_da5033def2d0db76e9883b31b76b3d0c.html">Dir</a>/</span>DeprecatedFile.h <span class="m-thin">file</span>
+ </h1>
+ <p>A file.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#namespaces">Namespaces</a></li>
+ <li><a href="#nested-classes">Classes</a></li>
+ <li><a href="#defines">Defines</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000002" class="m-dox">Deprecated</a></h4><p>This file is deprecated.</p></aside>
+ <section id="namespaces">
+ <h2><a href="#namespaces">Namespaces</a></h3>
+ <dl class="m-dox">
+ <dt>namespace <a href="namespaceDeprecatedNamespace.html" class="m-dox">DeprecatedNamespace</a> <span class="m-label m-danger">deprecated</span></dt>
+ <dd>A namespace.</dd>
+ </dl>
+ </section>
+ <section id="nested-classes">
+ <h2><a href="#nested-classes">Classes</a></h3>
+ <dl class="m-dox">
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1BaseDeprecatedClass.html" class="m-dox">DeprecatedNamespace::BaseDeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A base class.</dd>
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedClass.html" class="m-dox">DeprecatedNamespace::DeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A class.</dd>
+ <dt>
+ union <a href="unionDeprecatedNamespace_1_1DeprecatedUnion.html" class="m-dox">DeprecatedNamespace::DeprecatedUnion</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>An union.</dd>
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedStruct.html" class="m-dox">DeprecatedNamespace::DeprecatedStruct</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A struct.</dd>
+ </dl>
+ </section>
+ <section id="define-members">
+ <h2><a href="#define-members">Defines</a></h3>
+ <dl class="m-dox">
+ <dt>
+ <span class="m-dox-wrap-bumper">#define <a href="#a7f8376730349fef9ff7d103b0245a13e" class="m-dox">DEPRECATED_MACRO</a>(</span><span class="m-dox-wrap">a,
+ b,
+ c) <span class="m-label m-danger">deprecated</span></span>
+ </dt>
+ <dd>A macro.</dd>
+ </dl>
+ </section>
+ <section>
+ <h2>Define documentation</h2>
+ <section class="m-dox-details" id="a7f8376730349fef9ff7d103b0245a13e"><div>
+ <h3>
+ <span class="m-dox-wrap-bumper">#define <a href="#a7f8376730349fef9ff7d103b0245a13e" class="m-dox-self">DEPRECATED_MACRO</a>(</span><span class="m-dox-wrap">a,
+ b,
+ c)</span>
+ </h3>
+ <p>A macro.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000004" class="m-dox">Deprecated</a></h4><p>This macro is deprecated</p></aside>
+ </div></section>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+/** @dir Dir
+ * @brief A directory
+ */
+
+/** @dir DeprecatedSubdir
+ * @brief A directory
+ * @deprecated This dir is deprecated.
+ */
+
+/** @file
+ * @brief A file
+ * @deprecated This file is deprecated.
+ */
+
+/**
+@brief A namespace
+@deprecated This namespace is deprecated.
+*/
+namespace DeprecatedNamespace {
+
+/**
+@brief A base class
+@deprecated This class is deprecated.
+*/
+struct BaseDeprecatedClass {};
+
+/**
+@brief A class
+@deprecated This class is deprecated.
+*/
+struct DeprecatedClass: BaseDeprecatedClass {};
+
+/**
+@brief A function
+@deprecated This function is deprecated.
+*/
+void deprecatedFoo(int a, bool b, double c);
+
+/**
+@brief A variable
+@deprecated This variable is deprecated.
+*/
+constexpr int DeprecatedVariable = 5;
+
+/**
+@brief A typedef
+@deprecated This typedef is deprecated.
+*/
+typedef int DeprecatedTypedef;
+
+/**
+@brief An enum
+@deprecated This enum is deprecated.
+*/
+enum DeprecatedEnum {
+ /** Enum value */
+ Value = 15
+};
+
+/** @brief An enum */
+enum Enum {
+ /**
+ * Enum value
+ * @deprecated This enum is deprecated.
+ */
+ DeprecatedValue = 15
+};
+
+/** @defgroup group A group
+ * @{
+ */
+
+/**
+@brief An union
+@deprecated This union is deprecated.
+*/
+union DeprecatedUnion {};
+
+/**
+@brief A struct
+@deprecated This struct is deprecated.
+*/
+struct DeprecatedStruct {};
+
+/*@}*/
+
+/** @defgroup deprecated-group A group
+ * @ingroup group
+ * @deprecated This group is deprecated.
+ */
+
+}
+
+/**
+@brief A macro
+@deprecated This macro is deprecated
+*/
+#define DEPRECATED_MACRO(a, b, c)
--- /dev/null
+/** @file
+ * @brief A file
+ */
--- /dev/null
+INPUT = Dir
+RECURSIVE = YES
+AUTOLINK_SUPPORT = NO
+QUIET = YES
+GENERATE_HTML = NO
+GENERATE_LATEX = NO
+GENERATE_XML = YES
+XML_PROGRAMLISTING = NO
+
+M_PAGE_FINE_PRINT =
+M_THEME_COLOR =
+M_LINKS_NAVBAR1 =
+M_LINKS_NAVBAR2 =
+M_SEARCH_DISABLED = YES
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>Classes</h2>
+ <ul class="m-dox">
+ <li class="m-dox-collapsible">
+ <a href="#" onclick="return toggle(this)">namespace</a> <a href="namespaceDeprecatedNamespace.html" class="m-dox">DeprecatedNamespace</a> <span class="m-dox">A namespace.</span> <span class="m-label m-danger">deprecated</span>
+ <ul class="m-dox">
+ <li>struct <a href="structDeprecatedNamespace_1_1BaseDeprecatedClass.html" class="m-dox">BaseDeprecatedClass</a> <span class="m-dox">A base class.</span> <span class="m-label m-danger">deprecated</span></li>
+ <li>struct <a href="structDeprecatedNamespace_1_1DeprecatedClass.html" class="m-dox">DeprecatedClass</a> <span class="m-dox">A class.</span> <span class="m-label m-danger">deprecated</span></li>
+ <li>struct <a href="structDeprecatedNamespace_1_1DeprecatedStruct.html" class="m-dox">DeprecatedStruct</a> <span class="m-dox">A struct.</span> <span class="m-label m-danger">deprecated</span></li>
+ <li>union <a href="unionDeprecatedNamespace_1_1DeprecatedUnion.html" class="m-dox">DeprecatedUnion</a> <span class="m-dox">An union.</span> <span class="m-label m-danger">deprecated</span></li>
+ </ul>
+ </li>
+ </ul>
+ <script>
+ function toggle(e) {
+ e.parentElement.className = e.parentElement.className == 'm-dox-collapsible' ?
+ 'm-dox-expansible' : 'm-dox-collapsible';
+ return false;
+ }
+ /* Collapse all nodes marked as such. Doing it via JS instead of directly in
+ markup so disabling it doesn't harm usability. The list is somehow
+ regenerated on every iteration and shrinks as I change the classes. It's not
+ documented anywhere and I'm not sure if this is the same across browsers, so
+ I am going backwards in that list to be sure. */
+ var collapsed = document.getElementsByClassName("collapsed");
+ for(var i = collapsed.length - 1; i >= 0; --i)
+ collapsed[i].className = 'm-dox-expansible';
+ </script>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>Dir/ directory | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ Dir<span class="m-breadcrumb">/</span> <span class="m-thin">directory</span>
+ </h1>
+ <p>A directory.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#subdirs">Directories</a></li>
+ <li><a href="#files">Files</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <section id="subdirs">
+ <h2><a href="#subdirs">Directories</a></h3>
+ <dl class="m-dox">
+ <dt>directory <a href="dir_89d28accb4b69f59411b7eddd48bbfbd.html" class="m-dox">DeprecatedSubdir</a>/ <span class="m-label m-danger">deprecated</span></dt>
+ <dd>A directory.</dd>
+ </dl>
+ </section>
+ <section id="files">
+ <h2><a href="#files">Files</a></h3>
+ <dl class="m-dox">
+ <dt>file <a href="DeprecatedFile_8h.html" class="m-dox">DeprecatedFile.h</a> <span class="m-label m-danger">deprecated</span></dt>
+ <dd>A file.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>Files</h2>
+ <ul class="m-dox">
+ <li class="m-dox-collapsible">
+ <a href="#" onclick="return toggle(this)">dir</a> <a href="dir_da5033def2d0db76e9883b31b76b3d0c.html" class="m-dox">Dir</a> <span class="m-dox">A directory.</span>
+ <ul class="m-dox">
+ <li class="m-dox-collapsible collapsed">
+ <a href="#" onclick="return toggle(this)">dir</a> <a href="dir_89d28accb4b69f59411b7eddd48bbfbd.html" class="m-dox">DeprecatedSubdir</a> <span class="m-dox">A directory.</span> <span class="m-label m-danger">deprecated</span>
+ <ul class="m-dox">
+ <li>file <a href="File_8h.html" class="m-dox">File.h</a> <span class="m-dox">A file.</span></li>
+ </ul>
+ </li>
+ <li>file <a href="DeprecatedFile_8h.html" class="m-dox">DeprecatedFile.h</a> <span class="m-dox">A file.</span> <span class="m-label m-danger">deprecated</span></li>
+ </ul>
+ </li>
+ </ul>
+ <script>
+ function toggle(e) {
+ e.parentElement.className = e.parentElement.className == 'm-dox-collapsible' ?
+ 'm-dox-expansible' : 'm-dox-collapsible';
+ return false;
+ }
+ /* Collapse all nodes marked as such. Doing it via JS instead of directly in
+ markup so disabling it doesn't harm usability. The list is somehow
+ regenerated on every iteration and shrinks as I change the classes. It's not
+ documented anywhere and I'm not sure if this is the same across browsers, so
+ I am going backwards in that list to be sure. */
+ var collapsed = document.getElementsByClassName("collapsed");
+ for(var i = collapsed.length - 1; i >= 0; --i)
+ collapsed[i].className = 'm-dox-expansible';
+ </script>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>A group module | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ A group <span class="m-thin">module</span></h1>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#groups">Modules</a></li>
+ <li><a href="#nested-classes">Classes</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <section id="groups">
+ <h2><a href="#groups">Modules</a></h3>
+ <dl class="m-dox">
+ <dt>module <a href="group__deprecated-group.html" class="m-dox">A group</a> <span class="m-label m-danger">deprecated</span></dt>
+ <dd></dd>
+ </dl>
+ </section>
+ <section id="nested-classes">
+ <h2><a href="#nested-classes">Classes</a></h3>
+ <dl class="m-dox">
+ <dt>
+ union <a href="unionDeprecatedNamespace_1_1DeprecatedUnion.html" class="m-dox">DeprecatedNamespace::DeprecatedUnion</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>An union.</dd>
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedStruct.html" class="m-dox">DeprecatedNamespace::DeprecatedStruct</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A struct.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>Modules</h2>
+ <ul class="m-dox">
+ <li class="m-dox-collapsible">
+ <a href="#" onclick="return toggle(this)">module</a> <a href="group__group.html" class="m-dox">A group</a> <span class="m-dox"></span>
+ <ul class="m-dox">
+ <li>module <a href="group__deprecated-group.html" class="m-dox">A group</a> <span class="m-dox"></span> <span class="m-label m-danger">deprecated</span></li>
+ </ul>
+ </li>
+ </ul>
+ <script>
+ function toggle(e) {
+ e.parentElement.className = e.parentElement.className == 'm-dox-collapsible' ?
+ 'm-dox-expansible' : 'm-dox-collapsible';
+ return false;
+ }
+ /* Collapse all nodes marked as such. Doing it via JS instead of directly in
+ markup so disabling it doesn't harm usability. The list is somehow
+ regenerated on every iteration and shrinks as I change the classes. It's not
+ documented anywhere and I'm not sure if this is the same across browsers, so
+ I am going backwards in that list to be sure. */
+ var collapsed = document.getElementsByClassName("collapsed");
+ for(var i = collapsed.length - 1; i >= 0; --i)
+ collapsed[i].className = 'm-dox-expansible';
+ </script>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>DeprecatedNamespace namespace | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>DeprecatedNamespace <span class="m-thin">namespace</span></h1>
+ <p>A namespace.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#nested-classes">Classes</a></li>
+ <li><a href="#enum-members">Enums</a></li>
+ <li><a href="#typedef-members">Typedefs</a></li>
+ <li><a href="#func-members">Functions</a></li>
+ <li><a href="#var-members">Variables</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000003" class="m-dox">Deprecated</a></h4><p>This namespace is deprecated.</p></aside>
+ <section id="nested-classes">
+ <h2><a href="#nested-classes">Classes</a></h3>
+ <dl class="m-dox">
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1BaseDeprecatedClass.html" class="m-dox">BaseDeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A base class.</dd>
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedClass.html" class="m-dox">DeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A class.</dd>
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedStruct.html" class="m-dox">DeprecatedStruct</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A struct.</dd>
+ <dt>
+ union <a href="unionDeprecatedNamespace_1_1DeprecatedUnion.html" class="m-dox">DeprecatedUnion</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>An union.</dd>
+ </dl>
+ </section>
+ <section id="enum-members">
+ <h2><a href="#enum-members">Enums</a></h3>
+ <dl class="m-dox">
+ <dt>
+ <span class="m-dox-wrap-bumper">enum <a href="#ab1e37ddc1d65765f2a48485df4af7b47" class="m-dox">DeprecatedEnum</a> { </span><span class="m-dox-wrap"><a href="#ab1e37ddc1d65765f2a48485df4af7b47aa4d464de178e623239177e744f063cc3" class="m-dox">Value</a> = 15 } <span class="m-label m-danger">deprecated</span></span>
+ </dt>
+ <dd>An enum.</dd>
+ <dt>
+ <span class="m-dox-wrap-bumper">enum <a href="#ac59010e983270c330b8625b5433961b9" class="m-dox">Enum</a> { </span><span class="m-dox-wrap"><a href="#ac59010e983270c330b8625b5433961b9aad7bb85a28af8a4e08df4550abde24ee" class="m-dox">DeprecatedValue</a> = 15 <span class="m-label m-danger">deprecated</span> }</span>
+ </dt>
+ <dd>An enum.</dd>
+ </dl>
+ </section>
+ <section id="typedef-members">
+ <h2><a href="#typedef-members">Typedefs</a></h3>
+ <dl class="m-dox">
+ <dt>
+ using <a href="#af503ad3ff194a4c2512aff16df771164" class="m-dox">DeprecatedTypedef</a> = int <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A typedef.</dd>
+ </dl>
+ </section>
+ <section id="func-members">
+ <h2><a href="#func-members">Functions</a></h3>
+ <dl class="m-dox">
+ <dt>
+ <span class="m-dox-wrap-bumper">void <a href="#a9a1b3fc71d294b548095985acc0d5092" class="m-dox">deprecatedFoo</a>(</span><span class="m-dox-wrap">int a,
+ bool b,
+ double c) <span class="m-label m-danger">deprecated</span></span>
+ </dt>
+ <dd>A function.</dd>
+ </dl>
+ </section>
+ <section id="var-members">
+ <h2><a href="#var-members">Variables</a></h3>
+ <dl class="m-dox">
+ <dt>int <a href="#ae934297fc39624409333eefbfeabf5e5" class="m-dox">DeprecatedVariable</a> <span class="m-label m-danger">deprecated</span> <span class="m-label m-flat m-primary">constexpr</span></dt>
+ <dd>A variable.</dd>
+ </dl>
+ </section>
+ <section>
+ <h2>Enum documentation</h2>
+ <section class="m-dox-details" id="ab1e37ddc1d65765f2a48485df4af7b47"><div>
+ <h3>
+ enum DeprecatedNamespace::<wbr /><a href="#ab1e37ddc1d65765f2a48485df4af7b47" class="m-dox-self">DeprecatedEnum</a>
+ </h3>
+ <p>An enum.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000010" class="m-dox">Deprecated</a></h4><p>This enum is deprecated.</p></aside>
+ <table class="m-table m-fullwidth m-flat m-dox">
+ <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
+ <tbody>
+ <tr>
+ <td><a href="#ab1e37ddc1d65765f2a48485df4af7b47aa4d464de178e623239177e744f063cc3" class="m-dox-self" name="ab1e37ddc1d65765f2a48485df4af7b47aa4d464de178e623239177e744f063cc3">Value</a></td>
+ <td>
+<p>Enum value</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div></section>
+ <section class="m-dox-details" id="ac59010e983270c330b8625b5433961b9"><div>
+ <h3>
+ enum DeprecatedNamespace::<wbr /><a href="#ac59010e983270c330b8625b5433961b9" class="m-dox-self">Enum</a>
+ </h3>
+ <p>An enum.</p>
+ <table class="m-table m-fullwidth m-flat m-dox">
+ <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
+ <tbody>
+ <tr>
+ <td><a href="#ac59010e983270c330b8625b5433961b9aad7bb85a28af8a4e08df4550abde24ee" class="m-dox-self" name="ac59010e983270c330b8625b5433961b9aad7bb85a28af8a4e08df4550abde24ee">DeprecatedValue</a></td>
+ <td>
+<p>Enum value</p><aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000014" class="m-dox">Deprecated</a></h4><p>This enum is deprecated.</p></aside>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div></section>
+ </section>
+ <section>
+ <h2>Typedef documentation</h2>
+ <section class="m-dox-details" id="af503ad3ff194a4c2512aff16df771164"><div>
+ <h3>
+ typedef int DeprecatedNamespace::<wbr /><a href="#af503ad3ff194a4c2512aff16df771164" class="m-dox-self">DeprecatedTypedef</a>
+ </h3>
+ <p>A typedef.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000009" class="m-dox">Deprecated</a></h4><p>This typedef is deprecated.</p></aside>
+ </div></section>
+ </section>
+ <section>
+ <h2>Function documentation</h2>
+ <section class="m-dox-details" id="a9a1b3fc71d294b548095985acc0d5092"><div>
+ <h3>
+ <span class="m-dox-wrap-bumper">void DeprecatedNamespace::<wbr /></span><span class="m-dox-wrap"><span class="m-dox-wrap-bumper"><a href="#a9a1b3fc71d294b548095985acc0d5092" class="m-dox-self">deprecatedFoo</a>(</span><span class="m-dox-wrap">int a,
+ bool b,
+ double c)</span></span>
+ </h3>
+ <p>A function.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000007" class="m-dox">Deprecated</a></h4><p>This function is deprecated.</p></aside>
+ </div></section>
+ </section>
+ <section>
+ <h2>Variable documentation</h2>
+ <section class="m-dox-details" id="ae934297fc39624409333eefbfeabf5e5"><div>
+ <h3>
+ int DeprecatedNamespace::<wbr /><a href="#ae934297fc39624409333eefbfeabf5e5" class="m-dox-self">DeprecatedVariable</a> <span class="m-label m-primary">constexpr</span>
+ </h3>
+ <p>A variable.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000008" class="m-dox">Deprecated</a></h4><p>This variable is deprecated.</p></aside>
+ </div></section>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>Namespaces</h2>
+ <ul class="m-dox">
+ <li>namespace <a href="namespaceDeprecatedNamespace.html" class="m-dox">DeprecatedNamespace</a> <span class="m-dox">A namespace.</span> <span class="m-label m-danger">deprecated</span></li>
+ </ul>
+ <script>
+ function toggle(e) {
+ e.parentElement.className = e.parentElement.className == 'm-dox-collapsible' ?
+ 'm-dox-expansible' : 'm-dox-collapsible';
+ return false;
+ }
+ /* Collapse all nodes marked as such. Doing it via JS instead of directly in
+ markup so disabling it doesn't harm usability. The list is somehow
+ regenerated on every iteration and shrinks as I change the classes. It's not
+ documented anywhere and I'm not sure if this is the same across browsers, so
+ I am going backwards in that list to be sure. */
+ var collapsed = document.getElementsByClassName("collapsed");
+ for(var i = collapsed.length - 1; i >= 0; --i)
+ collapsed[i].className = 'm-dox-expansible';
+ </script>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>DeprecatedNamespace::BaseDeprecatedClass struct | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ <span class="m-breadcrumb"><a href="namespaceDeprecatedNamespace.html">DeprecatedNamespace</a>::</span>BaseDeprecatedClass <span class="m-thin">struct</span>
+ </h1>
+ <p>A base class.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000005" class="m-dox">Deprecated</a></h4><p>This class is deprecated.</p></aside>
+ <section id="derived-classes">
+ <h2><a href="#derived-classes">Derived classes</a></h3>
+ <dl class="m-dox">
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1DeprecatedClass.html" class="m-dox">DeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A class.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>DeprecatedNamespace::DeprecatedClass struct | My Project</title>
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+ <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+ <div class="m-container">
+ <div class="m-row">
+ <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Project</a>
+ </div>
+ </div>
+</nav></header>
+<main><article>
+ <div class="m-container m-container-inflatable">
+ <div class="m-row">
+ <div class="m-col-l-10 m-push-l-1">
+ <h1>
+ <span class="m-breadcrumb"><a href="namespaceDeprecatedNamespace.html">DeprecatedNamespace</a>::</span>DeprecatedClass <span class="m-thin">struct</span>
+ </h1>
+ <p>A class.</p>
+<aside class="m-note m-danger"><h4><a href="deprecated.html#_deprecated000006" class="m-dox">Deprecated</a></h4><p>This class is deprecated.</p></aside>
+ <section id="base-classes">
+ <h2><a href="#base-classes">Base classes</a></h3>
+ <dl class="m-dox">
+ <dt>
+ struct <a href="structDeprecatedNamespace_1_1BaseDeprecatedClass.html" class="m-dox">BaseDeprecatedClass</a> <span class="m-label m-danger">deprecated</span>
+ </dt>
+ <dd>A base class.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
-O+!-vL;(N*Dggih0s#R40{{d704W0i2mk;m0{{*H0B!>S6aWBe0s#X60{|cZ04W0iBme*?0{|)j0B!>SFaQ8)0{}Jv0Br*RJOBVX1OWm7LI8j|0{}<>0CEEWPyhgL0{~V40CWQYTmS%L0{~(G0A&IJ1pos8ZU6u&0|0UW04M_hcmM!y0|0&i0BHjNga80-0|1Hu06GK#1OSi#fI0&JmH+@{0|1@?0A~XLqyPYJ0|2T30AU9J8UO%oXaE3qumAvZ0|2%F06GK#006`QfI0&J$^Zap0|3$h0CWTc0RRI41pos8-T(k80|4d#04M_h>;M361pwFp0Aca~0BHgN1^@#90s#PJ0{{jA0A~XL3;_UP0{{{M0B{2U7y$rc0{|WY0Cfof_y7QHXaE3qumAvZBmn?(AOHXmHvj-(VgLXjhX4R!z5oCq;Q#<(76AajG64VpO<{Cs0B&JzWpi+0V`WWYbZ9PUbZu-1O<{CsIy!A>ZYXJPbSxlgZgeRCZeeX@b8ul}WldppXf9}UZEPcLX>LtnbZ9y{R%K&!Z*l-*Y+-YAO<{CsUol@XR%K&!Z*neZbZu+~O<{CsIyzQmV{~tFIy!A>ZYU`rV{dMAbO2*)VRLg$VRUF;F<&uOWn*-2axQ3eZEPcLX>LtnbZ9y{QekdqWdLJrVRLg$VRUF;F<&uKVQyz-E@*UZYz9qXbZ9y{QekdqWjZ=-X>KSfAY*TCb94Y>Y+-YAO<{CsUol@XQekdqWiDuRZEPcLX>L$qXJsJ5yC73_VsK$+WdL(^VsK$+WiDuRZEOGl
\ No newline at end of file
+O+!-vL;(N*Dggih0s#R40{{d704W0i2mk;m0{{*H0B!>S6aWBe0s#X60{|cZ04W0iBme*?0{|)j0B!>SFaQ8)0{}Jv0Br*RJOBVX1OWm7LI8j|0{}<>0CEEWPyhgL0{~V40CWQYTmS%L0{~(G0A&IJ1pos8ZU6u&0|0UW04M_hcmM!y0|0&i0BHjNga80-0|1Hu06GK#1OSi#fI0&JmH+@{0|1@?0A~XLqyPYJ0|2T30AU9J8UO%oXaE3qumAvZ0|2%F06GK#006`QfI0&J$^Zap0|3$h0CWTc0RRI41pos8-T(k80|4d#04M_h>;M361pwFp0Aca~0BHgN1^@#90s#PJ0{{jA0A~XL3;_UP0{{{M0B{2U7y$rc0{|WY0Cfof_y7QHXaE3qumAvZBmn?(AOHXmHvj-(VgLXlhX4R!z5oCq;Q#<(76AajG64VpO<{Cs0B&JzWpi+0V`WWYbZ9PUbZu-1O<{CsIy!A>ZYXJPbSxlgZgeRCZeeX@b8ul}WldppXf9}UZEPcLX>LtnbZ9y{R%K&!Z*l-*Y+-YAO<{CsUol@XR%K&!Z*neZbZu+~O<{CsIyzQmV{~tFIy!A>ZYU`rV{dMAbO2*)VRLg$VRUF;F<&uOWn*-2axQ3eZEPcLX>LtnbZ9y{QekdqWdLJrVRLg$VRUF;F<&uKVQyz-E@*UZYz9qXbZ9y{QekdqWjZ=-X>KSfAY*TCb94Y>Y+-YAO<{CsUol@XQekdqWiDuRZEPcLX>L$qXJsJ5yC73_VsK$+WdL(^VsK$+WiDuRZEOGl
\ No newline at end of file
index = map.add("Math::min(int, int)", "namespaceMath.html#min", suffix_length=8, flags=ResultFlag.FUNC)
trie.insert("math::min()", index, lookahead_barriers=[4])
trie.insert("min()", index)
-index = map.add("Math::Vector", "classMath_1_1Vector.html", flags=ResultFlag.CLASS)
+index = map.add("Math::Vector", "classMath_1_1Vector.html", flags=ResultFlag.CLASS|ResultFlag.IS_DEPRECATED)
trie.insert("math::vector", index)
trie.insert("vector", index)
index = map.add("Math::Vector::min() const", "classMath_1_1Vector.html#min", suffix_length=6, flags=ResultFlag.FUNC)
--- /dev/null
+/** @dir DeprecatedDir
+ * @brief A directory
+ * @deprecated This dir is deprecated.
+ */
+
+/** @file
+ * @brief A file
+ * @deprecated This file is deprecated.
+ */
+
+/**
+@brief A namespace
+@deprecated This namespace is deprecated.
+*/
+namespace DeprecatedNamespace {
+
+/**
+@brief A class
+@deprecated This class is deprecated.
+*/
+struct DeprecatedClass {};
+
+/**
+@brief A function
+@deprecated This function is deprecated.
+*/
+void deprecatedFoo(int a, bool b, double c);
+
+/**
+@brief A variable
+@deprecated This variable is deprecated.
+*/
+constexpr int DeprecatedVariable = 5;
+
+/**
+@brief A typedef
+@deprecated This typedef is deprecated.
+*/
+typedef int DeprecatedTypedef;
+
+/**
+@brief An enum
+@deprecated This enum is deprecated.
+*/
+enum class DeprecatedEnum {
+ /** Enum value */
+ Value = 15
+};
+
+/** @brief An enum */
+enum class Enum {
+ /**
+ * Enum value
+ * @deprecated This enum is deprecated.
+ */
+ DeprecatedValue = 15
+};
+
+/** @defgroup deprecated-group A group
+ * @deprecated This group is deprecated.
+ */
+
+/**
+@brief An union
+@deprecated This union is deprecated.
+*/
+union DeprecatedUnion {};
+
+/**
+@brief A struct
+@deprecated This struct is deprecated.
+*/
+struct DeprecatedStruct {};
+
+/*@}*/
+
+}
+
+/**
+@brief A macro
+@deprecated This macro is deprecated
+*/
+#define DEPRECATED_MACRO(a, b, c)
-INPUT = Dir UndocumentedDir input.dox
+INPUT = Dir DeprecatedDir UndocumentedDir input.dox
QUIET = YES
GENERATE_HTML = NO
GENERATE_LATEX = NO
let resultsForVec = [
{ name: 'Math::Vector',
url: 'classMath_1_1Vector.html',
- flags: 32,
+ flags: 32|2, /* Deprecated */
suffixLength: 3 }];
assert.deepEqual(Search.search('vec'), resultsForVec);
self.assertEqual(*self.actual_expected_contents('group__group2.html'))
self.assertEqual(*self.actual_expected_contents('group__subgroup.html'))
self.assertEqual(*self.actual_expected_contents('modules.html'))
+
+class Deprecated(IntegrationTestCase):
+ def __init__(self, *args, **kwargs):
+ super().__init__(__file__, 'deprecated', *args, **kwargs)
+
+ def test(self):
+ self.run_dox2html5(wildcard='*.xml')
+ # Test that the [deprecated] label is in all places where it should ne
+
+ # Class tree
+ self.assertEqual(*self.actual_expected_contents('annotated.html'))
+
+ # Member namespace and define listing
+ self.assertEqual(*self.actual_expected_contents('DeprecatedFile_8h.html'))
+
+ # Member file and directory listing
+ self.assertEqual(*self.actual_expected_contents('dir_da5033def2d0db76e9883b31b76b3d0c.html'))
+
+ # File and directory tree
+ self.assertEqual(*self.actual_expected_contents('files.html'))
+
+ # Member module listing
+ self.assertEqual(*self.actual_expected_contents('group__group.html'))
+
+ # Module tree
+ self.assertEqual(*self.actual_expected_contents('modules.html'))
+
+ # Member namespace, class, function, variable, typedef and enum listing
+ self.assertEqual(*self.actual_expected_contents('namespaceDeprecatedNamespace.html'))
+
+ # Namespace tree
+ self.assertEqual(*self.actual_expected_contents('namespaces.html'))
+
+ # Base and derived class listing
+ self.assertEqual(*self.actual_expected_contents('structDeprecatedNamespace_1_1BaseDeprecatedClass.html'))
+ self.assertEqual(*self.actual_expected_contents('structDeprecatedNamespace_1_1DeprecatedClass.html'))
if i: out += '\n'
flags = ResultFlag(ResultMap.flags_struct.unpack_from(serialized, i*4 + 3)[0])
extra = []
+ if flags & ResultFlag.IS_DEPRECATED:
+ extra += ['deprecated']
if flags & ResultFlag.HAS_SUFFIX:
extra += ['suffix_length={}'.format(ResultMap.suffix_length_struct.unpack_from(serialized, offset)[0])]
offset += 1
search_data_pretty = pretty_print(f.read())[0]
#print(search_data_pretty)
self.assertEqual(search_data_pretty, """
-a group [0]
-| page [5]
-namespace [1]
+deprecatednamespace [0]
+| | :$
+| | :deprecatedclass [1]
+| | | struct [2]
+| | | union [3]
+| | | enum [20]
+| | | | :$
+| | | | :value [19]
+| | | typedef [23]
+| | | variable [24]
+| | | foo() [25]
+| | enum [22]
+| | | :$
+| | | :deprecatedvalue [21]
+| class [1]
+| struct [2]
+| union [3]
+| list [5]
+| dir [13]
+| | /$
+| | deprecatedfile.h [14]
+| file.h [14]
+| |oo() [25]
+| enum [20]
+| | :$
+| | :value [19]
+| value [21]
+| | riable [24]
+| typedef [23]
+| _macro() [30]
+a group [4, 10]
+| page [11]
+namespace [6]
| :$
-| :class [2]
+| :class [7]
| | :$
-| | :foo() [9, 10, 11, 12]
-| struct [3]
-| union [4]
-| enum [14]
+| | :foo() [15, 16, 17, 18]
+| struct [8]
+| union [9]
+| enum [27]
| | :$
-| | :value [13]
-| typedef [15]
-| variable [16]
-class [2]
+| | :value [26]
+| typedef [28]
+| variable [29]
+class [7]
| :$
-| :foo() [9, 10, 11, 12]
-struct [3]
-|ubpage [6]
-union [4]
-dir [7]
-| /$
-| file.h [8]
-file.h [8]
-|oo() [9, 10, 11, 12]
-enum [14]
+| :foo() [15, 16, 17, 18]
+struct [8]
+|ubpage [12]
+union [9]
+foo() [15, 16, 17, 18]
+value [19, 26]
+| riable [29]
+enum [22, 27]
| :$
-| :value [13]
-value [13]
-| riable [16]
-typedef [15]
-macro [17]
-| _function() [18]
-| _with_params() [19]
-0: A group [type=GROUP] -> group__group.html
-1: Namespace [type=NAMESPACE] -> namespaceNamespace.html
-2: Namespace::Class [type=CLASS] -> classNamespace_1_1Class.html
-3: Namespace::Struct [type=STRUCT] -> structNamespace_1_1Struct.html
-4: Namespace::Union [type=UNION] -> unionNamespace_1_1Union.html
-5: A page [type=PAGE] -> page.html
-6: A page » Subpage [type=PAGE] -> subpage.html
-7: Dir [type=DIR] -> dir_da5033def2d0db76e9883b31b76b3d0c.html
-8: Dir/File.h [type=FILE] -> File_8h.html
-9: Namespace::Class::foo() [type=FUNC] -> classNamespace_1_1Class.html#aaeba4096356215868370d6ea476bf5d9
-10: Namespace::Class::foo() const [suffix_length=6, type=FUNC] -> classNamespace_1_1Class.html#ac03c5b93907dda16763eabd26b25500a
-11: Namespace::Class::foo() && [suffix_length=3, type=FUNC] -> classNamespace_1_1Class.html#ac9e7e80d06281e30cfcc13171d117ade
-12: Namespace::Class::foo(const Enum&, Typedef) [suffix_length=20, type=FUNC] -> classNamespace_1_1Class.html#aba8d57a830d4d79f86d58d92298677fa
-13: Namespace::Enum::Value [type=ENUM_VALUE] -> namespaceNamespace.html#add172b93283b1ab7612c3ca6cc5dcfeaa689202409e48743b914713f96d93947c
-14: Namespace::Enum [type=ENUM] -> namespaceNamespace.html#add172b93283b1ab7612c3ca6cc5dcfea
-15: Namespace::Typedef [type=TYPEDEF] -> namespaceNamespace.html#abe2a245304bc2234927ef33175646e08
-16: Namespace::Variable [type=VAR] -> namespaceNamespace.html#ad3121960d8665ab045ca1bfa1480a86d
-17: MACRO [type=DEFINE] -> File_8h.html#a824c99cb152a3c2e9111a2cb9c34891e
-18: MACRO_FUNCTION() [type=DEFINE] -> File_8h.html#a025158d6007b306645a8eb7c7a9237c1
-19: MACRO_FUNCTION_WITH_PARAMS(params) [suffix_length=6, type=DEFINE] -> File_8h.html#a88602bba5a72becb4f2dc544ce12c420
+| :deprecatedvalue [21]
+| value [26]
+typedef [28]
+macro [31]
+| _function() [32]
+| _with_params() [33]
+0: DeprecatedNamespace [deprecated, type=NAMESPACE] -> namespaceDeprecatedNamespace.html
+1: DeprecatedNamespace::DeprecatedClass [deprecated, type=STRUCT] -> structDeprecatedNamespace_1_1DeprecatedClass.html
+2: DeprecatedNamespace::DeprecatedStruct [deprecated, type=STRUCT] -> structDeprecatedNamespace_1_1DeprecatedStruct.html
+3: DeprecatedNamespace::DeprecatedUnion [deprecated, type=UNION] -> unionDeprecatedNamespace_1_1DeprecatedUnion.html
+4: A group [type=GROUP] -> group__group.html
+5: Deprecated List [type=PAGE] -> deprecated.html
+6: Namespace [type=NAMESPACE] -> namespaceNamespace.html
+7: Namespace::Class [type=CLASS] -> classNamespace_1_1Class.html
+8: Namespace::Struct [type=STRUCT] -> structNamespace_1_1Struct.html
+9: Namespace::Union [type=UNION] -> unionNamespace_1_1Union.html
+10: A group [type=GROUP] -> group__deprecated-group.html
+11: A page [type=PAGE] -> page.html
+12: A page » Subpage [type=PAGE] -> subpage.html
+13: DeprecatedDir [deprecated, type=DIR] -> dir_c6c97faf5a6cbd0f62c27843ce3af4d0.html
+14: DeprecatedDir/DeprecatedFile.h [deprecated, type=FILE] -> DeprecatedFile_8h.html
+15: Namespace::Class::foo() [type=FUNC] -> classNamespace_1_1Class.html#aaeba4096356215868370d6ea476bf5d9
+16: Namespace::Class::foo() const [suffix_length=6, type=FUNC] -> classNamespace_1_1Class.html#ac03c5b93907dda16763eabd26b25500a
+17: Namespace::Class::foo() && [suffix_length=3, type=FUNC] -> classNamespace_1_1Class.html#ac9e7e80d06281e30cfcc13171d117ade
+18: Namespace::Class::foo(const Enum&, Typedef) [suffix_length=20, type=FUNC] -> classNamespace_1_1Class.html#aba8d57a830d4d79f86d58d92298677fa
+19: DeprecatedNamespace::DeprecatedEnum::Value [type=ENUM_VALUE] -> namespaceDeprecatedNamespace.html#ab1e37ddc1d65765f2a48485df4af7b47a689202409e48743b914713f96d93947c
+20: DeprecatedNamespace::DeprecatedEnum [deprecated, type=ENUM] -> namespaceDeprecatedNamespace.html#ab1e37ddc1d65765f2a48485df4af7b47
+21: DeprecatedNamespace::Enum::DeprecatedValue [deprecated, type=ENUM_VALUE] -> namespaceDeprecatedNamespace.html#ac59010e983270c330b8625b5433961b9a4b5b0e9709902228c33df7e5e377e596
+22: DeprecatedNamespace::Enum [type=ENUM] -> namespaceDeprecatedNamespace.html#ac59010e983270c330b8625b5433961b9
+23: DeprecatedNamespace::DeprecatedTypedef [deprecated, type=TYPEDEF] -> namespaceDeprecatedNamespace.html#af503ad3ff194a4c2512aff16df771164
+24: DeprecatedNamespace::DeprecatedVariable [deprecated, type=VAR] -> namespaceDeprecatedNamespace.html#ae934297fc39624409333eefbfeabf5e5
+25: DeprecatedNamespace::deprecatedFoo(int, bool, double) [deprecated, suffix_length=17, type=FUNC] -> namespaceDeprecatedNamespace.html#a9a1b3fc71d294b548095985acc0d5092
+26: Namespace::Enum::Value [type=ENUM_VALUE] -> namespaceNamespace.html#add172b93283b1ab7612c3ca6cc5dcfeaa689202409e48743b914713f96d93947c
+27: Namespace::Enum [type=ENUM] -> namespaceNamespace.html#add172b93283b1ab7612c3ca6cc5dcfea
+28: Namespace::Typedef [type=TYPEDEF] -> namespaceNamespace.html#abe2a245304bc2234927ef33175646e08
+29: Namespace::Variable [type=VAR] -> namespaceNamespace.html#ad3121960d8665ab045ca1bfa1480a86d
+30: DEPRECATED_MACRO(a, b, c) [deprecated, suffix_length=7, type=DEFINE] -> DeprecatedFile_8h.html#a7f8376730349fef9ff7d103b0245a13e
+31: MACRO [type=DEFINE] -> File_8h.html#a824c99cb152a3c2e9111a2cb9c34891e
+32: MACRO_FUNCTION() [type=DEFINE] -> File_8h.html#a025158d6007b306645a8eb7c7a9237c1
+33: MACRO_FUNCTION_WITH_PARAMS(params) [suffix_length=6, type=DEFINE] -> File_8h.html#a88602bba5a72becb4f2dc544ce12c420
""".strip())
if __name__ == '__main__': # pragma: no cover