[rtems-central commit] spec: Unify interface functions and macros

Sebastian Huber sebh at rtems.org
Tue Oct 4 06:00:10 UTC 2022


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Sep 30 13:20:46 2022 +0200

spec: Unify interface functions and macros

---

 rtemsspec/interface.py                             |  5 ++-
 rtemsspec/interfacedoc.py                          | 19 ++++-----
 rtemsspec/tests/spec-interface/macro.yml           | 22 +++++++----
 rtemsspec/tests/spec-interface/macro2.yml          | 16 ++++++--
 rtemsspec/tests/spec-interface/macro3.yml          |  6 ++-
 rtemsspec/tests/test_interfacedoc.py               |  8 ++--
 spec/rtems/basedefs/if/alias.yml                   | 14 +++++--
 spec/rtems/basedefs/if/align-down.yml              |  8 +++-
 spec/rtems/basedefs/if/align-up.yml                |  8 +++-
 spec/rtems/basedefs/if/aligned.yml                 | 14 +++++--
 spec/rtems/basedefs/if/alignof.yml                 | 24 ++++++++---
 spec/rtems/basedefs/if/alloc-align.yml             | 14 +++++--
 spec/rtems/basedefs/if/alloc-size-2.yml            | 14 +++++--
 spec/rtems/basedefs/if/alloc-size.yml              | 14 +++++--
 spec/rtems/basedefs/if/array-size.yml              |  8 +++-
 spec/rtems/basedefs/if/compiler-memory-barrier.yml | 16 ++++++--
 spec/rtems/basedefs/if/concat.yml                  |  6 ++-
 spec/rtems/basedefs/if/container-of.yml            |  8 +++-
 spec/rtems/basedefs/if/declare-global-symbol.yml   |  8 +++-
 spec/rtems/basedefs/if/deconst.yml                 |  8 +++-
 spec/rtems/basedefs/if/define-global-symbol.yml    | 22 +++++++----
 spec/rtems/basedefs/if/dequalify-depthx.yml        | 46 ++++++++++++++--------
 spec/rtems/basedefs/if/dequalify.yml               |  8 +++-
 spec/rtems/basedefs/if/devolatile.yml              |  8 +++-
 spec/rtems/basedefs/if/expand.yml                  |  6 ++-
 spec/rtems/basedefs/if/have-member-same-type.yml   | 22 +++++++----
 spec/rtems/basedefs/if/obfuscate-variable.yml      | 16 ++++++--
 spec/rtems/basedefs/if/predict-false.yml           | 16 ++++++--
 spec/rtems/basedefs/if/predict-true.yml            | 16 ++++++--
 spec/rtems/basedefs/if/printflike.yml              | 14 +++++--
 spec/rtems/basedefs/if/return-address.yml          | 14 +++++--
 spec/rtems/basedefs/if/section.yml                 | 14 +++++--
 spec/rtems/basedefs/if/static-assert.yml           | 26 ++++++++----
 spec/rtems/basedefs/if/string.yml                  |  8 +++-
 spec/rtems/basedefs/if/symbol-name.yml             | 16 ++++++--
 spec/rtems/basedefs/if/typeof-refx.yml             | 14 +++++--
 spec/rtems/basedefs/if/unreachable.yml             | 22 +++++++----
 spec/rtems/basedefs/if/weak-alias.yml              | 14 +++++--
 spec/rtems/basedefs/if/xconcat.yml                 |  6 ++-
 spec/rtems/basedefs/if/xstring.yml                 |  8 +++-
 spec/rtems/clock/if/get-ticks-per-second-macro.yml |  6 ++-
 spec/rtems/clock/if/get-ticks-since-boot-macro.yml |  6 ++-
 spec/rtems/config/if/get-do-zero-of-workspace.yml  |  6 ++-
 spec/rtems/config/if/get-idle-task-stack-size.yml  |  6 ++-
 spec/rtems/config/if/get-idle-task.yml             |  6 ++-
 spec/rtems/config/if/get-interrupt-stack-size.yml  |  6 ++-
 spec/rtems/config/if/get-maximum-processors.yml    |  6 ++-
 spec/rtems/config/if/get-microseconds-per-tick.yml |  6 ++-
 spec/rtems/config/if/get-milliseconds-per-tick.yml |  6 ++-
 spec/rtems/config/if/get-nanoseconds-per-tick.yml  |  6 ++-
 .../config/if/get-number-of-initial-extensions.yml |  6 ++-
 .../config/if/get-stack-allocate-for-idle-hook.yml |  6 ++-
 spec/rtems/config/if/get-stack-allocate-hook.yml   |  6 ++-
 .../config/if/get-stack-allocate-init-hook.yml     |  6 ++-
 .../if/get-stack-allocator-avoids-work-space.yml   |  6 ++-
 spec/rtems/config/if/get-stack-free-hook.yml       |  6 ++-
 spec/rtems/config/if/get-ticks-per-timeslice.yml   |  6 ++-
 spec/rtems/config/if/get-unified-work-area.yml     |  6 ++-
 spec/rtems/config/if/get-user-extension-table.yml  |  6 ++-
 .../config/if/get-user-multiprocessing-table.yml   | 12 +++++-
 spec/rtems/config/if/get-work-space-size.yml       | 12 ++++--
 spec/rtems/config/if/resource-is-unlimited.yml     |  6 ++-
 .../config/if/resource-maximum-per-allocation.yml  |  8 +++-
 spec/rtems/config/if/resource-unlimited.yml        |  6 ++-
 spec/rtems/intr/if/disable.yml                     |  6 ++-
 spec/rtems/intr/if/enable.yml                      |  6 ++-
 spec/rtems/intr/if/entry-initializer.yml           |  8 +++-
 spec/rtems/intr/if/flash.yml                       |  6 ++-
 spec/rtems/intr/if/is-in-progress.yml              |  6 ++-
 spec/rtems/intr/if/is-replace.yml                  | 11 ++++--
 spec/rtems/intr/if/is-shared.yml                   |  8 +++-
 spec/rtems/intr/if/is-unique.yml                   |  8 +++-
 spec/rtems/intr/if/local-disable.yml               |  6 ++-
 spec/rtems/intr/if/local-enable.yml                |  6 ++-
 spec/rtems/intr/if/lock-acquire-isr.yml            | 20 +++++++---
 spec/rtems/intr/if/lock-acquire.yml                |  8 +++-
 spec/rtems/intr/if/lock-declare.yml                |  8 +++-
 spec/rtems/intr/if/lock-define.yml                 |  8 +++-
 spec/rtems/intr/if/lock-destroy.yml                |  6 ++-
 spec/rtems/intr/if/lock-initialize.yml             |  8 +++-
 spec/rtems/intr/if/lock-initializer.yml            |  6 ++-
 spec/rtems/intr/if/lock-isr-disable.yml            |  6 ++-
 spec/rtems/intr/if/lock-member.yml                 |  6 ++-
 spec/rtems/intr/if/lock-reference.yml              |  8 +++-
 spec/rtems/intr/if/lock-release-isr.yml            | 20 +++++++---
 spec/rtems/intr/if/lock-release.yml                |  8 +++-
 spec/rtems/message/if/buffer.yml                   | 14 ++++---
 spec/rtems/mode/if/interrupt-level.yml             |  6 ++-
 spec/rtems/object/if/build-id-macro.yml            |  8 +++-
 spec/rtems/object/if/build-name-macro.yml          |  8 +++-
 spec/rtems/object/if/id-api-maximum-macro.yml      |  6 ++-
 spec/rtems/object/if/id-api-minimum-macro.yml      |  6 ++-
 spec/rtems/object/if/id-get-api-macro.yml          |  6 ++-
 spec/rtems/object/if/id-get-class-macro.yml        |  6 ++-
 spec/rtems/object/if/id-get-index-macro.yml        |  6 ++-
 spec/rtems/object/if/id-get-node-macro.yml         |  6 ++-
 spec/rtems/object/if/id-initial.yml                |  8 +++-
 spec/rtems/scheduler/if/get-processor-macro.yml    |  6 ++-
 .../scheduler/if/get-processor-maximum-macro.yml   |  6 ++-
 spec/rtems/support/if/microseconds-to-ticks.yml    |  8 +++-
 .../support/if/milliseconds-to-microseconds.yml    |  8 +++-
 spec/rtems/support/if/milliseconds-to-ticks.yml    |  8 +++-
 spec/rtems/task/if/storage-size.yml                | 20 +++++++---
 spec/score/basedefs/if/assert-unreachable.yml      | 16 ++++++--
 .../interface-function-definition-directive.yml    |  5 ++-
 .../interface-function-definition-variant-list.yml |  2 +-
 .../spec/interface-function-definition-variant.yml |  4 +-
 spec/spec/interface-function-definition.yml        | 11 +++---
 spec/spec/interface-function.yml                   | 12 ++++--
 spec/spec/interface-macro.yml                      | 44 ---------------------
 110 files changed, 807 insertions(+), 320 deletions(-)

