From 79684a584dce3c2c37b3579ac1809cbdffb32fbb Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 6 Aug 2020 15:03:36 +0200 Subject: applconfig: Add references for unspec interfaces --- rtemsspec/applconfig.py | 41 +++++++++++++++++++--- rtemsspec/tests/spec-applconfig/a.yml | 6 ++++ .../tests/spec-applconfig/unspec-define-2.yml | 9 +++++ rtemsspec/tests/spec-applconfig/unspec-define.yml | 1 + rtemsspec/tests/spec-applconfig/unspec-type-2.yml | 9 +++++ rtemsspec/tests/spec-applconfig/unspec-type.yml | 9 +++++ rtemsspec/tests/test_applconfig.py | 12 +++++++ 7 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 rtemsspec/tests/spec-applconfig/unspec-define-2.yml create mode 100644 rtemsspec/tests/spec-applconfig/unspec-type-2.yml create mode 100644 rtemsspec/tests/spec-applconfig/unspec-type.yml diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py index fc6f48bd..f0dff59c 100644 --- a/rtemsspec/applconfig.py +++ b/rtemsspec/applconfig.py @@ -362,6 +362,22 @@ def _get_value_sphinx_type(ctx: ItemGetValueContext) -> Any: return f":c:type:`{ctx.value[ctx.key]}`" +def _get_value_sphinx_url(ctx: ItemGetValueContext) -> Any: + return f"`{ctx.value[ctx.key]} <{ctx.item['reference']}>`_" + + +def _get_value_sphinx_unspecified_define(ctx: ItemGetValueContext) -> Any: + if ctx.item["reference"]: + return _get_value_sphinx_url(ctx) + return _get_value_sphinx_define(ctx) + + +def _get_value_sphinx_unspecified_type(ctx: ItemGetValueContext) -> Any: + if ctx.item["reference"]: + return _get_value_sphinx_url(ctx) + return _get_value_sphinx_type(ctx) + + def _add_sphinx_get_values(mapper: ItemMapper) -> None: for key in _SPHINX_DOC_REFS: for opt in ["feature-enable", "feature", "initializer", "integer"]: @@ -377,11 +393,11 @@ def _add_sphinx_get_values(mapper: ItemMapper) -> None: mapper.add_get_value("interface/typedef:/name", _get_value_sphinx_type) mapper.add_get_value("interface/union:/name", _get_value_sphinx_type) mapper.add_get_value("interface/unspecified-define:/name", - _get_value_sphinx_define) + _get_value_sphinx_unspecified_define) mapper.add_get_value("interface/unspecified-function:/name", _get_value_sphinx_function) mapper.add_get_value("interface/unspecified-type:/name", - _get_value_sphinx_type) + _get_value_sphinx_unspecified_type) def _c_user_ref(ref: str, name: str) -> str: @@ -448,6 +464,22 @@ def _get_value_doxygen_reference(ctx: ItemGetValueContext) -> Any: return _DOXYGEN_DOC_REFS[ctx.key] +def _get_value_doxygen_url(ctx: ItemGetValueContext) -> Any: + return f"{ctx.value[ctx.key]}" + + +def _get_value_doxygen_unspecfied_define(ctx: ItemGetValueContext) -> Any: + if ctx.item["reference"]: + return _get_value_doxygen_url(ctx) + return get_value_hash(ctx) + + +def _get_value_doxygen_unspecfied_type(ctx: ItemGetValueContext) -> Any: + if ctx.item["reference"]: + return _get_value_doxygen_url(ctx) + return get_value_double_colon(ctx) + + def _add_doxygen_get_values(mapper: ItemMapper) -> None: for key in _DOXYGEN_DOC_REFS: for opt in ["feature-enable", "feature", "initializer", "integer"]: @@ -464,11 +496,12 @@ def _add_doxygen_get_values(mapper: ItemMapper) -> None: mapper.add_get_value("interface/struct:/name", get_value_double_colon) mapper.add_get_value("interface/typedef:/name", get_value_double_colon) mapper.add_get_value("interface/union:/name", get_value_double_colon) - mapper.add_get_value("interface/unspecified-define:/name", get_value_hash) + mapper.add_get_value("interface/unspecified-define:/name", + _get_value_doxygen_unspecfied_define) mapper.add_get_value("interface/unspecified-function:/name", get_value_doxygen_function) mapper.add_get_value("interface/unspecified-type:/name", - get_value_double_colon) + _get_value_doxygen_unspecfied_type) def generate(config: dict, item_cache: ItemCache) -> None: diff --git a/rtemsspec/tests/spec-applconfig/a.yml b/rtemsspec/tests/spec-applconfig/a.yml index 514f0ce7..6cbd2668 100644 --- a/rtemsspec/tests/spec-applconfig/a.yml +++ b/rtemsspec/tests/spec-applconfig/a.yml @@ -20,6 +20,12 @@ notes: | * ${define:/name} * ${unspec-define:/name} + + * ${unspec-define-2:/name} + + * ${unspec-type:/name} + + * ${unspec-type-2:/name} appl-config-option-type: feature copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/rtemsspec/tests/spec-applconfig/unspec-define-2.yml b/rtemsspec/tests/spec-applconfig/unspec-define-2.yml new file mode 100644 index 00000000..017673b5 --- /dev/null +++ b/rtemsspec/tests/spec-applconfig/unspec-define-2.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-define +links: [] +name: UNSPEC_DEFINE_2 +reference: https://foo +type: interface diff --git a/rtemsspec/tests/spec-applconfig/unspec-define.yml b/rtemsspec/tests/spec-applconfig/unspec-define.yml index e5831da4..766b0dec 100644 --- a/rtemsspec/tests/spec-applconfig/unspec-define.yml +++ b/rtemsspec/tests/spec-applconfig/unspec-define.yml @@ -5,4 +5,5 @@ enabled-by: true interface-type: unspecified-define links: [] name: UNSPEC_DEFINE +reference: null type: interface diff --git a/rtemsspec/tests/spec-applconfig/unspec-type-2.yml b/rtemsspec/tests/spec-applconfig/unspec-type-2.yml new file mode 100644 index 00000000..f34f63ea --- /dev/null +++ b/rtemsspec/tests/spec-applconfig/unspec-type-2.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-type +links: [] +name: unspec_type_2 +reference: https://bar +type: interface diff --git a/rtemsspec/tests/spec-applconfig/unspec-type.yml b/rtemsspec/tests/spec-applconfig/unspec-type.yml new file mode 100644 index 00000000..b133d429 --- /dev/null +++ b/rtemsspec/tests/spec-applconfig/unspec-type.yml @@ -0,0 +1,9 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +interface-type: unspecified-type +links: [] +name: unspec_type +reference: null +type: interface diff --git a/rtemsspec/tests/test_applconfig.py b/rtemsspec/tests/test_applconfig.py index 59854761..08861def 100644 --- a/rtemsspec/tests/test_applconfig.py +++ b/rtemsspec/tests/test_applconfig.py @@ -90,6 +90,12 @@ NOTES: * :c:macro:`UNSPEC_DEFINE` + * `UNSPEC_DEFINE_2 `_ + + * :c:type:`unspec_type` + + * `unspec_type_2 `_ + .. index:: b .. _b: @@ -432,6 +438,12 @@ NOTES: * * #DEFINE * * * #UNSPEC_DEFINE + * + * * UNSPEC_DEFINE_2 + * + * * ::unspec_type + * + * * unspec_type_2 * @endparblock */ #define a -- cgit v1.2.3