[rtems-central commit] rtemsspec: Add a get value for header files

Sebastian Huber sebh at rtems.org
Tue Feb 14 14:01:30 UTC 2023


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Feb 10 11:04:09 2023 +0100

rtemsspec: Add a get value for header files

---

 rtemsspec/applconfig.py                  | 4 +++-
 rtemsspec/content.py                     | 5 +++++
 rtemsspec/interface.py                   | 6 ++++--
 rtemsspec/sphinxcontent.py               | 6 ++++--
 rtemsspec/tests/spec-interface/func4.yml | 3 ++-
 rtemsspec/tests/test_interfacedoc.py     | 4 ++++
 6 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/rtemsspec/applconfig.py b/rtemsspec/applconfig.py
index d203426d..caef370a 100644
--- a/rtemsspec/applconfig.py
+++ b/rtemsspec/applconfig.py
@@ -28,7 +28,8 @@ from typing import Any, Callable, Dict, List, Optional
 
 from rtemsspec.content import Content, CContent, get_value_double_colon, \
     get_value_doxygen_function, get_value_doxygen_group, \
-    get_value_doxygen_ref, get_value_hash, get_value_plural
+    get_value_doxygen_ref, get_value_hash, get_value_header_file, \
+    get_value_plural
 from rtemsspec.sphinxcontent import GenericContent, SphinxContent, \
     SphinxInterfaceMapper
 from rtemsspec.items import EmptyItem, Item, ItemCache, ItemGetValueContext, \
@@ -311,6 +312,7 @@ def _add_doxygen_get_values(mapper: ItemMapper) -> None:
     mapper.add_get_value("interface/function:/name",
                          get_value_doxygen_function)
     mapper.add_get_value("interface/group:/name", get_value_doxygen_group)
+    mapper.add_get_value("interface/header-file:/path", get_value_header_file)
     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)
diff --git a/rtemsspec/content.py b/rtemsspec/content.py
index 242e0db9..12ea4e9a 100644
--- a/rtemsspec/content.py
+++ b/rtemsspec/content.py
@@ -1040,6 +1040,11 @@ def get_value_double_colon(ctx: ItemGetValueContext) -> Any:
     return f"::{ctx.value[ctx.key]}"
 
 
+def get_value_header_file(ctx: ItemGetValueContext) -> Any:
+    """ Gets a value formatted as a header file. """
+    return f"``<{ctx.value[ctx.key]}>``"
+
+
 def get_value_hash(ctx: ItemGetValueContext) -> Any:
     """ Gets a value with a # prefix. """
     return f"#{ctx.value[ctx.key]}"
diff --git a/rtemsspec/interface.py b/rtemsspec/interface.py
index d5edc0ec..4cb2cb6f 100644
--- a/rtemsspec/interface.py
+++ b/rtemsspec/interface.py
@@ -36,8 +36,8 @@ from rtemsspec.content import CContent, CInclude, enabled_by_to_exp, \
     ExpressionMapper, forward_declaration, get_value_compound, \
     get_value_double_colon, get_value_doxygen_function, \
     get_value_doxygen_group, get_value_doxygen_ref, \
-    get_value_forward_declaration, get_value_hash, get_value_params, \
-    get_value_plural, to_camel_case
+    get_value_forward_declaration, get_value_hash, get_value_header_file, \
+    get_value_params, get_value_plural, to_camel_case
 from rtemsspec.items import Item, ItemCache, ItemGetValueMap, ItemMapper
 
 ItemMap = Dict[str, Item]
@@ -81,6 +81,8 @@ class _InterfaceMapper(ItemMapper):
         self.add_get_value("interface/enum/doc:/name", get_value_hash)
         self.add_get_value("interface/group/doc:/name",
                            get_value_doxygen_group)
+        self.add_get_value("interface/header-file/doc:/path",
+                           get_value_header_file)
         self.add_get_value("interface/macro/doc:/name",
                            get_value_doxygen_function)
         self.add_get_value("interface/macro/doc:/params/name",
diff --git a/rtemsspec/sphinxcontent.py b/rtemsspec/sphinxcontent.py
index 1002f9ce..199ee874 100644
--- a/rtemsspec/sphinxcontent.py
+++ b/rtemsspec/sphinxcontent.py
@@ -27,8 +27,8 @@
 from contextlib import contextmanager
 from typing import Any, Iterable, Iterator, List, Optional, Sequence, Union
 
-from rtemsspec.content import Content, get_value_plural, make_lines, \
-     to_camel_case
+from rtemsspec.content import Content, get_value_header_file, \
+     get_value_plural, make_lines, to_camel_case
 from rtemsspec.items import Item, ItemGetValue, ItemGetValueContext, ItemMapper
 
 GenericContent = Union[str, List[str], "Content"]
@@ -286,6 +286,8 @@ class SphinxMapper(ItemMapper):
                            _get_value_sphinx_macro)
         self.add_get_value("interface/function:/name",
                            _get_value_sphinx_function)
+        self.add_get_value("interface/header-file:/path",
+                           get_value_header_file)
         self.add_get_value("interface/macro:/name", _get_value_sphinx_function)
         self.add_get_value("interface/struct:/name", _get_value_sphinx_type)
         self.add_get_value("interface/typedef:/name", _get_value_sphinx_type)
diff --git a/rtemsspec/tests/spec-interface/func4.yml b/rtemsspec/tests/spec-interface/func4.yml
index 193329d3..3d6cafbf 100644
--- a/rtemsspec/tests/spec-interface/func4.yml
+++ b/rtemsspec/tests/spec-interface/func4.yml
@@ -15,7 +15,8 @@ definition:
       params: []
       return: NotSoVeryLongType
     enabled-by: true
-description: null
+description: |
+  I am defined in ${h4:/path}.
 enabled-by: true
 index-entries: []
 interface-type: function
diff --git a/rtemsspec/tests/test_interfacedoc.py b/rtemsspec/tests/test_interfacedoc.py
index 3d5eb523..e9d78bad 100644
--- a/rtemsspec/tests/test_interfacedoc.py
+++ b/rtemsspec/tests/test_interfacedoc.py
@@ -155,6 +155,10 @@ Function brief description with very long return type.
     VeryLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongType
     VeryLongTypeFunction( void );
 
+.. rubric:: DESCRIPTION:
+
+I am defined in ``<h4.h>``.
+
 .. rubric:: RETURN VALUES:
 
 This function returns an object with a very long type.



More information about the vc mailing list