diff --git a/rtemsspec/interface.py b/rtemsspec/interface.py
index f5bb7edc..87fb3662 100644
--- a/rtemsspec/interface.py
+++ b/rtemsspec/interface.py
@@ -547,9 +547,10 @@ class Node:
         if len(line) > 79:
             param_block = ", \\\n  ".join(params)
             line = f"#define {name}( \\\n  {param_block} \\\n)"
-        if not definition:
+        body = definition["body"]
+        if not body:
             return line
-        body_lines = self.substitute_code(definition).split("\n")
+        body_lines = self.substitute_code(body).split("\n")
         if len(body_lines) == 1 and len(line + body_lines[0]) <= 79:
             body = " "
         else:
diff --git a/rtemsspec/interfacedoc.py b/rtemsspec/interfacedoc.py
index 72f07492..d0666c25 100644
--- a/rtemsspec/interfacedoc.py
+++ b/rtemsspec/interfacedoc.py
@@ -49,6 +49,10 @@ def _get_reference(name: str) -> str:
     return get_reference(get_label(f"{INTERFACE} {name}"))
 
 
+def _get_code_param(ctx: ItemGetValueContext) -> Any:
+    return _sanitize_name(ctx.value[ctx.key])
+
+
 class _CodeMapper(ItemMapper):
     def __init__(self, item: Item):
         super().__init__(item)
@@ -56,6 +60,7 @@ class _CodeMapper(ItemMapper):
                            get_value_forward_declaration)
         self.add_get_value("interface/struct:/name", get_value_compound)
         self.add_get_value("interface/union:/name", get_value_compound)
+        self.add_get_value("interface/macro:/params/name", _get_code_param)
 
 
 def _get_param(ctx: ItemGetValueContext) -> Any:
@@ -125,23 +130,13 @@ def _add_function_definition(content: CContent, mapper: ItemMapper, item: Item,
                              value: Dict[str, Any]) -> None:
     ret = mapper.substitute(value["return"])
     name = item["name"]
-    params = [
-        mapper.substitute(_sanitize_name(param)) for param in value["params"]
-    ]
+    params = [mapper.substitute(param) for param in value["params"]]
     content.declare_function(ret, name, params)
 
 
-def _add_macro_definition(content: CContent, _mapper: ItemMapper, item: Item,
-                          _value: Dict[str, Any]) -> None:
-    ret = "#define"
-    name = item["name"]
-    params = [_sanitize_name(param["name"]) for param in item["params"]]
-    content.call_function(ret, name, params, semicolon="")
-
-
 _ADD_DEFINITION = {
     "interface/function": _add_function_definition,
-    "interface/macro": _add_macro_definition,
+    "interface/macro": _add_function_definition,
 }
 
 
diff --git a/rtemsspec/tests/spec-interface/macro.yml b/rtemsspec/tests/spec-interface/macro.yml
index 1de4b429..449576c2 100644
--- a/rtemsspec/tests/spec-interface/macro.yml
+++ b/rtemsspec/tests/spec-interface/macro.yml
@@ -3,13 +3,21 @@ brief: Very long macro brief description.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    do {
-      (void) ${.:/params[1]/name};
-      (void) ${.:/params[2]/name};
-      (void) ${.:/params[3]/name};
-    } while ( 0 );
-    ${.:/params[0]/name} + 1;
+  default:
+    attributes: null
+    body: |
+      do {
+        (void) ${.:/params[1]/name};
+        (void) ${.:/params[2]/name};
+        (void) ${.:/params[3]/name};
+      } while ( 0 );
+      ${.:/params[0]/name} + 1;
+    params:
+    - ${.:/params[0]/name}
+    - ${.:/params[1]/name}
+    - ${.:/params[2]/name}
+    - ${.:/params[3]/name}
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/rtemsspec/tests/spec-interface/macro2.yml b/rtemsspec/tests/spec-interface/macro2.yml
index 00fbd89e..fdae338f 100644
--- a/rtemsspec/tests/spec-interface/macro2.yml
+++ b/rtemsspec/tests/spec-interface/macro2.yml
@@ -3,10 +3,20 @@ brief: Short macro brief description.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) + 1 )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) + 1 )
+    params:
+    - ${.:/params[0]/name}
+    return: null
   variants:
-  - definition: ''
+  - definition:
+      attributes: null
+      body: ''
+      params:
+      - ${.:/params[0]/name}
+      return: null
     enabled-by: '0'
 description: null
 enabled-by: true
diff --git a/rtemsspec/tests/spec-interface/macro3.yml b/rtemsspec/tests/spec-interface/macro3.yml
index eed7e52b..be93887a 100644
--- a/rtemsspec/tests/spec-interface/macro3.yml
+++ b/rtemsspec/tests/spec-interface/macro3.yml
@@ -3,7 +3,11 @@ brief: Macro without parameters.
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: '0'
+  default:
+    attributes: null
+    body: '0'
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/rtemsspec/tests/test_interfacedoc.py b/rtemsspec/tests/test_interfacedoc.py
index 99ecdeef..3d5eb523 100644
--- a/rtemsspec/tests/test_interfacedoc.py
+++ b/rtemsspec/tests/test_interfacedoc.py
@@ -263,12 +263,12 @@ Very long macro brief description.
 
 .. code-block:: c
 
-    #define VERY_LONG_MACRO(
+    VERY_LONG_MACRO(
       VeryLongParam0,
       VeryLongParam1,
       VeryLongParam2,
       VeryLongParam3
-    )
+    );
 
 .. rubric:: PARAMETERS:
 
@@ -314,7 +314,7 @@ Short macro brief description.
 
 .. code-block:: c
 
-    #define MACRO( Param0 )
+    MACRO( Param0 );
 
 .. rubric:: PARAMETERS:
 
@@ -344,7 +344,7 @@ Macro without parameters.
 
 .. code-block:: c
 
