[rtems-central commit] applconfig: Improve interface mappings

Sebastian Huber sebh at rtems.org
Thu Aug 6 13:08:54 UTC 2020


Module:    rtems-central
Branch:    master
Commit:    e9312e279dd296708a52c5cf7ae02305c03f4209
Changeset: http://git.rtems.org/rtems-central/commit/?id=e9312e279dd296708a52c5cf7ae02305c03f4209

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Aug  6 10:24:16 2020 +0200

applconfig: Improve interface mappings

---

 rtemsspec/applconfig.py                           | 29 ++++++++++++++++++-----
 rtemsspec/tests/spec-applconfig/a.yml             |  4 ++++
 rtemsspec/tests/spec-applconfig/define.yml        | 14 +++++++++++
 rtemsspec/tests/spec-applconfig/unspec-define.yml |  8 +++++++
 rtemsspec/tests/spec/interface-more.yml           | 12 ++++++++++
 rtemsspec/tests/test_applconfig.py                | 12 ++++++++--
 6 files changed, 71 insertions(+), 8 deletions(-)

diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py
index bd08c8c..fc6f48b 100644
--- a/rtemsspec/applconfig.py
+++ b/rtemsspec/applconfig.py
@@ -350,12 +350,16 @@ def _get_value_sphinx_reference(ctx: ItemGetValueContext) -> Any:
     return _SPHINX_DOC_REFS[ctx.key]
 
 
+def _get_value_sphinx_define(ctx: ItemGetValueContext) -> Any:
+    return f":c:macro:`{ctx.value[ctx.key]}`"
+
+
 def _get_value_sphinx_function(ctx: ItemGetValueContext) -> Any:
-    return f"``{ctx.value[ctx.key]}()``"
+    return f":c:func:`{ctx.value[ctx.key]}`"
 
 
-def _get_value_sphinx_code(ctx: ItemGetValueContext) -> Any:
-    return f"``{ctx.value[ctx.key]}``"
+def _get_value_sphinx_type(ctx: ItemGetValueContext) -> Any:
+    return f":c:type:`{ctx.value[ctx.key]}`"
 
 
 def _add_sphinx_get_values(mapper: ItemMapper) -> None:
@@ -365,12 +369,19 @@ def _add_sphinx_get_values(mapper: ItemMapper) -> None:
             mapper.add_get_value(doc_ref, _get_value_none)
             mapper.add_get_value(f"{doc_ref}/{key}",
                                  _get_value_sphinx_reference)
+    mapper.add_get_value("interface/define:/name", _get_value_sphinx_define)
     mapper.add_get_value("interface/function:/name",
                          _get_value_sphinx_function)
     mapper.add_get_value("interface/macro:/name", _get_value_sphinx_function)
-    mapper.add_get_value("interface/struct:/name", _get_value_sphinx_code)
-    mapper.add_get_value("interface/typedef:/name", _get_value_sphinx_code)
-    mapper.add_get_value("interface/union:/name", _get_value_sphinx_code)
+    mapper.add_get_value("interface/struct:/name", _get_value_sphinx_type)
+    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)
+    mapper.add_get_value("interface/unspecified-function:/name",
+                         _get_value_sphinx_function)
+    mapper.add_get_value("interface/unspecified-type:/name",
+                         _get_value_sphinx_type)
 
 
 def _c_user_ref(ref: str, name: str) -> str:
@@ -446,12 +457,18 @@ def _add_doxygen_get_values(mapper: ItemMapper) -> None:
                                  _get_value_doxygen_reference)
             name = f"interface/appl-config-option/{opt}:/name"
             mapper.add_get_value(name, get_value_hash)
+    mapper.add_get_value("interface/define:/name", get_value_hash)
     mapper.add_get_value("interface/function:/name",
                          get_value_doxygen_function)
     mapper.add_get_value("interface/macro:/name", get_value_doxygen_function)
     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-function:/name",
+                         get_value_doxygen_function)
+    mapper.add_get_value("interface/unspecified-type:/name",
+                         get_value_double_colon)
 
 
 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 bde070c..514f0ce 100644
--- a/rtemsspec/tests/spec-applconfig/a.yml
+++ b/rtemsspec/tests/spec-applconfig/a.yml
@@ -16,6 +16,10 @@ notes: |
   * ${func:/name}
 
   * ${td:/name}
+
+  * ${define:/name}
+
+  * ${unspec-define:/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/define.yml b/rtemsspec/tests/spec-applconfig/define.yml
new file mode 100644
index 0000000..567de32
--- /dev/null
+++ b/rtemsspec/tests/spec-applconfig/define.yml
@@ -0,0 +1,14 @@
+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
+brief: null
+definition:
+  default: ''
+  variants: []
+description: null
+name: DEFINE
+notes: null
+interface-type: define
+links: []
+type: interface
diff --git a/rtemsspec/tests/spec-applconfig/unspec-define.yml b/rtemsspec/tests/spec-applconfig/unspec-define.yml
new file mode 100644
index 0000000..e5831da
--- /dev/null
+++ b/rtemsspec/tests/spec-applconfig/unspec-define.yml
@@ -0,0 +1,8 @@
+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
+type: interface
diff --git a/rtemsspec/tests/spec/interface-more.yml b/rtemsspec/tests/spec/interface-more.yml
index deaf1e6..237232b 100644
--- a/rtemsspec/tests/spec/interface-more.yml
+++ b/rtemsspec/tests/spec/interface-more.yml
@@ -67,6 +67,18 @@ links:
   uid: interface
 - role: spec-refinement
   spec-key: interface-type
+  spec-value: unspecified-define
+  uid: interface
+- role: spec-refinement
+  spec-key: interface-type
+  spec-value: unspecified-function
+  uid: interface
+- role: spec-refinement
+  spec-key: interface-type
+  spec-value: unspecified-type
+  uid: interface
+- role: spec-refinement
+  spec-key: interface-type
   spec-value: variable
   uid: interface
 spec-description: null
diff --git a/rtemsspec/tests/test_applconfig.py b/rtemsspec/tests/test_applconfig.py
index e98db81..5985476 100644
--- a/rtemsspec/tests/test_applconfig.py
+++ b/rtemsspec/tests/test_applconfig.py
@@ -82,9 +82,13 @@ NOTES:
 
     * :ref:`Terminate`
 
-    * ``func()``
+    * :c:func:`func`
 
-    * ``td``
+    * :c:type:`td`
+
+    * :c:macro:`DEFINE`
+
+    * :c:macro:`UNSPEC_DEFINE`
 
 .. index:: b
 
@@ -424,6 +428,10 @@ NOTES:
  * * func()
  *
  * * ::td
+ *
+ * * #DEFINE
+ *
+ * * #UNSPEC_DEFINE
  * @endparblock
  */
 #define a



More information about the vc mailing list