-    #define MACRO()
+    MACRO( void );
 """
         assert content == src.read()
 
diff --git a/spec/rtems/basedefs/if/alias.yml b/spec/rtems/basedefs/if/alias.yml
index 921fb87c..18601274 100644
--- a/spec/rtems/basedefs/if/alias.yml
+++ b/spec/rtems/basedefs/if/alias.yml
@@ -4,10 +4,18 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __alias__( #_target ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __alias__( #_target ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/align-down.yml b/spec/rtems/basedefs/if/align-down.yml
index a8efbdad..ca11765f 100644
--- a/spec/rtems/basedefs/if/align-down.yml
+++ b/spec/rtems/basedefs/if/align-down.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) & ~( ( ${.:/params[1]/name} ) - 1 ) )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) & ~( ( ${.:/params[1]/name} ) - 1 ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/align-up.yml b/spec/rtems/basedefs/if/align-up.yml
index e494b74b..816a8b1d 100644
--- a/spec/rtems/basedefs/if/align-up.yml
+++ b/spec/rtems/basedefs/if/align-up.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ( ${.:/params[0]/name} ) + ( ${.:/params[1]/name} ) - 1 ) & ~( ( ${.:/params[1]/name} ) - 1 ) )
+  default:
+    attributes: null
+    body: |
+      ( ( ( ${.:/params[0]/name} ) + ( ${.:/params[1]/name} ) - 1 ) & ~( ( ${.:/params[1]/name} ) - 1 ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/aligned.yml b/spec/rtems/basedefs/if/aligned.yml
index 5eee754c..1267b110 100644
--- a/spec/rtems/basedefs/if/aligned.yml
+++ b/spec/rtems/basedefs/if/aligned.yml
@@ -5,10 +5,18 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __aligned__( _alignment ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __aligned__( _alignment ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/alignof.yml b/spec/rtems/basedefs/if/alignof.yml
index 735a5740..8abd6252 100644
--- a/spec/rtems/basedefs/if/alignof.yml
+++ b/spec/rtems/basedefs/if/alignof.yml
@@ -4,15 +4,27 @@ brief: |
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    sizeof( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      sizeof( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants:
-  - definition: |
-      alignof( ${.:/params[0]/name} )
+  - definition:
+      attributes: null
+      body: |
+        alignof( ${.:/params[0]/name} )
+      params: []
+      return: null
     enabled-by:
     - ${/compiler/if/cplusplus:/name} >= 201103L
-  - definition: |
-      _Alignof( ${.:/params[0]/name} )
+  - definition:
+      attributes: null
+      body: |
+        _Alignof( ${.:/params[0]/name} )
+      params: []
+      return: null
     enabled-by:
     - ${/compiler/if/stdc-version:/name} >= 201112L
 description: null
diff --git a/spec/rtems/basedefs/if/alloc-align.yml b/spec/rtems/basedefs/if/alloc-align.yml
index 0c07ac41..db6cb05e 100644
--- a/spec/rtems/basedefs/if/alloc-align.yml
+++ b/spec/rtems/basedefs/if/alloc-align.yml
@@ -5,10 +5,18 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __alloc_align__( ${.:/params[0]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __alloc_align__( ${.:/params[0]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/alloc-size-2.yml b/spec/rtems/basedefs/if/alloc-size-2.yml
index ad537e3b..80046b8f 100644
--- a/spec/rtems/basedefs/if/alloc-size-2.yml
+++ b/spec/rtems/basedefs/if/alloc-size-2.yml
@@ -5,10 +5,18 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __alloc_size__( ${.:/params[0]/name}, ${.:/params[1]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __alloc_size__( ${.:/params[0]/name}, ${.:/params[1]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/alloc-size.yml b/spec/rtems/basedefs/if/alloc-size.yml
index 24348e57..d0d9a8d1 100644
--- a/spec/rtems/basedefs/if/alloc-size.yml
+++ b/spec/rtems/basedefs/if/alloc-size.yml
@@ -5,10 +5,18 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __alloc_size__( ${.:/params[0]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __alloc_size__( ${.:/params[0]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/array-size.yml b/spec/rtems/basedefs/if/array-size.yml
index 547b442e..2c0ff209 100644
--- a/spec/rtems/basedefs/if/array-size.yml
+++ b/spec/rtems/basedefs/if/array-size.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( sizeof( ${.:/params[0]/name} ) / sizeof( ( ${.:/params[0]/name} )[ 0 ] ) )
+  default:
+    attributes: null
+    body: |
+      ( sizeof( ${.:/params[0]/name} ) / sizeof( ( ${.:/params[0]/name} )[ 0 ] ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/compiler-memory-barrier.yml b/spec/rtems/basedefs/if/compiler-memory-barrier.yml
index 501d68f0..b5cdca94 100644
--- a/spec/rtems/basedefs/if/compiler-memory-barrier.yml
+++ b/spec/rtems/basedefs/if/compiler-memory-barrier.yml
@@ -4,11 +4,19 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    do { } while ( 0 )
+  default:
+    attributes: null
+    body: |
+      do { } while ( 0 )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/asm:/name} volatile( "" ::: "memory" )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/asm:/name} volatile( "" ::: "memory" )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/concat.yml b/spec/rtems/basedefs/if/concat.yml
index 596d0462..cd79a6e4 100644
--- a/spec/rtems/basedefs/if/concat.yml
+++ b/spec/rtems/basedefs/if/concat.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${.:/params[0]/name}##${.:/params[1]/name}
+  default:
+    attributes: null
+    body: ${.:/params[0]/name}##${.:/params[1]/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/container-of.yml b/spec/rtems/basedefs/if/container-of.yml
index 70bafc9f..5d3ee09f 100644
--- a/spec/rtems/basedefs/if/container-of.yml
+++ b/spec/rtems/basedefs/if/container-of.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2014 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( (${.:/params[1]/name} *) ( (${/c/if/uintptr_t:/name}) ( ${.:/params[0]/name} ) - ${/c/if/offsetof:/name}( ${.:/params[1]/name}, ${.:/params[2]/name} ) ) )
+  default:
+    attributes: null
+    body: |
+      ( (${.:/params[1]/name} *) ( (${/c/if/uintptr_t:/name}) ( ${.:/params[0]/name} ) - ${/c/if/offsetof:/name}( ${.:/params[1]/name}, ${.:/params[2]/name} ) ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/declare-global-symbol.yml b/spec/rtems/basedefs/if/declare-global-symbol.yml
index 42bf0af4..e172a5a4 100644
--- a/spec/rtems/basedefs/if/declare-global-symbol.yml
+++ b/spec/rtems/basedefs/if/declare-global-symbol.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    extern char ${.:/params[0]/name}[]
+  default:
+    attributes: null
+    body: |
+      extern char ${.:/params[0]/name}[]
+    params: []
+    return: null
   variants: []
 description: |
   This macro must be placed at file scope.
diff --git a/spec/rtems/basedefs/if/deconst.yml b/spec/rtems/basedefs/if/deconst.yml
index 3f5be7f4..5de1587c 100644
--- a/spec/rtems/basedefs/if/deconst.yml
+++ b/spec/rtems/basedefs/if/deconst.yml
@@ -6,8 +6,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2014 Paval Pisa
 definition:
-  default: |
-    ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/define-global-symbol.yml b/spec/rtems/basedefs/if/define-global-symbol.yml
index e918ae46..4cbeb539 100644
--- a/spec/rtems/basedefs/if/define-global-symbol.yml
+++ b/spec/rtems/basedefs/if/define-global-symbol.yml
@@ -4,14 +4,22 @@ brief: |
 copyrights:
 - Copyright (C) 2018, 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/asm:/name}(
-        "\t.globl " ${xstring:/name}( ${symbol-name:/name}( ${.:/params[0]/name} ) )
-        "\n\t.set " ${xstring:/name}( ${symbol-name:/name}( ${.:/params[0]/name} ) )
-        ", " ${string:/name}( ${.:/params[1]/name} ) "\n"
-      )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/asm:/name}(
+          "\t.globl " ${xstring:/name}( ${symbol-name:/name}( ${.:/params[0]/name} ) )
+          "\n\t.set " ${xstring:/name}( ${symbol-name:/name}( ${.:/params[0]/name} ) )
+          ", " ${string:/name}( ${.:/params[1]/name} ) "\n"
+        )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/user-label-prefix:/name})
 description: |
diff --git a/spec/rtems/basedefs/if/dequalify-depthx.yml b/spec/rtems/basedefs/if/dequalify-depthx.yml
index 15539991..dc847f0a 100644
--- a/spec/rtems/basedefs/if/dequalify-depthx.yml
+++ b/spec/rtems/basedefs/if/dequalify-depthx.yml
@@ -6,26 +6,38 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2014 Paval Pisa
 definition:
-  default: |
-    ( (${.:/params[1]/name}) (${/c/if/uintptr_t:/name}) (const volatile void *)( ${.:/params[2]/name} ) )
+  default:
+    attributes: null
+    body: |
+      ( (${.:/params[1]/name}) (${/c/if/uintptr_t:/name}) (const volatile void *)( ${.:/params[2]/name} ) )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ( const_cast<${.:/params[1]/name}>( ${.:/params[2]/name} ) )
+  - definition:
+      attributes: null
+      body: |
+        ( const_cast<${.:/params[1]/name}>( ${.:/params[2]/name} ) )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/cplusplus:/name})
-  - definition: |
-      ${/compiler/if/builtin-choose-expr:/name}(
-        ${/compiler/if/builtin-types-compatible-p:/name}(
-          ${typeof-refx:/name}( ${.:/params[0]/name}, ${.:/params[2]/name} ),
-          ${typeof-refx:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
-        ) ||
-        ${/compiler/if/builtin-types-compatible-p:/name}(
-          ${.:/params[1]/name},
-          void *
-        ),
-        (${.:/params[1]/name}) ( ${.:/params[2]/name} ),
-        ${/score/basedefs/if/dequalify-types-not-compatible:/name}()
-      )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/builtin-choose-expr:/name}(
+          ${/compiler/if/builtin-types-compatible-p:/name}(
+            ${typeof-refx:/name}( ${.:/params[0]/name}, ${.:/params[2]/name} ),
+            ${typeof-refx:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+          ) ||
+          ${/compiler/if/builtin-types-compatible-p:/name}(
+            ${.:/params[1]/name},
+            void *
+          ),
+          (${.:/params[1]/name}) ( ${.:/params[2]/name} ),
+          ${/score/basedefs/if/dequalify-types-not-compatible:/name}()
+        )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/dequalify.yml b/spec/rtems/basedefs/if/dequalify.yml
index 56051a46..d3f5415a 100644
--- a/spec/rtems/basedefs/if/dequalify.yml
+++ b/spec/rtems/basedefs/if/dequalify.yml
@@ -6,8 +6,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2014 Paval Pisa
 definition:
-  default: |
-    ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/devolatile.yml b/spec/rtems/basedefs/if/devolatile.yml
index c23760ad..4d853db5 100644
--- a/spec/rtems/basedefs/if/devolatile.yml
+++ b/spec/rtems/basedefs/if/devolatile.yml
@@ -6,8 +6,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2014 Paval Pisa
 definition:
-  default: |
-    ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${dequalify-depthx:/name}( *, ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/expand.yml b/spec/rtems/basedefs/if/expand.yml
index 4a362a66..38f185d4 100644
--- a/spec/rtems/basedefs/if/expand.yml
+++ b/spec/rtems/basedefs/if/expand.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${.:/params[0]/name}
+  default:
+    attributes: null
+    body: ${.:/params[0]/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/have-member-same-type.yml b/spec/rtems/basedefs/if/have-member-same-type.yml
index e8ff4bfa..15cdd80f 100644
--- a/spec/rtems/basedefs/if/have-member-same-type.yml
+++ b/spec/rtems/basedefs/if/have-member-same-type.yml
@@ -4,14 +4,22 @@ brief: |
 copyrights:
 - Copyright (C) 2017 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ${/c/if/true:/name}
+  default:
+    attributes: null
+    body: |
+      ${/c/if/true:/name}
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/builtin-types-compatible-p:/name}(
-        ${/compiler/if/typeof:/name}( ( (${.:/params[0]/name} *) 0 )->${.:/params[1]/name} ),
-        ${/compiler/if/typeof:/name}( ( (${.:/params[2]/name} *) 0 )->${.:/params[3]/name} )
-      )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/builtin-types-compatible-p:/name}(
+          ${/compiler/if/typeof:/name}( ( (${.:/params[0]/name} *) 0 )->${.:/params[1]/name} ),
+          ${/compiler/if/typeof:/name}( ( (${.:/params[2]/name} *) 0 )->${.:/params[3]/name} )
+        )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/obfuscate-variable.yml b/spec/rtems/basedefs/if/obfuscate-variable.yml
index 87fcd05c..fc840969 100644
--- a/spec/rtems/basedefs/if/obfuscate-variable.yml
+++ b/spec/rtems/basedefs/if/obfuscate-variable.yml
@@ -5,11 +5,19 @@ brief: |
 copyrights:
 - Copyright (C) 2016, 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    (void) ( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      (void) ( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/asm:/name}( "" : "+r" ( ${.:/params[0]/name} ) )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/asm:/name}( "" : "+r" ( ${.:/params[0]/name} ) )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: |
diff --git a/spec/rtems/basedefs/if/predict-false.yml b/spec/rtems/basedefs/if/predict-false.yml
index 56de4325..9e89018f 100644
--- a/spec/rtems/basedefs/if/predict-false.yml
+++ b/spec/rtems/basedefs/if/predict-false.yml
@@ -5,11 +5,19 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      ( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/builtin-expect:/name}( ( ${.:/params[0]/name} ), 0 )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/builtin-expect:/name}( ( ${.:/params[0]/name} ), 0 )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/predict-true.yml b/spec/rtems/basedefs/if/predict-true.yml
index e63e4b12..a54a2b85 100644
--- a/spec/rtems/basedefs/if/predict-true.yml
+++ b/spec/rtems/basedefs/if/predict-true.yml
@@ -5,11 +5,19 @@ brief: |
 copyrights:
 - Copyright (C) 2018 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      ( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/builtin-expect:/name}( ( ${.:/params[0]/name} ), 1 )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/builtin-expect:/name}( ( ${.:/params[0]/name} ), 1 )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/printflike.yml b/spec/rtems/basedefs/if/printflike.yml
index 585b96ba..31ef5724 100644
--- a/spec/rtems/basedefs/if/printflike.yml
+++ b/spec/rtems/basedefs/if/printflike.yml
@@ -5,10 +5,18 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __format__( __printf__, ${.:/params[0]/name}, ${.:/params[1]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __format__( __printf__, ${.:/params[0]/name}, ${.:/params[1]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/return-address.yml b/spec/rtems/basedefs/if/return-address.yml
index 0447de75..4a896af6 100644
--- a/spec/rtems/basedefs/if/return-address.yml
+++ b/spec/rtems/basedefs/if/return-address.yml
@@ -4,10 +4,18 @@ brief: |
 copyrights:
 - Copyright (C) 2019 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/c/if/null:/name}
+  default:
+    attributes: null
+    body: ${/c/if/null:/name}
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/builtin-return-address:/name}( 0 )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/builtin-return-address:/name}( 0 )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/section.yml b/spec/rtems/basedefs/if/section.yml
index ae9c6f13..957773e8 100644
--- a/spec/rtems/basedefs/if/section.yml
+++ b/spec/rtems/basedefs/if/section.yml
@@ -4,10 +4,18 @@ brief: |
 copyrights:
 - Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __section__( ${.:/params[0]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __section__( ${.:/params[0]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/static-assert.yml b/spec/rtems/basedefs/if/static-assert.yml
index e185770c..6fd49b0f 100644
--- a/spec/rtems/basedefs/if/static-assert.yml
+++ b/spec/rtems/basedefs/if/static-assert.yml
@@ -4,16 +4,28 @@ brief: |
 copyrights:
 - Copyright (C) 2011, 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    struct rtems_static_assert_ ## ${.:/params[1]/name}
-      { int rtems_static_assert_ ## ${.:/params[1]/name} : ( ${.:/params[0]/name} ) ? 1 : -1; }
+  default:
+    attributes: null
+    body: |
+      struct rtems_static_assert_ ## ${.:/params[1]/name}
+        { int rtems_static_assert_ ## ${.:/params[1]/name} : ( ${.:/params[0]/name} ) ? 1 : -1; }
+    params: []
+    return: null
   variants:
-  - definition: |
-      static_assert( ${.:/params[0]/name}, # ${.:/params[1]/name} )
+  - definition:
+      attributes: null
+      body: |
+        static_assert( ${.:/params[0]/name}, # ${.:/params[1]/name} )
+      params: []
+      return: null
     enabled-by:
     - ${/compiler/if/cplusplus:/name} >= 201103L
-  - definition: |
-      _Static_assert( ${.:/params[0]/name}, # ${.:/params[1]/name} )
+  - definition:
+      attributes: null
+      body: |
+        _Static_assert( ${.:/params[0]/name}, # ${.:/params[1]/name} )
+      params: []
+      return: null
     enabled-by:
     - ${/compiler/if/stdc-version:/name} >= 201112L
 description: null
diff --git a/spec/rtems/basedefs/if/string.yml b/spec/rtems/basedefs/if/string.yml
index 24d2f6a3..81d85f69 100644
--- a/spec/rtems/basedefs/if/string.yml
+++ b/spec/rtems/basedefs/if/string.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: '#__VA_ARGS__'
+  default:
+    attributes: null
+    body: '#__VA_ARGS__'
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
@@ -21,7 +25,7 @@ params:
 - description: |
     are the arguments to stringify.
   dir: null
-  name: ...
+  name: '...'
 return:
   return: |
     Returns the stringification of the arguments.  In case of several arguments
diff --git a/spec/rtems/basedefs/if/symbol-name.yml b/spec/rtems/basedefs/if/symbol-name.yml
index 376fe6b1..de8662c8 100644
--- a/spec/rtems/basedefs/if/symbol-name.yml
+++ b/spec/rtems/basedefs/if/symbol-name.yml
@@ -4,11 +4,19 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ${expand:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      ${expand:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${xconcat:/name}( ${/compiler/if/user-label-prefix:/name}, ${.:/params[0]/name} )
+  - definition:
+      attributes: null
+      body: |
+        ${xconcat:/name}( ${/compiler/if/user-label-prefix:/name}, ${.:/params[0]/name} )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/user-label-prefix:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/typeof-refx.yml b/spec/rtems/basedefs/if/typeof-refx.yml
index 1836fd90..5c75a1bd 100644
--- a/spec/rtems/basedefs/if/typeof-refx.yml
+++ b/spec/rtems/basedefs/if/typeof-refx.yml
@@ -5,10 +5,18 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2014 Paval Pisa
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/compiler/if/typeof:/name}( ${.:/params[0]/name}( union { int _z; ${/compiler/if/typeof:/name}( ${.:/params[1]/name} ) _x; } ){ 0 }._x )
+  - definition:
+      attributes: null
+      body: |
+        ${/compiler/if/typeof:/name}( ${.:/params[0]/name}( union { int _z; ${/compiler/if/typeof:/name}( ${.:/params[1]/name} ) _x; } ){ 0 }._x )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: |
diff --git a/spec/rtems/basedefs/if/unreachable.yml b/spec/rtems/basedefs/if/unreachable.yml
index 62aaf1d1..10f15379 100644
--- a/spec/rtems/basedefs/if/unreachable.yml
+++ b/spec/rtems/basedefs/if/unreachable.yml
@@ -4,14 +4,22 @@ brief: |
 copyrights:
 - Copyright (C) 2016 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ${/score/basedefs/if/assert-unreachable:/name}()
+  default:
+    attributes: null
+    body: |
+      ${/score/basedefs/if/assert-unreachable:/name}()
+    params: []
+    return: null
   variants:
-  - definition: |
-      do {
-        ${/compiler/if/builtin-unreachable:/name}();
-        ${/score/basedefs/if/assert-unreachable:/name}();
-      } while ( 0 )
+  - definition:
+      attributes: null
+      body: |
+        do {
+          ${/compiler/if/builtin-unreachable:/name}();
+          ${/score/basedefs/if/assert-unreachable:/name}();
+        } while ( 0 )
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/weak-alias.yml b/spec/rtems/basedefs/if/weak-alias.yml
index 9853ed94..6a2bbe8f 100644
--- a/spec/rtems/basedefs/if/weak-alias.yml
+++ b/spec/rtems/basedefs/if/weak-alias.yml
@@ -4,10 +4,18 @@ brief: |
 copyrights:
 - Copyright (C) 2017 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ''
+  default:
+    attributes: null
+    body: ''
+    params: []
+    return: null
   variants:
-  - definition: |
-      __attribute__(( __weak__, __alias__( #${.:/params[0]/name} ) ))
+  - definition:
+      attributes: null
+      body: |
+        __attribute__(( __weak__, __alias__( #${.:/params[0]/name} ) ))
+      params: []
+      return: null
     enabled-by:
     - defined(${/compiler/if/gnuc:/name})
 description: null
diff --git a/spec/rtems/basedefs/if/xconcat.yml b/spec/rtems/basedefs/if/xconcat.yml
index c6e70b3a..c703e0c8 100644
--- a/spec/rtems/basedefs/if/xconcat.yml
+++ b/spec/rtems/basedefs/if/xconcat.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${concat:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: ${concat:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/basedefs/if/xstring.yml b/spec/rtems/basedefs/if/xstring.yml
index 3fec2fc1..09a954e3 100644
--- a/spec/rtems/basedefs/if/xstring.yml
+++ b/spec/rtems/basedefs/if/xstring.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2015 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${string:/name}( __VA_ARGS__ )
+  default:
+    attributes: null
+    body: ${string:/name}( __VA_ARGS__ )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
@@ -21,7 +25,7 @@ params:
 - description: |
     are the arguments to expand and stringify.
   dir: null
-  name: ...
+  name: '...'
 return:
   return: |
     Returns the stringification of the expansion of the arguments.  In case of
diff --git a/spec/rtems/clock/if/get-ticks-per-second-macro.yml b/spec/rtems/clock/if/get-ticks-per-second-macro.yml
index 3b5e5fb9..54d2fa5d 100644
--- a/spec/rtems/clock/if/get-ticks-per-second-macro.yml
+++ b/spec/rtems/clock/if/get-ticks-per-second-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/watchdog/if/ticks-per-second:/name}
+  default:
+    attributes: null
+    body: ${/score/watchdog/if/ticks-per-second:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/clock/if/get-ticks-since-boot-macro.yml b/spec/rtems/clock/if/get-ticks-since-boot-macro.yml
index 48b2aff1..775f4ead 100644
--- a/spec/rtems/clock/if/get-ticks-since-boot-macro.yml
+++ b/spec/rtems/clock/if/get-ticks-since-boot-macro.yml
@@ -3,7 +3,11 @@ brief: null
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/watchdog/if/ticks-since-boot:/name}
+  default:
+    attributes: null
+    body: ${/score/watchdog/if/ticks-since-boot:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-do-zero-of-workspace.yml b/spec/rtems/config/if/get-do-zero-of-workspace.yml
index 66c8f81b..6f832820 100644
--- a/spec/rtems/config/if/get-do-zero-of-workspace.yml
+++ b/spec/rtems/config/if/get-do-zero-of-workspace.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/memory/if/zero-before-use:/name}
+  default:
+    attributes: null
+    body: ${/score/memory/if/zero-before-use:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-idle-task-stack-size.yml b/spec/rtems/config/if/get-idle-task-stack-size.yml
index 5fff0311..37574cb6 100644
--- a/spec/rtems/config/if/get-idle-task-stack-size.yml
+++ b/spec/rtems/config/if/get-idle-task-stack-size.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/thread/if/idle-stack-size:/name}
+  default:
+    attributes: null
+    body: ${/score/thread/if/idle-stack-size:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-idle-task.yml b/spec/rtems/config/if/get-idle-task.yml
index fad39edf..2aeed278 100644
--- a/spec/rtems/config/if/get-idle-task.yml
+++ b/spec/rtems/config/if/get-idle-task.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/thread/if/idle-body:/name}
+  default:
+    attributes: null
+    body: ${/score/thread/if/idle-body:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-interrupt-stack-size.yml b/spec/rtems/config/if/get-interrupt-stack-size.yml
index 6554d82c..8145abab 100644
--- a/spec/rtems/config/if/get-interrupt-stack-size.yml
+++ b/spec/rtems/config/if/get-interrupt-stack-size.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ((${/c/if/size_t:/name}) ${/score/isr/if/stack-size:/name})
+  default:
+    attributes: null
+    body: ((${/c/if/size_t:/name}) ${/score/isr/if/stack-size:/name})
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-maximum-processors.yml b/spec/rtems/config/if/get-maximum-processors.yml
index 63f02bfd..57566db1 100644
--- a/spec/rtems/config/if/get-maximum-processors.yml
+++ b/spec/rtems/config/if/get-maximum-processors.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/smp/if/processor-configured-maximum:/name}
+  default:
+    attributes: null
+    body: ${/score/smp/if/processor-configured-maximum:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-microseconds-per-tick.yml b/spec/rtems/config/if/get-microseconds-per-tick.yml
index e6f59a96..69902398 100644
--- a/spec/rtems/config/if/get-microseconds-per-tick.yml
+++ b/spec/rtems/config/if/get-microseconds-per-tick.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/watchdog/if/microseconds-per-tick:/name}
+  default:
+    attributes: null
+    body: ${/score/watchdog/if/microseconds-per-tick:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-milliseconds-per-tick.yml b/spec/rtems/config/if/get-milliseconds-per-tick.yml
index 4e1026cc..b9eb9fb9 100644
--- a/spec/rtems/config/if/get-milliseconds-per-tick.yml
+++ b/spec/rtems/config/if/get-milliseconds-per-tick.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ( ${/score/watchdog/if/microseconds-per-tick:/name} / 1000 )
+  default:
+    attributes: null
+    body: ( ${/score/watchdog/if/microseconds-per-tick:/name} / 1000 )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-nanoseconds-per-tick.yml b/spec/rtems/config/if/get-nanoseconds-per-tick.yml
index 04f42c6a..70965eb7 100644
--- a/spec/rtems/config/if/get-nanoseconds-per-tick.yml
+++ b/spec/rtems/config/if/get-nanoseconds-per-tick.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/watchdog/if/nanoseconds-per-tick:/name}
+  default:
+    attributes: null
+    body: ${/score/watchdog/if/nanoseconds-per-tick:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-number-of-initial-extensions.yml b/spec/rtems/config/if/get-number-of-initial-extensions.yml
index e543ba14..0b5c9737 100644
--- a/spec/rtems/config/if/get-number-of-initial-extensions.yml
+++ b/spec/rtems/config/if/get-number-of-initial-extensions.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ((${/c/if/uint32_t:/name}) ${/score/userext/if/initial-count:/name})
+  default:
+    attributes: null
+    body: ((${/c/if/uint32_t:/name}) ${/score/userext/if/initial-count:/name})
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-stack-allocate-for-idle-hook.yml b/spec/rtems/config/if/get-stack-allocate-for-idle-hook.yml
index f95c029c..e82032e0 100644
--- a/spec/rtems/config/if/get-stack-allocate-for-idle-hook.yml
+++ b/spec/rtems/config/if/get-stack-allocate-for-idle-hook.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/stack/if/allocator-allocate-for-idle:/name}
+  default:
+    attributes: null
+    body: ${/score/stack/if/allocator-allocate-for-idle:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-stack-allocate-hook.yml b/spec/rtems/config/if/get-stack-allocate-hook.yml
index e8ff68b6..fdb95dd3 100644
--- a/spec/rtems/config/if/get-stack-allocate-hook.yml
+++ b/spec/rtems/config/if/get-stack-allocate-hook.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/stack/if/allocator-allocate:/name}
+  default:
+    attributes: null
+    body: ${/score/stack/if/allocator-allocate:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-stack-allocate-init-hook.yml b/spec/rtems/config/if/get-stack-allocate-init-hook.yml
index 7a94997a..fdf1262c 100644
--- a/spec/rtems/config/if/get-stack-allocate-init-hook.yml
+++ b/spec/rtems/config/if/get-stack-allocate-init-hook.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/stack/if/allocator-initialize:/name}
+  default:
+    attributes: null
+    body: ${/score/stack/if/allocator-initialize:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml b/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml
index fd265a4a..36fec60e 100644
--- a/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml
+++ b/spec/rtems/config/if/get-stack-allocator-avoids-work-space.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/stack/if/allocator-avoids-workspace:/name}
+  default:
+    attributes: null
+    body: ${/score/stack/if/allocator-avoids-workspace:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-stack-free-hook.yml b/spec/rtems/config/if/get-stack-free-hook.yml
index 749194ef..9145db92 100644
--- a/spec/rtems/config/if/get-stack-free-hook.yml
+++ b/spec/rtems/config/if/get-stack-free-hook.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/stack/if/allocator-free:/name}
+  default:
+    attributes: null
+    body: ${/score/stack/if/allocator-free:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-ticks-per-timeslice.yml b/spec/rtems/config/if/get-ticks-per-timeslice.yml
index fce4c2a2..69edb65d 100644
--- a/spec/rtems/config/if/get-ticks-per-timeslice.yml
+++ b/spec/rtems/config/if/get-ticks-per-timeslice.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/watchdog/if/ticks-per-timeslice:/name}
+  default:
+    attributes: null
+    body: ${/score/watchdog/if/ticks-per-timeslice:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-unified-work-area.yml b/spec/rtems/config/if/get-unified-work-area.yml
index 9f884474..3ac1390c 100644
--- a/spec/rtems/config/if/get-unified-work-area.yml
+++ b/spec/rtems/config/if/get-unified-work-area.yml
@@ -5,7 +5,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/wkspace/if/is-unified:/name}
+  default:
+    attributes: null
+    body: ${/score/wkspace/if/is-unified:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-user-extension-table.yml b/spec/rtems/config/if/get-user-extension-table.yml
index 85aaf117..c6a5bcd7 100644
--- a/spec/rtems/config/if/get-user-extension-table.yml
+++ b/spec/rtems/config/if/get-user-extension-table.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/userext/if/initial-extensions:/name}
+  default:
+    attributes: null
+    body: ${/score/userext/if/initial-extensions:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-user-multiprocessing-table.yml b/spec/rtems/config/if/get-user-multiprocessing-table.yml
index ab7d8c96..9ac3700b 100644
--- a/spec/rtems/config/if/get-user-multiprocessing-table.yml
+++ b/spec/rtems/config/if/get-user-multiprocessing-table.yml
@@ -4,9 +4,17 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/c/if/null:/name}
+  default:
+    attributes: null
+    body: ${/c/if/null:/name}
+    params: []
+    return: null
   variants:
-  - definition: ( &${/score/mpci/if/configuration:/name} )
+  - definition:
+      attributes: null
+      body: ( &${/score/mpci/if/configuration:/name} )
+      params: []
+      return: null
     enabled-by: defined(${/build-options/if/multiprocessing:/name})
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/get-work-space-size.yml b/spec/rtems/config/if/get-work-space-size.yml
index fd3d1449..f3e5f8a7 100644
--- a/spec/rtems/config/if/get-work-space-size.yml
+++ b/spec/rtems/config/if/get-work-space-size.yml
@@ -4,10 +4,14 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ${/score/wkspace/if/size:/name} +
-      ( ${get-stack-allocator-avoids-work-space:/name}() ?
-        0 : ${get-stack-space-size:/name}() ) )
+  default:
+    attributes: null
+    body: |
+      ( ${/score/wkspace/if/size:/name} +
+        ( ${get-stack-allocator-avoids-work-space:/name}() ?
+          0 : ${get-stack-space-size:/name}() ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/resource-is-unlimited.yml b/spec/rtems/config/if/resource-is-unlimited.yml
index f394c8c3..f36fad76 100644
--- a/spec/rtems/config/if/resource-is-unlimited.yml
+++ b/spec/rtems/config/if/resource-is-unlimited.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/object/if/is-unlimited:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/object/if/is-unlimited:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/resource-maximum-per-allocation.yml b/spec/rtems/config/if/resource-maximum-per-allocation.yml
index 279d118a..03dce023 100644
--- a/spec/rtems/config/if/resource-maximum-per-allocation.yml
+++ b/spec/rtems/config/if/resource-maximum-per-allocation.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ${/score/object/if/maximum-per-allocation:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/object/if/maximum-per-allocation:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/config/if/resource-unlimited.yml b/spec/rtems/config/if/resource-unlimited.yml
index 6bcac649..22134851 100644
--- a/spec/rtems/config/if/resource-unlimited.yml
+++ b/spec/rtems/config/if/resource-unlimited.yml
@@ -4,7 +4,11 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ( ( ${.:/params[0]/name} ) | ${unlimited-objects:/name} )
+  default:
+    attributes: null
+    body: ( ( ${.:/params[0]/name} ) | ${unlimited-objects:/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/disable.yml b/spec/rtems/intr/if/disable.yml
index 326f4843..bdfbc77f 100644
--- a/spec/rtems/intr/if/disable.yml
+++ b/spec/rtems/intr/if/disable.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive disables all maskable interrupts on the current processor and
diff --git a/spec/rtems/intr/if/enable.yml b/spec/rtems/intr/if/enable.yml
index bd71547e..e1d3d45a 100644
--- a/spec/rtems/intr/if/enable.yml
+++ b/spec/rtems/intr/if/enable.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive restores the interrupt level specified by
diff --git a/spec/rtems/intr/if/entry-initializer.yml b/spec/rtems/intr/if/entry-initializer.yml
index 53c211ac..86fa327b 100644
--- a/spec/rtems/intr/if/entry-initializer.yml
+++ b/spec/rtems/intr/if/entry-initializer.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    { ${.:/params[0]/name},  ${.:/params[1]/name}, ${/c/if/null:/name}, ${.:/params[2]/name} }
+  default:
+    attributes: null
+    body: |
+      { ${.:/params[0]/name},  ${.:/params[1]/name}, ${/c/if/null:/name}, ${.:/params[2]/name} }
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/flash.yml b/spec/rtems/intr/if/flash.yml
index 0fad1b03..e336ed4f 100644
--- a/spec/rtems/intr/if/flash.yml
+++ b/spec/rtems/intr/if/flash.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/local-flash:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/local-flash:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive is functionally equivalent to a calling ${enable:/name}
diff --git a/spec/rtems/intr/if/is-in-progress.yml b/spec/rtems/intr/if/is-in-progress.yml
index 32b5309e..3b36f8db 100644
--- a/spec/rtems/intr/if/is-in-progress.yml
+++ b/spec/rtems/intr/if/is-in-progress.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/is-in-progress:/name}()
+  default:
+    attributes: null
+    body: ${/score/isr/if/is-in-progress:/name}()
+    params: []
+    return: null
   variants: []
 description: |
   This directive returns ``true``, if the current processor is currently
diff --git a/spec/rtems/intr/if/is-replace.yml b/spec/rtems/intr/if/is-replace.yml
index d6f3e0d6..ade83ec8 100644
--- a/spec/rtems/intr/if/is-replace.yml
+++ b/spec/rtems/intr/if/is-replace.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2008, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) & ${replace:/name} )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) & ${replace:/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
@@ -21,8 +25,7 @@ links:
 name: RTEMS_INTERRUPT_IS_REPLACE
 notes: null
 params:
-- description: 
-    is the interrupt handler option set to check.
+- description: is the interrupt handler option set to check.
   dir: null
   name: _options
 return:
diff --git a/spec/rtems/intr/if/is-shared.yml b/spec/rtems/intr/if/is-shared.yml
index aa9f1ee5..be141e7d 100644
--- a/spec/rtems/intr/if/is-shared.yml
+++ b/spec/rtems/intr/if/is-shared.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2008, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) & ${shared:/name} )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) & ${shared:/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/is-unique.yml b/spec/rtems/intr/if/is-unique.yml
index 7381f0bf..424ed4b4 100644
--- a/spec/rtems/intr/if/is-unique.yml
+++ b/spec/rtems/intr/if/is-unique.yml
@@ -4,8 +4,12 @@ brief: |
 copyrights:
 - Copyright (C) 2008, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) & ${unique:/name} )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) & ${unique:/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/local-disable.yml b/spec/rtems/intr/if/local-disable.yml
index 542ff14d..f80cf874 100644
--- a/spec/rtems/intr/if/local-disable.yml
+++ b/spec/rtems/intr/if/local-disable.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/local-disable:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive disables all maskable interrupts on the current processor and
diff --git a/spec/rtems/intr/if/local-enable.yml b/spec/rtems/intr/if/local-enable.yml
index f1125d99..973562e2 100644
--- a/spec/rtems/intr/if/local-enable.yml
+++ b/spec/rtems/intr/if/local-enable.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/local-enable:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive restores the interrupt level specified by
diff --git a/spec/rtems/intr/if/lock-acquire-isr.yml b/spec/rtems/intr/if/lock-acquire-isr.yml
index 14e1959a..ab6ac810 100644
--- a/spec/rtems/intr/if/lock-acquire-isr.yml
+++ b/spec/rtems/intr/if/lock-acquire-isr.yml
@@ -5,13 +5,21 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: do { (void) ${.:/params[1]/name}; } while ( 0 )
+  default:
+    attributes: null
+    body: do { (void) ${.:/params[1]/name}; } while ( 0 )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/score/smp/if/lock-acquire:/name}(
-        &( ${.:/params[0]/name} )->Lock,
-        &( ${.:/params[1]/name} )->Lock_context
-      )
+  - definition:
+      attributes: null
+      body: |
+        ${/score/smp/if/lock-acquire:/name}(
+          &( ${.:/params[0]/name} )->Lock,
+          &( ${.:/params[1]/name} )->Lock_context
+        )
+      params: []
+      return: null
     enabled-by: defined(${/build-options/if/smp:/name})
 description: |
   This directive acquires the ISR lock specified by ${.:/params[0]/name} using
diff --git a/spec/rtems/intr/if/lock-acquire.yml b/spec/rtems/intr/if/lock-acquire.yml
index cfca358b..df98ff05 100644
--- a/spec/rtems/intr/if/lock-acquire.yml
+++ b/spec/rtems/intr/if/lock-acquire.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-isr-disable-acquire:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-isr-disable-acquire:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive acquires the ISR lock specified by ${.:/params[0]/name} using
diff --git a/spec/rtems/intr/if/lock-declare.yml b/spec/rtems/intr/if/lock-declare.yml
index 987507a7..ceedc7c4 100644
--- a/spec/rtems/intr/if/lock-declare.yml
+++ b/spec/rtems/intr/if/lock-declare.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-declare:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-declare:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-define.yml b/spec/rtems/intr/if/lock-define.yml
index b8bdaa97..4f8cb2e6 100644
--- a/spec/rtems/intr/if/lock-define.yml
+++ b/spec/rtems/intr/if/lock-define.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-define:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-define:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-destroy.yml b/spec/rtems/intr/if/lock-destroy.yml
index 90282e9e..bb442030 100644
--- a/spec/rtems/intr/if/lock-destroy.yml
+++ b/spec/rtems/intr/if/lock-destroy.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/lock-destroy:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/lock-destroy:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-initialize.yml b/spec/rtems/intr/if/lock-initialize.yml
index a23c2718..e9fed290 100644
--- a/spec/rtems/intr/if/lock-initialize.yml
+++ b/spec/rtems/intr/if/lock-initialize.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-initialize:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-initialize:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-initializer.yml b/spec/rtems/intr/if/lock-initializer.yml
index 89deb039..01bd8255 100644
--- a/spec/rtems/intr/if/lock-initializer.yml
+++ b/spec/rtems/intr/if/lock-initializer.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/lock-initializer:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/lock-initializer:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-isr-disable.yml b/spec/rtems/intr/if/lock-isr-disable.yml
index 3ecc3e1d..eb4b7801 100644
--- a/spec/rtems/intr/if/lock-isr-disable.yml
+++ b/spec/rtems/intr/if/lock-isr-disable.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/lock-isr-disable:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/lock-isr-disable:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive disables maskable interrupts on the current processor and
diff --git a/spec/rtems/intr/if/lock-member.yml b/spec/rtems/intr/if/lock-member.yml
index e093aec7..aa6a3cd1 100644
--- a/spec/rtems/intr/if/lock-member.yml
+++ b/spec/rtems/intr/if/lock-member.yml
@@ -5,7 +5,11 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/isr/if/lock-member:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/isr/if/lock-member:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-reference.yml b/spec/rtems/intr/if/lock-reference.yml
index be2b16d9..47e9b440 100644
--- a/spec/rtems/intr/if/lock-reference.yml
+++ b/spec/rtems/intr/if/lock-reference.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-reference:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-reference:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/intr/if/lock-release-isr.yml b/spec/rtems/intr/if/lock-release-isr.yml
index 21f50623..07f673ef 100644
--- a/spec/rtems/intr/if/lock-release-isr.yml
+++ b/spec/rtems/intr/if/lock-release-isr.yml
@@ -5,13 +5,21 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: do { (void) ${.:/params[1]/name}; } while ( 0 )
+  default:
+    attributes: null
+    body: do { (void) ${.:/params[1]/name}; } while ( 0 )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ${/score/smp/if/lock-release:/name}(
-        &( ${.:/params[0]/name} )->Lock,
-        &( ${.:/params[1]/name} )->Lock_context
-      )
+  - definition:
+      attributes: null
+      body: |
+        ${/score/smp/if/lock-release:/name}(
+          &( ${.:/params[0]/name} )->Lock,
+          &( ${.:/params[1]/name} )->Lock_context
+        )
+      params: []
+      return: null
     enabled-by: defined(${/build-options/if/smp:/name})
 description: |
   This directive releases the ISR lock specified by ${.:/params[0]/name} using
diff --git a/spec/rtems/intr/if/lock-release.yml b/spec/rtems/intr/if/lock-release.yml
index 76ba5771..cb43960b 100644
--- a/spec/rtems/intr/if/lock-release.yml
+++ b/spec/rtems/intr/if/lock-release.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/isr/if/lock-release-isr-enable:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/isr/if/lock-release-isr-enable:/name}( ${.:/params[0]/name}, ${.:/params[1]/name} )
+    params: []
+    return: null
   variants: []
 description: |
   This directive releases the ISR lock specified by ${.:/params[0]/name} using
diff --git a/spec/rtems/message/if/buffer.yml b/spec/rtems/message/if/buffer.yml
index 3df7bd19..b465141f 100644
--- a/spec/rtems/message/if/buffer.yml
+++ b/spec/rtems/message/if/buffer.yml
@@ -5,11 +5,15 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    struct {
-      ${/score/msgq/if/buffer:/name} _buffer;
-      char _message[ ${.:/params[0]/name} ];
-    }
+  default:
+    attributes: null
+    body: |
+      struct {
+        ${/score/msgq/if/buffer:/name} _buffer;
+        char _message[ ${.:/params[0]/name} ];
+      }
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/mode/if/interrupt-level.yml b/spec/rtems/mode/if/interrupt-level.yml
index cd78c3ff..1fd4af34 100644
--- a/spec/rtems/mode/if/interrupt-level.yml
+++ b/spec/rtems/mode/if/interrupt-level.yml
@@ -6,7 +6,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ( ( ${.:/params[0]/name} ) & ${interrupt-mask:/name} )
+  default:
+    attributes: null
+    body: ( ( ${.:/params[0]/name} ) & ${interrupt-mask:/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/build-id-macro.yml b/spec/rtems/object/if/build-id-macro.yml
index 3ef1929f..2805d573 100644
--- a/spec/rtems/object/if/build-id-macro.yml
+++ b/spec/rtems/object/if/build-id-macro.yml
@@ -4,8 +4,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/object/if/build-id:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/object/if/build-id:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/build-name-macro.yml b/spec/rtems/object/if/build-name-macro.yml
index eb84fea1..97647e0c 100644
--- a/spec/rtems/object/if/build-name-macro.yml
+++ b/spec/rtems/object/if/build-name-macro.yml
@@ -4,8 +4,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/object/if/build-name:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/object/if/build-name:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name}, ${.:/params[3]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-api-maximum-macro.yml b/spec/rtems/object/if/id-api-maximum-macro.yml
index 2a708ac3..1264ccf1 100644
--- a/spec/rtems/object/if/id-api-maximum-macro.yml
+++ b/spec/rtems/object/if/id-api-maximum-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/apis-last:/name}
+  default:
+    attributes: null
+    body: ${/score/object/if/apis-last:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-api-minimum-macro.yml b/spec/rtems/object/if/id-api-minimum-macro.yml
index 02c28db0..ff3471f3 100644
--- a/spec/rtems/object/if/id-api-minimum-macro.yml
+++ b/spec/rtems/object/if/id-api-minimum-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/internal-api:/name}
+  default:
+    attributes: null
+    body: ${/score/object/if/internal-api:/name}
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-get-api-macro.yml b/spec/rtems/object/if/id-get-api-macro.yml
index afbe80a2..2496711c 100644
--- a/spec/rtems/object/if/id-get-api-macro.yml
+++ b/spec/rtems/object/if/id-get-api-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/get-api:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/object/if/get-api:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-get-class-macro.yml b/spec/rtems/object/if/id-get-class-macro.yml
index 131c02d1..c618c887 100644
--- a/spec/rtems/object/if/id-get-class-macro.yml
+++ b/spec/rtems/object/if/id-get-class-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/get-class:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/object/if/get-class:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-get-index-macro.yml b/spec/rtems/object/if/id-get-index-macro.yml
index e75c248c..4df9607f 100644
--- a/spec/rtems/object/if/id-get-index-macro.yml
+++ b/spec/rtems/object/if/id-get-index-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/get-index:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/object/if/get-index:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-get-node-macro.yml b/spec/rtems/object/if/id-get-node-macro.yml
index 98b3a852..1cc5dfd3 100644
--- a/spec/rtems/object/if/id-get-node-macro.yml
+++ b/spec/rtems/object/if/id-get-node-macro.yml
@@ -4,7 +4,11 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: ${/score/object/if/get-node:/name}( ${.:/params[0]/name} )
+  default:
+    attributes: null
+    body: ${/score/object/if/get-node:/name}( ${.:/params[0]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/object/if/id-initial.yml b/spec/rtems/object/if/id-initial.yml
index 86666180..f5185705 100644
--- a/spec/rtems/object/if/id-initial.yml
+++ b/spec/rtems/object/if/id-initial.yml
@@ -6,8 +6,12 @@ copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${/score/object/if/id-initial:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} )
+  default:
+    attributes: null
+    body: |
+      ${/score/object/if/id-initial:/name}( ${.:/params[0]/name}, ${.:/params[1]/name}, ${.:/params[2]/name} )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/scheduler/if/get-processor-macro.yml b/spec/rtems/scheduler/if/get-processor-macro.yml
index 1fe3d385..c1e12cd5 100644
--- a/spec/rtems/scheduler/if/get-processor-macro.yml
+++ b/spec/rtems/scheduler/if/get-processor-macro.yml
@@ -3,7 +3,11 @@ brief: null
 copyrights:
 - Copyright (C) 2014, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/smp/if/get-current-processor:/name}()
+  default:
+    attributes: null
+    body: ${/score/smp/if/get-current-processor:/name}()
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/scheduler/if/get-processor-maximum-macro.yml b/spec/rtems/scheduler/if/get-processor-maximum-macro.yml
index 41c338fe..378f9298 100644
--- a/spec/rtems/scheduler/if/get-processor-maximum-macro.yml
+++ b/spec/rtems/scheduler/if/get-processor-maximum-macro.yml
@@ -3,7 +3,11 @@ brief: null
 copyrights:
 - Copyright (C) 2013, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: ${/score/smp/if/get-processor-maximum:/name}()
+  default:
+    attributes: null
+    body: ${/score/smp/if/get-processor-maximum:/name}()
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/support/if/microseconds-to-ticks.yml b/spec/rtems/support/if/microseconds-to-ticks.yml
index bb2b7488..de54d77c 100644
--- a/spec/rtems/support/if/microseconds-to-ticks.yml
+++ b/spec/rtems/support/if/microseconds-to-ticks.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) / ${../../config/if/get-microseconds-per-tick:/name}() )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) / ${../../config/if/get-microseconds-per-tick:/name}() )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/support/if/milliseconds-to-microseconds.yml b/spec/rtems/support/if/milliseconds-to-microseconds.yml
index 1c6e29a0..2d0a3777 100644
--- a/spec/rtems/support/if/milliseconds-to-microseconds.yml
+++ b/spec/rtems/support/if/milliseconds-to-microseconds.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) * 1000UL )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) * 1000UL )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/support/if/milliseconds-to-ticks.yml b/spec/rtems/support/if/milliseconds-to-ticks.yml
index 37f67a3e..4f0d3032 100644
--- a/spec/rtems/support/if/milliseconds-to-ticks.yml
+++ b/spec/rtems/support/if/milliseconds-to-ticks.yml
@@ -5,8 +5,12 @@ copyrights:
 - Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
 - Copyright (C) 2008 On-Line Applications Research Corporation (OAR)
 definition:
-  default: |
-    ${microseconds-to-ticks:/name}( ${milliseconds-to-microseconds:/name}( ${.:/params[0]/name} ) )
+  default:
+    attributes: null
+    body: |
+      ${microseconds-to-ticks:/name}( ${milliseconds-to-microseconds:/name}( ${.:/params[0]/name} ) )
+    params: []
+    return: null
   variants: []
 description: null
 enabled-by: true
diff --git a/spec/rtems/task/if/storage-size.yml b/spec/rtems/task/if/storage-size.yml
index 964ddee4..e4d905e5 100644
--- a/spec/rtems/task/if/storage-size.yml
+++ b/spec/rtems/task/if/storage-size.yml
@@ -4,13 +4,21 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    ( ( ${.:/params[0]/name} ) +
-      ( ( ( ${.:/params[1]/name} ) & ${../../attr/if/floating-point:/name} ) != 0 ?
-        ${/score/context/if/fp-size:/name} : 0 ) )
+  default:
+    attributes: null
+    body: |
+      ( ( ${.:/params[0]/name} ) +
+        ( ( ( ${.:/params[1]/name} ) & ${../../attr/if/floating-point:/name} ) != 0 ?
+          ${/score/context/if/fp-size:/name} : 0 ) )
+    params: []
+    return: null
   variants:
-  - definition: |
-      ( ( ${.:/params[0]/name} ) + ${/score/context/if/fp-size:/name} )
+  - definition:
+      attributes: null
+      body: |
+        ( ( ${.:/params[0]/name} ) + ${/score/context/if/fp-size:/name} )
+      params: []
+      return: null
     enabled-by:
     - ${/score/cpu/if/all-tasks-are-fp:/name} == ${../../basedefs/if/true:/name}
 description: null
diff --git a/spec/score/basedefs/if/assert-unreachable.yml b/spec/score/basedefs/if/assert-unreachable.yml
index c5819351..a6112fff 100644
--- a/spec/score/basedefs/if/assert-unreachable.yml
+++ b/spec/score/basedefs/if/assert-unreachable.yml
@@ -4,11 +4,19 @@ brief: |
 copyrights:
 - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
 definition:
-  default: |
-    do { } while ( 0 )
+  default:
+    attributes: null
+    body: |
+      do { } while ( 0 )
+    params: []
+    return: null
   variants:
-  - definition: |
-      _Assert( 0 )
+  - definition:
+      attributes: null
+      body: |
+        _Assert( 0 )
+      params: []
+      return: null
     enabled-by:
     - defined(${/build-options/if/debug:/name})
 description: null
diff --git a/spec/spec/interface-function-definition-directive.yml b/spec/spec/interface-function-definition-directive.yml
index b7f1f87d..45c827db 100644
--- a/spec/spec/interface-function-definition-directive.yml
+++ b/spec/spec/interface-function-definition-directive.yml
@@ -19,8 +19,9 @@ spec-info:
         description: null
         spec-type: interface-function-definition-variant-list
     description: |
-      This set of attributes specifies a function definition directive.
+      This set of attributes specifies a function or macro definition
+      directive.
     mandatory-attributes: all
-spec-name: Interface Function Definition Directive
+spec-name: Interface Function or Macro Definition Directive
 spec-type: interface-function-definition-directive
 type: spec
diff --git a/spec/spec/interface-function-definition-variant-list.yml b/spec/spec/interface-function-definition-variant-list.yml
index dd3bba18..2ce50189 100644
--- a/spec/spec/interface-function-definition-variant-list.yml
+++ b/spec/spec/interface-function-definition-variant-list.yml
@@ -11,6 +11,6 @@ spec-info:
   list:
     description: null
     spec-type: interface-function-definition-variant
-spec-name: Interface Function Definition Variant List
+spec-name: Interface Function or Macro Definition Variant List
 spec-type: interface-function-definition-variant-list
 type: spec
diff --git a/spec/spec/interface-function-definition-variant.yml b/spec/spec/interface-function-definition-variant.yml
index 167ed8ff..19d66670 100644
--- a/spec/spec/interface-function-definition-variant.yml
+++ b/spec/spec/interface-function-definition-variant.yml
@@ -20,8 +20,8 @@ spec-info:
         description: null
         spec-type: interface-enabled-by
     description: |
-      This set of attributes specifies a function definition variant.
+      This set of attributes specifies a function or macro definition variant.
     mandatory-attributes: all
-spec-name: Interface Function Definition Variant
+spec-name: Interface Function or Macro Definition Variant
 spec-type: interface-function-definition-variant
 type: spec
diff --git a/spec/spec/interface-function-definition.yml b/spec/spec/interface-function-definition.yml
index 34acd466..5372dc8c 100644
--- a/spec/spec/interface-function-definition.yml
+++ b/spec/spec/interface-function-definition.yml
@@ -1,6 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 copyrights:
-- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
 enabled-by: true
 links:
 - role: spec-member
@@ -33,12 +33,13 @@ spec-info:
         spec-type: list-str
       return:
         description: |
-          It shall be the function return type.  On the return type a
-          context-sensitive substitution of item variables is performed.
-        spec-type: str
+          If the value is present, then it shall be the function return type.
+          On the return type a context-sensitive substitution of item variables
+          is performed.
+        spec-type: optional-str
     description: |
       This set of attributes specifies a function definition.
     mandatory-attributes: all
-spec-name: Interface Function Definition
+spec-name: Interface Function or Macro Definition
 spec-type: interface-function-definition
 type: spec
diff --git a/spec/spec/interface-function.yml b/spec/spec/interface-function.yml
index f1916752..7426e9ea 100644
--- a/spec/spec/interface-function.yml
+++ b/spec/spec/interface-function.yml
@@ -1,6 +1,6 @@
 SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
 copyrights:
-- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+- Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
 enabled-by: true
 links:
 - role: spec-member
@@ -9,6 +9,10 @@ links:
   spec-key: interface-type
   spec-value: function
   uid: interface
+- role: spec-refinement
+  spec-key: interface-type
+  spec-value: macro
+  uid: interface
 spec-description: null
 spec-example: null
 spec-info:
@@ -25,7 +29,7 @@ spec-info:
         spec-type: interface-description
       name:
         description: |
-          It shall be the name of the function.
+          It shall be the name of the function or macro.
         spec-type: str
       notes:
         description: null
@@ -37,8 +41,8 @@ spec-info:
         description: null
         spec-type: interface-return-directive
     description: |
-      This set of attributes specifies a function.
+      This set of attributes specifies a function or a macro.
     mandatory-attributes: all
-spec-name: Interface Function Item Type
+spec-name: Interface Function or Macro Item Type
 spec-type: interface-function
 type: spec
diff --git a/spec/spec/interface-macro.yml b/spec/spec/interface-macro.yml
deleted file mode 100644
index 69bf9998..00000000
--- a/spec/spec/interface-macro.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-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
-links:
-- role: spec-member
-  uid: root
-- role: spec-refinement
-  spec-key: interface-type
-  spec-value: macro
-  uid: interface
-spec-description: null
-spec-example: null
-spec-info:
-  dict:
-    attributes:
-      brief:
-        description: null
-        spec-type: interface-brief
-      definition:
-        description: null
-        spec-type: interface-definition-directive
-      description:
-        description: null
-        spec-type: interface-description
-      name:
-        description: |
-          It shall be the name of the macro.
-        spec-type: str
-      notes:
-        description: null
-        spec-type: interface-notes
-      params:
-        description: null
-        spec-type: interface-param-list
-      return:
-        description: null
-        spec-type: interface-return-directive
-    description: |
-      This set of attributes specifies a macro.
-    mandatory-attributes: all
-spec-name: Interface Macro Item Type
-spec-type: interface-macro
-type: spec



More information about the vc mailing list