source: rtems-docs/eng/req/items.rst @ f690480

Last change on this file since f690480 was f690480, checked in by Sebastian Huber <sebastian.huber@…>, on 01/17/23 at 14:14:33

eng: Add reason to test program state

  • Property mode set to 100644
File size: 175.3 KB
Line 
1.. SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2019, 2022 embedded brains GmbH (http://www.embedded-brains.de)
4
5.. This file is part of the RTEMS quality process and was automatically
6.. generated.  If you find something that needs to be fixed or
7.. worded better please post a report or patch to an RTEMS mailing list
8.. or raise a bug report:
9..
10.. https://www.rtems.org/bugs.html
11..
12.. For information on updating and regenerating please refer to the How-To
13.. section in the Software Requirements Engineering chapter of the
14.. RTEMS Software Engineering manual.  The manual is provided as a part of
15.. a release.  For development sources please refer to the online
16.. documentation at:
17..
18.. https://docs.rtems.org
19
20.. _ReqEngSpecificationItems:
21
22Specification Items
23===================
24
25.. _ReqEngSpecificationItemHierarchy:
26
27Specification Item Hierarchy
28----------------------------
29
30The specification item types have the following hierarchy:
31
32* :ref:`SpecTypeRootItemType`
33
34  * :ref:`SpecTypeBuildItemType`
35
36    * :ref:`SpecTypeBuildAdaTestProgramItemType`
37
38    * :ref:`SpecTypeBuildBSPItemType`
39
40    * :ref:`SpecTypeBuildConfigurationFileItemType`
41
42    * :ref:`SpecTypeBuildConfigurationHeaderItemType`
43
44    * :ref:`SpecTypeBuildGroupItemType`
45
46    * :ref:`SpecTypeBuildLibraryItemType`
47
48    * :ref:`SpecTypeBuildObjectsItemType`
49
50    * :ref:`SpecTypeBuildOptionItemType`
51
52    * :ref:`SpecTypeBuildScriptItemType`
53
54    * :ref:`SpecTypeBuildStartFileItemType`
55
56    * :ref:`SpecTypeBuildTestProgramItemType`
57
58  * :ref:`SpecTypeConstraintItemType`
59
60  * :ref:`SpecTypeGlossaryItemType`
61
62    * :ref:`SpecTypeGlossaryGroupItemType`
63
64    * :ref:`SpecTypeGlossaryTermItemType`
65
66  * :ref:`SpecTypeInterfaceItemType`
67
68    * :ref:`SpecTypeApplicationConfigurationGroupItemType`
69
70    * :ref:`SpecTypeApplicationConfigurationOptionItemType`
71
72      * :ref:`SpecTypeApplicationConfigurationFeatureEnableOptionItemType`
73
74      * :ref:`SpecTypeApplicationConfigurationFeatureOptionItemType`
75
76      * :ref:`SpecTypeApplicationConfigurationValueOptionItemType`
77
78    * :ref:`SpecTypeInterfaceCompoundItemType`
79
80    * :ref:`SpecTypeInterfaceDefineItemType`
81
82    * :ref:`SpecTypeInterfaceDomainItemType`
83
84    * :ref:`SpecTypeInterfaceEnumItemType`
85
86    * :ref:`SpecTypeInterfaceEnumeratorItemType`
87
88    * :ref:`SpecTypeInterfaceForwardDeclarationItemType`
89
90    * :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
91
92    * :ref:`SpecTypeInterfaceGroupItemType`
93
94    * :ref:`SpecTypeInterfaceHeaderFileItemType`
95
96    * :ref:`SpecTypeInterfaceTypedefItemType`
97
98    * :ref:`SpecTypeInterfaceUnspecifiedItemType`
99
100    * :ref:`SpecTypeInterfaceVariableItemType`
101
102  * :ref:`SpecTypeRequirementItemType`
103
104    * :ref:`SpecTypeFunctionalRequirementItemType`
105
106      * :ref:`SpecTypeActionRequirementItemType`
107
108      * :ref:`SpecTypeGenericFunctionalRequirementItemType`
109
110    * :ref:`SpecTypeNonFunctionalRequirementItemType`
111
112      * :ref:`SpecTypeDesignGroupRequirementItemType`
113
114      * :ref:`SpecTypeGenericNonFunctionalRequirementItemType`
115
116      * :ref:`SpecTypeRuntimePerformanceRequirementItemType`
117
118  * :ref:`SpecTypeRequirementValidationItemType`
119
120    * :ref:`SpecTypeRequirementValidationMethod`
121
122  * :ref:`SpecTypeRuntimeMeasurementTestItemType`
123
124  * :ref:`SpecTypeSpecificationItemType`
125
126  * :ref:`SpecTypeTestCaseItemType`
127
128  * :ref:`SpecTypeTestPlatformItemType`
129
130  * :ref:`SpecTypeTestProcedureItemType`
131
132  * :ref:`SpecTypeTestSuiteItemType`
133
134.. _ReqEngSpecificationItemTypes:
135
136Specification Item Types
137------------------------
138
139.. _SpecTypeRootItemType:
140
141Root Item Type
142^^^^^^^^^^^^^^
143
144The technical specification of RTEMS will contain for example requirements,
145specializations of requirements, interface specifications, test suites, test
146cases, and requirement validations.  These things will be called *specification
147items* or just *items* if it is clear from the context.
148
149The specification items are stored in files in :term:`YAML` format with a
150defined set of key-value pairs called attributes.  Each attribute key name
151shall be a :ref:`SpecTypeName`.  In particular, key names which begin with an
152underscore (``_``) are reserved for internal use in tools.
153
154This is the root specification item type. All explicit attributes shall be
155specified. The explicit attributes for this type are:
156
157SPDX-License-Identifier
158    The attribute value shall be a :ref:`SpecTypeSPDXLicenseIdentifier`. It
159    shall be the license of the item.
160
161copyrights
162    The attribute value shall be a list. Each list element shall be a
163    :ref:`SpecTypeCopyright`. It shall be the list of copyright statements of
164    the item.
165
166enabled-by
167    The attribute value shall be an :ref:`SpecTypeEnabledByExpression`. It
168    shall define the conditions under which the item is enabled.
169
170links
171    The attribute value shall be a list. Each list element shall be a
172    :ref:`SpecTypeLink`.
173
174type
175    The attribute value shall be a :ref:`SpecTypeName`. It shall be the item
176    type.  The selection of types and the level of detail depends on a
177    particular standard and product model.  We need enough flexibility to be in
178    line with ECSS-E-ST-10-06 and possible future applications of other
179    standards.  The item type may be refined further with additional
180    type-specific subtypes.
181
182This type is refined by the following types:
183
184* :ref:`SpecTypeBuildItemType`
185
186* :ref:`SpecTypeConstraintItemType`
187
188* :ref:`SpecTypeGlossaryItemType`
189
190* :ref:`SpecTypeInterfaceItemType`
191
192* :ref:`SpecTypeRequirementItemType`
193
194* :ref:`SpecTypeRequirementValidationItemType`
195
196* :ref:`SpecTypeRuntimeMeasurementTestItemType`
197
198* :ref:`SpecTypeSpecificationItemType`
199
200* :ref:`SpecTypeTestCaseItemType`
201
202* :ref:`SpecTypeTestPlatformItemType`
203
204* :ref:`SpecTypeTestProcedureItemType`
205
206* :ref:`SpecTypeTestSuiteItemType`
207
208.. _SpecTypeBuildItemType:
209
210Build Item Type
211^^^^^^^^^^^^^^^
212
213This type refines the :ref:`SpecTypeRootItemType` through the ``type``
214attribute if the value is ``build``. This set of attributes specifies a build
215item. All explicit attributes shall be specified. The explicit attributes for
216this type are:
217
218build-type
219    The attribute value shall be a :ref:`SpecTypeName`. It shall be the build
220    item type.
221
222This type is refined by the following types:
223
224* :ref:`SpecTypeBuildAdaTestProgramItemType`
225
226* :ref:`SpecTypeBuildBSPItemType`
227
228* :ref:`SpecTypeBuildConfigurationFileItemType`
229
230* :ref:`SpecTypeBuildConfigurationHeaderItemType`
231
232* :ref:`SpecTypeBuildGroupItemType`
233
234* :ref:`SpecTypeBuildLibraryItemType`
235
236* :ref:`SpecTypeBuildObjectsItemType`
237
238* :ref:`SpecTypeBuildOptionItemType`
239
240* :ref:`SpecTypeBuildScriptItemType`
241
242* :ref:`SpecTypeBuildStartFileItemType`
243
244* :ref:`SpecTypeBuildTestProgramItemType`
245
246.. _SpecTypeBuildAdaTestProgramItemType:
247
248Build Ada Test Program Item Type
249^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
250
251This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
252attribute if the value is ``ada-test-program``. This set of attributes
253specifies an Ada test program executable to build. Test programs may use
254additional objects provided by :ref:`SpecTypeBuildObjectsItemType` items.  Test
255programs have an implicit ``enabled-by`` attribute value which is controlled by
256the option action :ref:`set-test-state <SpecTypeBuildOptionItemType>`.  If the
257test state is set to ``exclude``, then the test program is not built. All
258explicit attributes shall be specified. The explicit attributes for this type
259are:
260
261ada-main
262    The attribute value shall be a string. It shall be the path to the Ada main
263    body file.
264
265ada-object-directory
266    The attribute value shall be a string. It shall be the path to the Ada
267    object directory (``-D`` option value for ``gnatmake``).
268
269adaflags
270    The attribute value shall be a list of strings. It shall be a list of
271    options for the Ada compiler.
272
273adaincludes
274    The attribute value shall be a list of strings. It shall be a list of Ada
275    include paths.
276
277cflags
278    The attribute value shall be a list. Each list element shall be a
279    :ref:`SpecTypeBuildCCompilerOption`.
280
281cppflags
282    The attribute value shall be a list. Each list element shall be a
283    :ref:`SpecTypeBuildCPreprocessorOption`.
284
285cxxflags
286    The attribute value shall be a list. Each list element shall be a
287    :ref:`SpecTypeBuildCXXCompilerOption`.
288
289includes
290    The attribute value shall be a list. Each list element shall be a
291    :ref:`SpecTypeBuildIncludePath`.
292
293ldflags
294    The attribute value shall be a list. Each list element shall be a
295    :ref:`SpecTypeBuildLinkerOption`.
296
297source
298    The attribute value shall be a list. Each list element shall be a
299    :ref:`SpecTypeBuildSource`.
300
301stlib
302    The attribute value shall be a list. Each list element shall be a
303    :ref:`SpecTypeBuildLinkStaticLibraryDirective`.
304
305target
306    The attribute value shall be a :ref:`SpecTypeBuildTarget`.
307
308use-after
309    The attribute value shall be a list. Each list element shall be a
310    :ref:`SpecTypeBuildUseAfterDirective`.
311
312use-before
313    The attribute value shall be a list. Each list element shall be a
314    :ref:`SpecTypeBuildUseBeforeDirective`.
315
316Please have a look at the following example:
317
318.. code-block:: yaml
319
320    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
321    ada-main: testsuites/ada/samples/hello/hello.adb
322    ada-object-directory: testsuites/ada/samples/hello
323    adaflags: []
324    adaincludes:
325    - cpukit/include/adainclude
326    - testsuites/ada/support
327    build-type: ada-test-program
328    cflags: []
329    copyrights:
330    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
331    cppflags: []
332    cxxflags: []
333    enabled-by: true
334    includes: []
335    ldflags: []
336    links: []
337    source:
338    - testsuites/ada/samples/hello/init.c
339    stlib: []
340    target: testsuites/ada/ada_hello.exe
341    type: build
342    use-after: []
343    use-before: []
344
345.. _SpecTypeBuildBSPItemType:
346
347Build BSP Item Type
348^^^^^^^^^^^^^^^^^^^
349
350This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
351attribute if the value is ``bsp``. This set of attributes specifies a base BSP
352variant to build. All explicit attributes shall be specified. The explicit
353attributes for this type are:
354
355arch
356    The attribute value shall be a string. It shall be the target architecture
357    of the BSP.
358
359bsp
360    The attribute value shall be a string. It shall be the base BSP variant
361    name.
362
363cflags
364    The attribute value shall be a list. Each list element shall be a
365    :ref:`SpecTypeBuildCCompilerOption`.
366
367cppflags
368    The attribute value shall be a list. Each list element shall be a
369    :ref:`SpecTypeBuildCPreprocessorOption`.
370
371family
372    The attribute value shall be a string. It shall be the BSP family name.
373    The name shall be the last directory of the path to the BSP sources.
374
375includes
376    The attribute value shall be a list. Each list element shall be a
377    :ref:`SpecTypeBuildIncludePath`.
378
379install
380    The attribute value shall be a list. Each list element shall be a
381    :ref:`SpecTypeBuildInstallDirective`.
382
383source
384    The attribute value shall be a list. Each list element shall be a
385    :ref:`SpecTypeBuildSource`.
386
387Please have a look at the following example:
388
389.. code-block:: yaml
390
391    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
392    arch: myarch
393    bsp: mybsp
394    build-type: bsp
395    cflags: []
396    copyrights:
397    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
398    cppflags: []
399    enabled-by: true
400    family: mybsp
401    includes: []
402    install:
403    - destination: ${BSP_INCLUDEDIR}
404      source:
405      - bsps/myarch/mybsp/include/bsp.h
406      - bsps/myarch/mybsp/include/tm27.h
407    - destination: ${BSP_INCLUDEDIR}/bsp
408      source:
409      - bsps/myarch/mybsp/include/bsp/irq.h
410    - destination: ${BSP_LIBDIR}
411      source:
412      - bsps/myarch/mybsp/start/linkcmds
413    links:
414    - role: build-dependency
415      uid: ../../obj
416    - role: build-dependency
417      uid: ../../opto2
418    - role: build-dependency
419      uid: abi
420    - role: build-dependency
421      uid: obj
422    - role: build-dependency
423      uid: ../start
424    - role: build-dependency
425      uid: ../../bspopts
426    source:
427    - bsps/myarch/mybsp/start/bspstart.c
428    type: build
429
430.. _SpecTypeBuildConfigurationFileItemType:
431
432Build Configuration File Item Type
433^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
434
435This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
436attribute if the value is ``config-file``. This set of attributes specifies a
437configuration file placed in the build tree.  The configuration file is
438generated during the configure command execution and is placed in the build
439tree. All explicit attributes shall be specified. The explicit attributes for
440this type are:
441
442content
443    The attribute value shall be a string. It shall be the content of the
444    configuration file. A ${VARIABLE} substitution is performed during the
445    configure command execution using the variables of the configuration set.
446    Use $$ for a plain $ character. To have all variables from sibling items
447    available for substitution it is recommended to link them in the proper
448    order.
449
450install-path
451    The attribute value shall be a :ref:`SpecTypeBuildInstallPath`.
452
453target
454    The attribute value shall be a :ref:`SpecTypeBuildTarget`.
455
456Please have a look at the following example:
457
458.. code-block:: yaml
459
460    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
461    build-type: config-file
462    content: |
463      # ...
464      Name: ${ARCH}-rtems${__RTEMS_MAJOR__}-${BSP_NAME}
465      # ...
466    copyrights:
467    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
468    enabled-by: true
469    install-path: ${PREFIX}/lib/pkgconfig
470    links: []
471    target: ${ARCH}-rtems${__RTEMS_MAJOR__}-${BSP_NAME}.pc
472    type: build
473
474.. _SpecTypeBuildConfigurationHeaderItemType:
475
476Build Configuration Header Item Type
477^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
478
479This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
480attribute if the value is ``config-header``. This set of attributes specifies
481configuration header file.  The configuration header file is generated during
482configure command execution and is placed in the build tree.  All collected
483configuration defines are written to the configuration header file during the
484configure command execution.  To have all configuration defines from sibling
485items available it is recommended to link them in the proper order. All
486explicit attributes shall be specified. The explicit attributes for this type
487are:
488
489guard
490    The attribute value shall be a string. It shall be the header guard define.
491
492include-headers
493    The attribute value shall be a list of strings. It shall be a list of
494    header files to include via ``#include <...>``.
495
496install-path
497    The attribute value shall be a :ref:`SpecTypeBuildInstallPath`.
498
499target
500    The attribute value shall be a :ref:`SpecTypeBuildTarget`.
501
502.. _SpecTypeBuildGroupItemType:
503
504Build Group Item Type
505^^^^^^^^^^^^^^^^^^^^^
506
507This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
508attribute if the value is ``group``. This set of attributes provides a means to
509aggregate other build items and modify the build item context which is used by
510referenced build items.  The ``includes``, ``ldflags``, ``objects``, and
511``use`` variables of the build item context are updated by the corresponding
512attributes of the build group. All explicit attributes shall be specified. The
513explicit attributes for this type are:
514
515cflags
516    The attribute value shall be a list. Each list element shall be a
517    :ref:`SpecTypeBuildCCompilerOption`.
518
519cppflags
520    The attribute value shall be a list. Each list element shall be a
521    :ref:`SpecTypeBuildCPreprocessorOption`.
522
523cxxflags
524    The attribute value shall be a list. Each list element shall be a
525    :ref:`SpecTypeBuildCXXCompilerOption`.
526
527includes
528    The attribute value shall be a list. Each list element shall be a
529    :ref:`SpecTypeBuildIncludePath`.
530
531install
532    The attribute value shall be a list. Each list element shall be a
533    :ref:`SpecTypeBuildInstallDirective`.
534
535ldflags
536    The attribute value shall be a list of strings. It shall be a list of
537    options for the linker.  They are used to link executables referenced by
538    this item.
539
540use-after
541    The attribute value shall be a list. Each list element shall be a
542    :ref:`SpecTypeBuildUseAfterDirective`.
543
544use-before
545    The attribute value shall be a list. Each list element shall be a
546    :ref:`SpecTypeBuildUseBeforeDirective`.
547
548Please have a look at the following example:
549
550.. code-block:: yaml
551
552    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
553    build-type: group
554    cflags: []
555    copyrights:
556    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
557    cppflags: []
558    cxxflags: []
559    enabled-by:
560    - BUILD_TESTS
561    - BUILD_SAMPLES
562    includes:
563    - testsuites/support/include
564    install: []
565    ldflags:
566    - -Wl,--wrap=printf
567    - -Wl,--wrap=puts
568    links:
569    - role: build-dependency
570      uid: ticker
571    type: build
572    use-after: []
573    use-before:
574    - rtemstest
575
576.. _SpecTypeBuildLibraryItemType:
577
578Build Library Item Type
579^^^^^^^^^^^^^^^^^^^^^^^
580
581This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
582attribute if the value is ``library``. This set of attributes specifies a
583static library.  Library items may use additional objects provided by
584:ref:`SpecTypeBuildObjectsItemType` items through the build dependency links of
585the item. All explicit attributes shall be specified. The explicit attributes
586for this type are:
587
588cflags
589    The attribute value shall be a list. Each list element shall be a
590    :ref:`SpecTypeBuildCCompilerOption`.
591
592cppflags
593    The attribute value shall be a list. Each list element shall be a
594    :ref:`SpecTypeBuildCPreprocessorOption`.
595
596cxxflags
597    The attribute value shall be a list. Each list element shall be a
598    :ref:`SpecTypeBuildCXXCompilerOption`.
599
600includes
601    The attribute value shall be a list. Each list element shall be a
602    :ref:`SpecTypeBuildIncludePath`.
603
604install
605    The attribute value shall be a list. Each list element shall be a
606    :ref:`SpecTypeBuildInstallDirective`.
607
608install-path
609    The attribute value shall be a :ref:`SpecTypeBuildInstallPath`.
610
611source
612    The attribute value shall be a list. Each list element shall be a
613    :ref:`SpecTypeBuildSource`.
614
615target
616    The attribute value shall be a :ref:`SpecTypeBuildTarget`. It shall be the
617    name of the static library, e.g. ``z`` for ``libz.a``.
618
619Please have a look at the following example:
620
621.. code-block:: yaml
622
623    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
624    build-type: library
625    cflags:
626    - -Wno-pointer-sign
627    copyrights:
628    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
629    cppflags: []
630    cxxflags: []
631    enabled-by: true
632    includes:
633    - cpukit/libfs/src/jffs2/include
634    install:
635    - destination: ${BSP_INCLUDEDIR}/rtems
636      source:
637      - cpukit/include/rtems/jffs2.h
638    install-path: ${BSP_LIBDIR}
639    links: []
640    source:
641    - cpukit/libfs/src/jffs2/src/build.c
642    target: jffs2
643    type: build
644
645.. _SpecTypeBuildObjectsItemType:
646
647Build Objects Item Type
648^^^^^^^^^^^^^^^^^^^^^^^
649
650This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
651attribute if the value is ``objects``. This set of attributes specifies a set
652of object files used to build static libraries or test programs. All explicit
653attributes shall be specified. The explicit attributes for this type are:
654
655cflags
656    The attribute value shall be a list. Each list element shall be a
657    :ref:`SpecTypeBuildCCompilerOption`.
658
659cppflags
660    The attribute value shall be a list. Each list element shall be a
661    :ref:`SpecTypeBuildCPreprocessorOption`.
662
663cxxflags
664    The attribute value shall be a list. Each list element shall be a
665    :ref:`SpecTypeBuildCXXCompilerOption`.
666
667includes
668    The attribute value shall be a list. Each list element shall be a
669    :ref:`SpecTypeBuildIncludePath`.
670
671install
672    The attribute value shall be a list. Each list element shall be a
673    :ref:`SpecTypeBuildInstallDirective`.
674
675source
676    The attribute value shall be a list. Each list element shall be a
677    :ref:`SpecTypeBuildSource`.
678
679Please have a look at the following example:
680
681.. code-block:: yaml
682
683    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
684    build-type: objects
685    cflags: []
686    copyrights:
687    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
688    cppflags: []
689    cxxflags: []
690    enabled-by: true
691    includes: []
692    install:
693    - destination: ${BSP_INCLUDEDIR}/bsp
694      source:
695      - bsps/include/bsp/bootcard.h
696      - bsps/include/bsp/default-initial-extension.h
697      - bsps/include/bsp/fatal.h
698    links: []
699    source:
700    - bsps/shared/start/bootcard.c
701    - bsps/shared/rtems-version.c
702    type: build
703
704.. _SpecTypeBuildOptionItemType:
705
706Build Option Item Type
707^^^^^^^^^^^^^^^^^^^^^^
708
709This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
710attribute if the value is ``option``. This set of attributes specifies a build
711option. The following explicit attributes are mandatory:
712
713* ``actions``
714
715* ``default``
716
717* ``description``
718
719The explicit attributes for this type are:
720
721actions
722    The attribute value shall be a list. Each list element shall be a
723    :ref:`SpecTypeBuildOptionAction`. Each action operates on the *action
724    value* handed over by a previous action and action-specific attribute
725    values.  The actions pass the processed action value to the next action in
726    the list.  The first action starts with an action value of ``None``.  The
727    actions are carried out during the configure command execution.
728
729default
730    The attribute value shall be a list. Each list element shall be a
731    :ref:`SpecTypeBuildOptionDefaultValue`. It shall be the list of default
732    values of the option.  When a default value is needed, the first value on
733    the list which is enabled according to the enabled set is choosen.  If no
734    value is enabled, then the default value is ``null``.
735
736description
737    The attribute value shall be an optional string. It shall be the
738    description of the option.
739
740format
741    The attribute value shall be an optional string. It shall be a `Python
742    format string
743    <https://docs.python.org/3/library/string.html#formatstrings>`_, for
744    example ``'{}'`` or ``'{:#010x}'``.
745
746name
747    The attribute value shall be a :ref:`SpecTypeBuildOptionName`.
748
749Please have a look at the following example:
750
751.. code-block:: yaml
752
753    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
754    actions:
755    - get-integer: null
756    - define: null
757    build-type: option
758    copyrights:
759    - Copyright (C) 2020, 2022 embedded brains GmbH (http://www.embedded-brains.de)
760    default:
761    - enabled-by:
762      - bsps/powerpc/motorola_powerpc
763      - m68k/m5484FireEngine
764      - powerpc/hsc_cm01
765      value: 9600
766    - enabled-by: m68k/COBRA5475
767      value: 19200
768    - enabled-by: true
769      value: 115200
770    description: |
771      Default baud for console and other serial devices.
772    enabled-by: true
773    format: '{}'
774    links: []
775    name: BSP_CONSOLE_BAUD
776    type: build
777
778.. _SpecTypeBuildScriptItemType:
779
780Build Script Item Type
781^^^^^^^^^^^^^^^^^^^^^^
782
783This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
784attribute if the value is ``script``. This set of attributes specifies a build
785script.  The optional attributes may be required by commands executed through
786the scripts. The following explicit attributes are mandatory:
787
788* ``do-build``
789
790* ``do-configure``
791
792* ``prepare-build``
793
794* ``prepare-configure``
795
796The explicit attributes for this type are:
797
798asflags
799    The attribute value shall be a list. Each list element shall be a
800    :ref:`SpecTypeBuildAssemblerOption`.
801
802cflags
803    The attribute value shall be a list. Each list element shall be a
804    :ref:`SpecTypeBuildCCompilerOption`.
805
806cppflags
807    The attribute value shall be a list. Each list element shall be a
808    :ref:`SpecTypeBuildCPreprocessorOption`.
809
810cxxflags
811    The attribute value shall be a list. Each list element shall be a
812    :ref:`SpecTypeBuildCXXCompilerOption`.
813
814do-build
815    The attribute value shall be an optional string. If this script shall
816    execute, then it shall be Python code which is executed via ``exec()`` in
817    the context of the ``do_build()`` method of the :file:`wscript`.  A local
818    variable ``bld`` is available with the ``waf`` build context.  A local
819    variable ``bic`` is available with the build item context.
820
821do-configure
822    The attribute value shall be an optional string. If this script shall
823    execute, then it shall be Python code which is executed via ``exec()`` in
824    the context of the ``do_configure()`` method of the :file:`wscript`.  A
825    local variable ``conf`` is available with the ``waf`` configuration
826    context.  A local variable ``cic`` is available with the configuration item
827    context.
828
829includes
830    The attribute value shall be a list. Each list element shall be a
831    :ref:`SpecTypeBuildIncludePath`.
832
833ldflags
834    The attribute value shall be a list. Each list element shall be a
835    :ref:`SpecTypeBuildLinkerOption`.
836
837prepare-build
838    The attribute value shall be an optional string. If this script shall
839    execute, then it shall be Python code which is executed via ``exec()`` in
840    the context of the ``prepare_build()`` method of the :file:`wscript`.  A
841    local variable ``bld`` is available with the ``waf`` build context.  A
842    local variable ``bic`` is available with the build item context.
843
844prepare-configure
845    The attribute value shall be an optional string. If this script shall
846    execute, then it shall be Python code which is executed via ``exec()`` in
847    the context of the ``prepare_configure()`` method of the :file:`wscript`.
848    A local variable ``conf`` is available with the ``waf`` configuration
849    context.  A local variable ``cic`` is available with the configuration item
850    context.
851
852stlib
853    The attribute value shall be a list. Each list element shall be a
854    :ref:`SpecTypeBuildLinkStaticLibraryDirective`.
855
856use-after
857    The attribute value shall be a list. Each list element shall be a
858    :ref:`SpecTypeBuildUseAfterDirective`.
859
860use-before
861    The attribute value shall be a list. Each list element shall be a
862    :ref:`SpecTypeBuildUseBeforeDirective`.
863
864Please have a look at the following example:
865
866.. code-block:: yaml
867
868    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
869    build-type: script
870    copyrights:
871    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
872    default: null
873    default-by-variant: []
874    do-build: |
875      bld.install_as(
876          "${BSP_LIBDIR}/linkcmds",
877          "bsps/" + bld.env.ARCH + "/" + bld.env.BSP_FAMILY +
878          "/start/linkcmds." + bld.env.BSP_BASE
879      )
880    do-configure: |
881      conf.env.append_value(
882          "LINKFLAGS",
883          ["-qnolinkcmds", "-T", "linkcmds." + conf.env.BSP_BASE]
884      )
885    enabled-by: true
886    links: []
887    prepare-build: null
888    prepare-configure: null
889    type: build
890
891.. _SpecTypeBuildStartFileItemType:
892
893Build Start File Item Type
894^^^^^^^^^^^^^^^^^^^^^^^^^^
895
896This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
897attribute if the value is ``start-file``. This set of attributes specifies a
898start file to build.  A start file is used to link an executable. All explicit
899attributes shall be specified. The explicit attributes for this type are:
900
901asflags
902    The attribute value shall be a list. Each list element shall be a
903    :ref:`SpecTypeBuildAssemblerOption`.
904
905cppflags
906    The attribute value shall be a list. Each list element shall be a
907    :ref:`SpecTypeBuildCPreprocessorOption`.
908
909includes
910    The attribute value shall be a list. Each list element shall be a
911    :ref:`SpecTypeBuildIncludePath`.
912
913install-path
914    The attribute value shall be a :ref:`SpecTypeBuildInstallPath`.
915
916source
917    The attribute value shall be a list. Each list element shall be a
918    :ref:`SpecTypeBuildSource`.
919
920target
921    The attribute value shall be a :ref:`SpecTypeBuildTarget`.
922
923Please have a look at the following example:
924
925.. code-block:: yaml
926
927    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
928    asflags: []
929    build-type: start-file
930    copyrights:
931    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
932    cppflags: []
933    enabled-by: true
934    includes: []
935    install-path: ${BSP_LIBDIR}
936    links: []
937    source:
938    - bsps/sparc/shared/start/start.S
939    target: start.o
940    type: build
941
942.. _SpecTypeBuildTestProgramItemType:
943
944Build Test Program Item Type
945^^^^^^^^^^^^^^^^^^^^^^^^^^^^
946
947This type refines the :ref:`SpecTypeBuildItemType` through the ``build-type``
948attribute if the value is ``test-program``. This set of attributes specifies a
949test program executable to build. Test programs may use additional objects
950provided by :ref:`SpecTypeBuildObjectsItemType` items.  Test programs have an
951implicit ``enabled-by`` attribute value which is controlled by the option
952action :ref:`set-test-state <SpecTypeBuildOptionItemType>`.  If the test state
953is set to ``exclude``, then the test program is not built. All explicit
954attributes shall be specified. The explicit attributes for this type are:
955
956cflags
957    The attribute value shall be a list. Each list element shall be a
958    :ref:`SpecTypeBuildCCompilerOption`.
959
960cppflags
961    The attribute value shall be a list. Each list element shall be a
962    :ref:`SpecTypeBuildCPreprocessorOption`.
963
964cxxflags
965    The attribute value shall be a list. Each list element shall be a
966    :ref:`SpecTypeBuildCXXCompilerOption`.
967
968features
969    The attribute value shall be a string. It shall be the ``waf`` build
970    features for this test program.
971
972includes
973    The attribute value shall be a list. Each list element shall be a
974    :ref:`SpecTypeBuildIncludePath`.
975
976ldflags
977    The attribute value shall be a list. Each list element shall be a
978    :ref:`SpecTypeBuildLinkerOption`.
979
980source
981    The attribute value shall be a list. Each list element shall be a
982    :ref:`SpecTypeBuildSource`.
983
984stlib
985    The attribute value shall be a list. Each list element shall be a
986    :ref:`SpecTypeBuildLinkStaticLibraryDirective`.
987
988target
989    The attribute value shall be a :ref:`SpecTypeBuildTarget`.
990
991use-after
992    The attribute value shall be a list. Each list element shall be a
993    :ref:`SpecTypeBuildUseAfterDirective`.
994
995use-before
996    The attribute value shall be a list. Each list element shall be a
997    :ref:`SpecTypeBuildUseBeforeDirective`.
998
999Please have a look at the following example:
1000
1001.. code-block:: yaml
1002
1003    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
1004    build-type: test-program
1005    cflags: []
1006    copyrights:
1007    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
1008    cppflags: []
1009    cxxflags: []
1010    enabled-by: true
1011    features: c cprogram
1012    includes: []
1013    ldflags: []
1014    links: []
1015    source:
1016    - testsuites/samples/ticker/init.c
1017    - testsuites/samples/ticker/tasks.c
1018    stlib: []
1019    target: testsuites/samples/ticker.exe
1020    type: build
1021    use-after: []
1022    use-before: []
1023
1024.. _SpecTypeConstraintItemType:
1025
1026Constraint Item Type
1027^^^^^^^^^^^^^^^^^^^^
1028
1029This type refines the :ref:`SpecTypeRootItemType` through the ``type``
1030attribute if the value is ``constraint``. This set of attributes specifies a
1031constraint. All explicit attributes shall be specified. The explicit attributes
1032for this type are:
1033
1034rationale
1035    The attribute value shall be an optional string. If the value is present,
1036    then it shall state the rationale or justification of the constraint.
1037
1038text
1039    The attribute value shall be a :ref:`SpecTypeRequirementText`. It shall
1040    state the constraint.
1041
1042.. _SpecTypeGlossaryItemType:
1043
1044Glossary Item Type
1045^^^^^^^^^^^^^^^^^^
1046
1047This type refines the :ref:`SpecTypeRootItemType` through the ``type``
1048attribute if the value is ``glossary``. This set of attributes specifies a
1049glossary item. All explicit attributes shall be specified. The explicit
1050attributes for this type are:
1051
1052glossary-type
1053    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1054    glossary item type.
1055
1056This type is refined by the following types:
1057
1058* :ref:`SpecTypeGlossaryGroupItemType`
1059
1060* :ref:`SpecTypeGlossaryTermItemType`
1061
1062.. _SpecTypeGlossaryGroupItemType:
1063
1064Glossary Group Item Type
1065^^^^^^^^^^^^^^^^^^^^^^^^
1066
1067This type refines the :ref:`SpecTypeGlossaryItemType` through the
1068``glossary-type`` attribute if the value is ``group``. This set of attributes
1069specifies a glossary group. All explicit attributes shall be specified. The
1070explicit attributes for this type are:
1071
1072name
1073    The attribute value shall be a string. It shall be the human readable name
1074    of the glossary group.
1075
1076text
1077    The attribute value shall be a string. It shall state the requirement for
1078    the glossary group.
1079
1080.. _SpecTypeGlossaryTermItemType:
1081
1082Glossary Term Item Type
1083^^^^^^^^^^^^^^^^^^^^^^^
1084
1085This type refines the :ref:`SpecTypeGlossaryItemType` through the
1086``glossary-type`` attribute if the value is ``term``. This set of attributes
1087specifies a glossary term. All explicit attributes shall be specified. The
1088explicit attributes for this type are:
1089
1090term
1091    The attribute value shall be a string. It shall be the glossary term.
1092
1093text
1094    The attribute value shall be a string. It shall be the definition of the
1095    glossary term.
1096
1097.. _SpecTypeInterfaceItemType:
1098
1099Interface Item Type
1100^^^^^^^^^^^^^^^^^^^
1101
1102This type refines the :ref:`SpecTypeRootItemType` through the ``type``
1103attribute if the value is ``interface``. This set of attributes specifies an
1104interface specification item. Interface items shall specify the interface of
1105the software product to other software products and the hardware.  Use
1106:ref:`SpecTypeInterfaceDomainItemType` items to specify interface domains, for
1107example the :term:`API`, C language, compiler, interfaces to the
1108implementation, and the hardware. All explicit attributes shall be specified.
1109The explicit attributes for this type are:
1110
1111index-entries
1112    The attribute value shall be a list of strings. It shall be a list of
1113    additional document index entries.  A document index entry derived from the
1114    interface name is added automatically.
1115
1116interface-type
1117    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1118    interface item type.
1119
1120This type is refined by the following types:
1121
1122* :ref:`SpecTypeApplicationConfigurationGroupItemType`
1123
1124* :ref:`SpecTypeApplicationConfigurationOptionItemType`
1125
1126* :ref:`SpecTypeInterfaceCompoundItemType`
1127
1128* :ref:`SpecTypeInterfaceDefineItemType`
1129
1130* :ref:`SpecTypeInterfaceDomainItemType`
1131
1132* :ref:`SpecTypeInterfaceEnumItemType`
1133
1134* :ref:`SpecTypeInterfaceEnumeratorItemType`
1135
1136* :ref:`SpecTypeInterfaceForwardDeclarationItemType`
1137
1138* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
1139
1140* :ref:`SpecTypeInterfaceGroupItemType`
1141
1142* :ref:`SpecTypeInterfaceHeaderFileItemType`
1143
1144* :ref:`SpecTypeInterfaceTypedefItemType`
1145
1146* :ref:`SpecTypeInterfaceUnspecifiedItemType`
1147
1148* :ref:`SpecTypeInterfaceVariableItemType`
1149
1150.. _SpecTypeApplicationConfigurationGroupItemType:
1151
1152Application Configuration Group Item Type
1153^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1154
1155This type refines the :ref:`SpecTypeInterfaceItemType` through the
1156``interface-type`` attribute if the value is ``appl-config-group``. This set of
1157attributes specifies an application configuration group. All explicit
1158attributes shall be specified. The explicit attributes for this type are:
1159
1160description
1161    The attribute value shall be a string. It shall be the description of the
1162    application configuration group.
1163
1164name
1165    The attribute value shall be a string. It shall be human readable name of
1166    the application configuration group.
1167
1168text
1169    The attribute value shall be a :ref:`SpecTypeRequirementText`. It shall
1170    state the requirement for the application configuration group.
1171
1172.. _SpecTypeApplicationConfigurationOptionItemType:
1173
1174Application Configuration Option Item Type
1175^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1176
1177This type refines the :ref:`SpecTypeInterfaceItemType` through the
1178``interface-type`` attribute if the value is ``appl-config-option``. This set
1179of attributes specifies an application configuration option. All explicit
1180attributes shall be specified. The explicit attributes for this type are:
1181
1182appl-config-option-type
1183    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1184    application configuration option type.
1185
1186description
1187    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1188
1189name
1190    The attribute value shall be an
1191    :ref:`SpecTypeApplicationConfigurationOptionName`.
1192
1193notes
1194    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1195
1196This type is refined by the following types:
1197
1198* :ref:`SpecTypeApplicationConfigurationFeatureEnableOptionItemType`
1199
1200* :ref:`SpecTypeApplicationConfigurationFeatureOptionItemType`
1201
1202* :ref:`SpecTypeApplicationConfigurationValueOptionItemType`
1203
1204.. _SpecTypeApplicationConfigurationFeatureEnableOptionItemType:
1205
1206Application Configuration Feature Enable Option Item Type
1207^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1208
1209This type refines the :ref:`SpecTypeApplicationConfigurationOptionItemType`
1210through the ``appl-config-option-type`` attribute if the value is
1211``feature-enable``. This set of attributes specifies an application
1212configuration feature enable option.
1213
1214.. _SpecTypeApplicationConfigurationFeatureOptionItemType:
1215
1216Application Configuration Feature Option Item Type
1217^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1218
1219This type refines the :ref:`SpecTypeApplicationConfigurationOptionItemType`
1220through the ``appl-config-option-type`` attribute if the value is ``feature``.
1221This set of attributes specifies an application configuration feature option.
1222All explicit attributes shall be specified. The explicit attributes for this
1223type are:
1224
1225default
1226    The attribute value shall be a string. It shall describe what happens if
1227    the configuration option is undefined.
1228
1229.. _SpecTypeApplicationConfigurationValueOptionItemType:
1230
1231Application Configuration Value Option Item Type
1232^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1233
1234This type refines the following types:
1235
1236* :ref:`SpecTypeApplicationConfigurationOptionItemType` through the
1237  ``appl-config-option-type`` attribute if the value is ``initializer``
1238
1239* :ref:`SpecTypeApplicationConfigurationOptionItemType` through the
1240  ``appl-config-option-type`` attribute if the value is ``integer``
1241
1242This set of attributes specifies application configuration initializer or
1243integer option. All explicit attributes shall be specified. The explicit
1244attributes for this type are:
1245
1246default-value
1247    The attribute value shall be an :ref:`SpecTypeIntegerOrString`. It shall
1248    describe the default value of the application configuration option.
1249
1250.. _SpecTypeInterfaceCompoundItemType:
1251
1252Interface Compound Item Type
1253^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1254
1255This type refines the following types:
1256
1257* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1258  the value is ``struct``
1259
1260* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1261  the value is ``union``
1262
1263This set of attributes specifies a compound (struct or union). All explicit
1264attributes shall be specified. The explicit attributes for this type are:
1265
1266brief
1267    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1268
1269definition
1270    The attribute value shall be a list. Each list element shall be an
1271    :ref:`SpecTypeInterfaceCompoundMemberDefinitionDirective`.
1272
1273definition-kind
1274    The attribute value shall be an
1275    :ref:`SpecTypeInterfaceCompoundDefinitionKind`.
1276
1277description
1278    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1279
1280name
1281    The attribute value shall be a string. It shall be the name of the compound
1282    (struct or union).
1283
1284notes
1285    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1286
1287.. _SpecTypeInterfaceDefineItemType:
1288
1289Interface Define Item Type
1290^^^^^^^^^^^^^^^^^^^^^^^^^^
1291
1292This type refines the :ref:`SpecTypeInterfaceItemType` through the
1293``interface-type`` attribute if the value is ``define``. This set of attributes
1294specifies a define. All explicit attributes shall be specified. The explicit
1295attributes for this type are:
1296
1297brief
1298    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1299
1300definition
1301    The attribute value shall be an
1302    :ref:`SpecTypeInterfaceDefinitionDirective`.
1303
1304description
1305    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1306
1307name
1308    The attribute value shall be a string. It shall be the name of the define.
1309
1310notes
1311    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1312
1313.. _SpecTypeInterfaceDomainItemType:
1314
1315Interface Domain Item Type
1316^^^^^^^^^^^^^^^^^^^^^^^^^^
1317
1318This type refines the :ref:`SpecTypeInterfaceItemType` through the
1319``interface-type`` attribute if the value is ``domain``. This set of attributes
1320specifies an interface domain.  Interface items are placed into domains through
1321links with the :ref:`SpecTypeInterfacePlacementLinkRole`. All explicit
1322attributes shall be specified. The explicit attributes for this type are:
1323
1324description
1325    The attribute value shall be a string. It shall be the description of the
1326    domain
1327
1328name
1329    The attribute value shall be a string. It shall be the human readable name
1330    of the domain.
1331
1332.. _SpecTypeInterfaceEnumItemType:
1333
1334Interface Enum Item Type
1335^^^^^^^^^^^^^^^^^^^^^^^^
1336
1337This type refines the :ref:`SpecTypeInterfaceItemType` through the
1338``interface-type`` attribute if the value is ``enum``. This set of attributes
1339specifies an enum. All explicit attributes shall be specified. The explicit
1340attributes for this type are:
1341
1342brief
1343    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1344
1345definition-kind
1346    The attribute value shall be an :ref:`SpecTypeInterfaceEnumDefinitionKind`.
1347
1348description
1349    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1350
1351name
1352    The attribute value shall be a string. It shall be the name of the enum.
1353
1354notes
1355    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1356
1357.. _SpecTypeInterfaceEnumeratorItemType:
1358
1359Interface Enumerator Item Type
1360^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1361
1362This type refines the :ref:`SpecTypeInterfaceItemType` through the
1363``interface-type`` attribute if the value is ``enumerator``. This set of
1364attributes specifies an enumerator. All explicit attributes shall be specified.
1365The explicit attributes for this type are:
1366
1367brief
1368    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1369
1370definition
1371    The attribute value shall be an
1372    :ref:`SpecTypeInterfaceDefinitionDirective`.
1373
1374description
1375    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1376
1377name
1378    The attribute value shall be a string. It shall be the name of the
1379    enumerator.
1380
1381notes
1382    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1383
1384.. _SpecTypeInterfaceForwardDeclarationItemType:
1385
1386Interface Forward Declaration Item Type
1387^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1388
1389This type refines the :ref:`SpecTypeInterfaceItemType` through the
1390``interface-type`` attribute if the value is ``forward-declaration``. Items of
1391this type specify a forward declaration.  The item shall have exactly one link
1392with the :ref:`SpecTypeInterfaceTargetLinkRole` to an
1393:ref:`SpecTypeInterfaceCompoundItemType` item.  This link defines the type
1394declared by the forward declaration.
1395
1396.. _SpecTypeInterfaceFunctionOrMacroItemType:
1397
1398Interface Function or Macro Item Type
1399^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1400
1401This type refines the following types:
1402
1403* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1404  the value is ``function``
1405
1406* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1407  the value is ``macro``
1408
1409This set of attributes specifies a function or a macro. All explicit attributes
1410shall be specified. The explicit attributes for this type are:
1411
1412brief
1413    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1414
1415definition
1416    The attribute value shall be an
1417    :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionDirective`.
1418
1419description
1420    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1421
1422name
1423    The attribute value shall be a string. It shall be the name of the function
1424    or macro.
1425
1426notes
1427    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1428
1429params
1430    The attribute value shall be a list. Each list element shall be an
1431    :ref:`SpecTypeInterfaceParameter`.
1432
1433return
1434    The attribute value shall be an :ref:`SpecTypeInterfaceReturnDirective`.
1435
1436.. _SpecTypeInterfaceGroupItemType:
1437
1438Interface Group Item Type
1439^^^^^^^^^^^^^^^^^^^^^^^^^
1440
1441This type refines the :ref:`SpecTypeInterfaceItemType` through the
1442``interface-type`` attribute if the value is ``group``. This set of attributes
1443specifies an interface group. All explicit attributes shall be specified. The
1444explicit attributes for this type are:
1445
1446brief
1447    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1448
1449description
1450    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1451
1452identifier
1453    The attribute value shall be an :ref:`SpecTypeInterfaceGroupIdentifier`.
1454
1455name
1456    The attribute value shall be a string. It shall be the human readable name
1457    of the interface group.
1458
1459text
1460    The attribute value shall be a :ref:`SpecTypeRequirementText`. It shall
1461    state the requirement for the interface group.
1462
1463.. _SpecTypeInterfaceHeaderFileItemType:
1464
1465Interface Header File Item Type
1466^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1467
1468This type refines the :ref:`SpecTypeInterfaceItemType` through the
1469``interface-type`` attribute if the value is ``header-file``. This set of
1470attributes specifies a header file.  The item shall have exactly one link with
1471the :ref:`SpecTypeInterfacePlacementLinkRole` to an
1472:ref:`SpecTypeInterfaceDomainItemType` item.  This link defines the interface
1473domain of the header file. All explicit attributes shall be specified. The
1474explicit attributes for this type are:
1475
1476brief
1477    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1478
1479path
1480    The attribute value shall be a string. It shall be the path used to include
1481    the header file.  For example :file:`rtems/confdefs.h`.
1482
1483prefix
1484    The attribute value shall be a string. It shall be the prefix directory
1485    path to the header file in the interface domain.  For example
1486    :file:`cpukit/include`.
1487
1488.. _SpecTypeInterfaceTypedefItemType:
1489
1490Interface Typedef Item Type
1491^^^^^^^^^^^^^^^^^^^^^^^^^^^
1492
1493This type refines the :ref:`SpecTypeInterfaceItemType` through the
1494``interface-type`` attribute if the value is ``typedef``. This set of
1495attributes specifies a typedef. All explicit attributes shall be specified. The
1496explicit attributes for this type are:
1497
1498brief
1499    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1500
1501definition
1502    The attribute value shall be an
1503    :ref:`SpecTypeInterfaceDefinitionDirective`.
1504
1505description
1506    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1507
1508name
1509    The attribute value shall be a string. It shall be the name of the typedef.
1510
1511notes
1512    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1513
1514params
1515    The attribute value shall be a list. Each list element shall be an
1516    :ref:`SpecTypeInterfaceParameter`.
1517
1518return
1519    The attribute value shall be an :ref:`SpecTypeInterfaceReturnDirective`.
1520
1521.. _SpecTypeInterfaceUnspecifiedItemType:
1522
1523Interface Unspecified Item Type
1524^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1525
1526This type refines the following types:
1527
1528* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1529  the value is ``unspecified-define``
1530
1531* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1532  the value is ``unspecified-define-or-object``
1533
1534* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1535  the value is ``unspecified-enum``
1536
1537* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1538  the value is ``unspecified-enumerator``
1539
1540* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1541  the value is ``unspecified-function``
1542
1543* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1544  the value is ``unspecified-group``
1545
1546* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1547  the value is ``unspecified-macro``
1548
1549* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1550  the value is ``unspecified-macro-or-function``
1551
1552* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1553  the value is ``unspecified-object``
1554
1555* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1556  the value is ``unspecified-struct``
1557
1558* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1559  the value is ``unspecified-typedef``
1560
1561* :ref:`SpecTypeInterfaceItemType` through the ``interface-type`` attribute if
1562  the value is ``unspecified-union``
1563
1564This set of attributes specifies an unspecified interface. All explicit
1565attributes shall be specified. The explicit attributes for this type are:
1566
1567name
1568    The attribute value shall be a string. It shall be the name of the
1569    unspecified interface.
1570
1571references
1572    The attribute value shall be an :ref:`SpecTypeInterfaceReferencesSet`.
1573
1574.. _SpecTypeInterfaceVariableItemType:
1575
1576Interface Variable Item Type
1577^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1578
1579This type refines the :ref:`SpecTypeInterfaceItemType` through the
1580``interface-type`` attribute if the value is ``variable``. This set of
1581attributes specifies a variable. All explicit attributes shall be specified.
1582The explicit attributes for this type are:
1583
1584brief
1585    The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
1586
1587definition
1588    The attribute value shall be an
1589    :ref:`SpecTypeInterfaceDefinitionDirective`.
1590
1591description
1592    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
1593
1594name
1595    The attribute value shall be a string. It shall be the name of the
1596    variable.
1597
1598notes
1599    The attribute value shall be an :ref:`SpecTypeInterfaceNotes`.
1600
1601.. _SpecTypeRequirementItemType:
1602
1603Requirement Item Type
1604^^^^^^^^^^^^^^^^^^^^^
1605
1606This type refines the :ref:`SpecTypeRootItemType` through the ``type``
1607attribute if the value is ``requirement``. This set of attributes specifies a
1608requirement. All explicit attributes shall be specified. The explicit
1609attributes for this type are:
1610
1611rationale
1612    The attribute value shall be an optional string. If the value is present,
1613    then it shall state the rationale or justification of the requirement.
1614
1615references
1616    The attribute value shall be a list. Each list element shall be a
1617    :ref:`SpecTypeRequirementReference`.
1618
1619requirement-type
1620    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1621    requirement item type.
1622
1623text
1624    The attribute value shall be a :ref:`SpecTypeRequirementText`. It shall
1625    state the requirement.
1626
1627This type is refined by the following types:
1628
1629* :ref:`SpecTypeFunctionalRequirementItemType`
1630
1631* :ref:`SpecTypeNonFunctionalRequirementItemType`
1632
1633Please have a look at the following example:
1634
1635.. code-block:: yaml
1636
1637    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
1638    copyrights:
1639    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de
1640    enabled-by: true
1641    functional-type: capability
1642    links: []
1643    rationale: |
1644      It keeps you busy.
1645    requirement-type: functional
1646    text: |
1647      The system shall do crazy things.
1648    type: requirement
1649
1650.. _SpecTypeFunctionalRequirementItemType:
1651
1652Functional Requirement Item Type
1653^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1654
1655This type refines the :ref:`SpecTypeRequirementItemType` through the
1656``requirement-type`` attribute if the value is ``functional``. This set of
1657attributes specifies a functional requirement. All explicit attributes shall be
1658specified. The explicit attributes for this type are:
1659
1660functional-type
1661    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1662    functional type of the requirement.
1663
1664This type is refined by the following types:
1665
1666* :ref:`SpecTypeActionRequirementItemType`
1667
1668* :ref:`SpecTypeGenericFunctionalRequirementItemType`
1669
1670.. _SpecTypeActionRequirementItemType:
1671
1672Action Requirement Item Type
1673^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1674
1675This type refines the :ref:`SpecTypeFunctionalRequirementItemType` through the
1676``functional-type`` attribute if the value is ``action``. This set of
1677attributes specifies functional requirements and corresponding validation test
1678code.  The functional requirements of an action are specified.  An action
1679performs a step in a finite state machine.  An action is implemented through a
1680function or a macro.  The action is performed through a call of the function or
1681an execution of the code of a macro expansion by an actor.  The actor is for
1682example a task or an interrupt service routine.
1683
1684For action requirements which specify the function of an interface, there shall
1685be exactly one link with the :ref:`SpecTypeInterfaceFunctionLinkRole` to the
1686interface of the action.
1687
1688The action requirements are specified by
1689
1690* a list of pre-conditions, each with a set of states,
1691
1692* a list of post-conditions, each with a set of states,
1693
1694* the transition of pre-condition states to post-condition states through the
1695  action.
1696
1697Along with the requirements, the test code to generate a validation test is
1698specified.  For an action requirement it is verified that all variations of
1699pre-condition states have a set of post-condition states specified in the
1700transition map.  All transitions are covered by the generated test code. All
1701explicit attributes shall be specified. The explicit attributes for this type
1702are:
1703
1704post-conditions
1705    The attribute value shall be a list. Each list element shall be an
1706    :ref:`SpecTypeActionRequirementCondition`.
1707
1708pre-conditions
1709    The attribute value shall be a list. Each list element shall be an
1710    :ref:`SpecTypeActionRequirementCondition`.
1711
1712skip-reasons
1713    The attribute value shall be an
1714    :ref:`SpecTypeActionRequirementSkipReasons`.
1715
1716test-action
1717    The attribute value shall be a string. It shall be the test action code.
1718
1719test-brief
1720    The attribute value shall be an optional string. If the value is present,
1721    then it shall be the test case brief description.
1722
1723test-cleanup
1724    The attribute value shall be an optional string. If the value is present,
1725    then it shall be the test cleanup code.  The code is placed in the test
1726    action loop body after the test post-condition checks.
1727
1728test-context
1729    The attribute value shall be a list. Each list element shall be a
1730    :ref:`SpecTypeTestContextMember`.
1731
1732test-context-support
1733    The attribute value shall be an optional string. If the value is present,
1734    then it shall be the test context support code.  The context support code
1735    is placed at file scope before the test context definition.
1736
1737test-description
1738    The attribute value shall be an optional string. If the value is present,
1739    then it shall be the test case description.
1740
1741test-header
1742    The attribute value shall be a :ref:`SpecTypeTestHeader`.
1743
1744test-includes
1745    The attribute value shall be a list of strings. It shall be a list of
1746    header files included via ``#include <...>``.
1747
1748test-local-includes
1749    The attribute value shall be a list of strings. It shall be a list of
1750    header files included via ``#include "..."``.
1751
1752test-prepare
1753    The attribute value shall be an optional string. If the value is present,
1754    then it shall be the early test preparation code.  The code is placed in
1755    the test action loop body before the test pre-condition preparations.
1756
1757test-setup
1758    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
1759
1760test-stop
1761    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
1762
1763test-support
1764    The attribute value shall be an optional string. If the value is present,
1765    then it shall be the test case support code. The support code is placed at
1766    file scope before the test case code.
1767
1768test-target
1769    The attribute value shall be a string. It shall be the path to the
1770    generated test case source file.
1771
1772test-teardown
1773    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
1774
1775transition-map
1776    The attribute value shall be a list. Each list element shall be an
1777    :ref:`SpecTypeActionRequirementTransition`.
1778
1779Please have a look at the following example:
1780
1781.. code-block:: yaml
1782
1783    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
1784    copyrights:
1785    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
1786    enabled-by: true
1787    functional-type: action
1788    links: []
1789    post-conditions:
1790    - name: Status
1791      states:
1792      - name: Success
1793        test-code: |
1794          /* Check that the status is SUCCESS */
1795        text: |
1796          The status shall be SUCCESS.
1797      - name: Error
1798        test-code: |
1799          /* Check that the status is ERROR */
1800        text: |
1801          The status shall be ERROR.
1802      test-epilogue: null
1803      test-prologue: null
1804    - name: Data
1805      states:
1806      - name: Unchanged
1807        test-code: |
1808          /* Check that the data is unchanged */
1809        text: |
1810          The data shall be unchanged by the action.
1811      - name: Red
1812        test-code: |
1813          /* Check that the data is red */
1814        text: |
1815          The data shall be red.
1816      - name: Green
1817        test-code: |
1818          /* Check that the data is green */
1819        text: |
1820          The data shall be green.
1821      test-epilogue: null
1822      test-prologue: null
1823    pre-conditions:
1824    - name: Data
1825      states:
1826      - name: NullPtr
1827        test-code: |
1828          /* Set data pointer to NULL */
1829        text: |
1830          The data pointer shall be NULL.
1831      - name: Valid
1832        test-code: |
1833          /* Set data pointer to reference a valid data buffer */
1834        text: |
1835          The data pointer shall reference a valid data buffer.
1836      test-epilogue: null
1837      test-prologue: null
1838    - name: Option
1839      states:
1840      - name: Red
1841        test-code: |
1842          /* Set option to RED */
1843        text: |
1844          The option shall be RED.
1845      - name: Green
1846        test-code: |
1847          /* Set option to GREEN */
1848        text: |
1849          The option shall be GREEN.
1850      test-epilogue: null
1851      test-prologue: null
1852    requirement-type: functional
1853    skip-reasons: {}
1854    test-action: |
1855      /* Call the function of the action */
1856    test-brief: null
1857    test-cleanup: null
1858    test-context:
1859    - brief: null
1860      description: null
1861      member: void *data
1862    - brief: null
1863      description: null
1864      member: option_type option
1865    test-context-support: null
1866    test-description: null
1867    test-header: null
1868    test-includes: []
1869    test-local-includes: []
1870    test-prepare: null
1871    test-setup: null
1872    test-stop: null
1873    test-support: null
1874    test-target: tc-red-green-data.c
1875    test-teardown: null
1876    transition-map:
1877    - enabled-by: true
1878      post-conditions:
1879        Status: Error
1880        Data: Unchanged
1881      pre-conditions:
1882        Data: NullPtr
1883        Option: all
1884    - enabled-by: true
1885      post-conditions:
1886        Status: Success
1887        Data: Red
1888      pre-conditions:
1889        Data: Valid
1890        Option: Red
1891    - enabled-by: true
1892      post-conditions:
1893        Status: Success
1894        Data: Green
1895      pre-conditions:
1896        Data: Valid
1897        Option: Green
1898    rationale: null
1899    references: []
1900    text: |
1901      ${.:/text-template}
1902    type: requirement
1903
1904.. _SpecTypeGenericFunctionalRequirementItemType:
1905
1906Generic Functional Requirement Item Type
1907^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1908
1909This type refines the following types:
1910
1911* :ref:`SpecTypeFunctionalRequirementItemType` through the ``functional-type``
1912  attribute if the value is ``capability``
1913
1914* :ref:`SpecTypeFunctionalRequirementItemType` through the ``functional-type``
1915  attribute if the value is ``dependability-function``
1916
1917* :ref:`SpecTypeFunctionalRequirementItemType` through the ``functional-type``
1918  attribute if the value is ``function``
1919
1920* :ref:`SpecTypeFunctionalRequirementItemType` through the ``functional-type``
1921  attribute if the value is ``operational``
1922
1923* :ref:`SpecTypeFunctionalRequirementItemType` through the ``functional-type``
1924  attribute if the value is ``safety-function``
1925
1926Items of this type state a functional requirement with the functional type
1927defined by the specification type refinement.
1928
1929.. _SpecTypeNonFunctionalRequirementItemType:
1930
1931Non-Functional Requirement Item Type
1932^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1933
1934This type refines the :ref:`SpecTypeRequirementItemType` through the
1935``requirement-type`` attribute if the value is ``non-functional``. This set of
1936attributes specifies a non-functional requirement. All explicit attributes
1937shall be specified. The explicit attributes for this type are:
1938
1939non-functional-type
1940    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
1941    non-functional type of the requirement.
1942
1943This type is refined by the following types:
1944
1945* :ref:`SpecTypeDesignGroupRequirementItemType`
1946
1947* :ref:`SpecTypeGenericNonFunctionalRequirementItemType`
1948
1949* :ref:`SpecTypeRuntimePerformanceRequirementItemType`
1950
1951.. _SpecTypeDesignGroupRequirementItemType:
1952
1953Design Group Requirement Item Type
1954^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1955
1956This type refines the :ref:`SpecTypeNonFunctionalRequirementItemType` through
1957the ``non-functional-type`` attribute if the value is ``design-group``. This
1958set of attributes specifies a design group requirement.  Design group
1959requirements have an explicit reference to the associated Doxygen group
1960specified by the ``identifier`` attribute.  Design group requirements have an
1961implicit validation by inspection method.  The qualification toolchain shall
1962perform the inspection and check that the specified Doxygen group exists in the
1963software source code. All explicit attributes shall be specified. The explicit
1964attributes for this type are:
1965
1966identifier
1967    The attribute value shall be an :ref:`SpecTypeInterfaceGroupIdentifier`.
1968
1969.. _SpecTypeGenericNonFunctionalRequirementItemType:
1970
1971Generic Non-Functional Requirement Item Type
1972^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1973
1974This type refines the following types:
1975
1976* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1977  ``non-functional-type`` attribute if the value is ``build-configuration``
1978
1979* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1980  ``non-functional-type`` attribute if the value is ``constraint``
1981
1982* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1983  ``non-functional-type`` attribute if the value is ``design``
1984
1985* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1986  ``non-functional-type`` attribute if the value is ``documentation``
1987
1988* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1989  ``non-functional-type`` attribute if the value is ``interface``
1990
1991* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1992  ``non-functional-type`` attribute if the value is ``interface-requirement``
1993
1994* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1995  ``non-functional-type`` attribute if the value is ``maintainability``
1996
1997* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
1998  ``non-functional-type`` attribute if the value is ``performance``
1999
2000* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
2001  ``non-functional-type`` attribute if the value is ``portability``
2002
2003* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
2004  ``non-functional-type`` attribute if the value is ``quality``
2005
2006* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
2007  ``non-functional-type`` attribute if the value is ``reliability``
2008
2009* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
2010  ``non-functional-type`` attribute if the value is ``resource``
2011
2012* :ref:`SpecTypeNonFunctionalRequirementItemType` through the
2013  ``non-functional-type`` attribute if the value is ``safety``
2014
2015Items of this type state a non-functional requirement with the non-functional
2016type defined by the specification type refinement.
2017
2018.. _SpecTypeRuntimePerformanceRequirementItemType:
2019
2020Runtime Performance Requirement Item Type
2021^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2022
2023This type refines the :ref:`SpecTypeNonFunctionalRequirementItemType` through
2024the ``non-functional-type`` attribute if the value is ``performance-runtime``.
2025The item shall have exactly one link with the
2026:ref:`SpecTypeRuntimeMeasurementRequestLinkRole`.  A requirement text processor
2027shall support a substitution of ${.:/limit-kind}:
2028
2029* For a :ref:`SpecTypeRuntimeMeasurementValueKind` of ``min-lower-bound`` or
2030  ``min-upper-bound``, the substitution of ${.:/limit-kind} shall be
2031  ``"minimum"``.
2032
2033* For a :ref:`SpecTypeRuntimeMeasurementValueKind` of ``mean-lower-bound`` or
2034  ``mean-upper-bound``, the substitution of ${.:/limit-kind} shall be
2035  ``"mean"``.
2036
2037* For a :ref:`SpecTypeRuntimeMeasurementValueKind` of ``max-lower-bound`` or
2038  ``max-upper-bound``, the substitution of ${.:/limit-kind} shall be
2039  ``"maximum"``.
2040
2041A requirement text processor shall support a substitution of
2042${.:/limit-condition}:
2043
2044* For a :ref:`SpecTypeRuntimeMeasurementValueKind` of ``min-lower-bound``,
2045  ``mean-lower-bound``, or ``max-lower-bound``, the substitution of
2046  ${.:/limit-condition} shall be ``"greater than or equal to <value>"`` with
2047  <value> being the value of the corresponding entry in the
2048  :ref:`SpecTypeRuntimeMeasurementValueTable`.
2049
2050* For a :ref:`SpecTypeRuntimeMeasurementValueKind` of ``min-upper-bound``,
2051  ``mean-upper-bound``, or ``max-upper-bound``, the substitution of
2052  ${.:/limit-condition} shall be ``"less than or equal to <value>"`` with
2053  <value> being the value of the corresponding entry in the
2054  :ref:`SpecTypeRuntimeMeasurementValueTable`.
2055
2056A requirement text processor shall support a substitution of ${.:/environment}.
2057The value of the substitution shall be ``"<environment> environment"`` with
2058<environment> being the environment of the corresponding entry in the
2059:ref:`SpecTypeRuntimeMeasurementEnvironmentTable`.
2060
2061This set of attributes specifies a runtime performance requirement. Along with
2062the requirement, the validation test code to execute a measure runtime request
2063is specified. All explicit attributes shall be specified. The explicit
2064attributes for this type are:
2065
2066limits
2067    The attribute value shall be a :ref:`SpecTypeRuntimePerformanceLimitTable`.
2068
2069params
2070    The attribute value shall be a
2071    :ref:`SpecTypeRuntimePerformanceParameterSet`.
2072
2073test-body
2074    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. It shall
2075    provide the code of the measure runtime body handler.  In contrast to other
2076    methods, this method is mandatory.
2077
2078test-cleanup
2079    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. It may
2080    provide the code to clean up the measure runtime request. This method is
2081    called before the cleanup method of the corresponding
2082    :ref:`SpecTypeRuntimeMeasurementTestItemType` item and after the request.
2083
2084test-prepare
2085    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. It may
2086    provide the code to prepare the measure runtime request.  This method is
2087    called after the prepare method of the corresponding
2088    :ref:`SpecTypeRuntimeMeasurementTestItemType` item and before the request.
2089
2090test-setup
2091    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. It may
2092    provide the code of the measure runtime setup handler.
2093
2094test-teardown
2095    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. It may
2096    provide the code of the measure runtime teardown handler.
2097
2098Please have a look at the following example:
2099
2100.. code-block:: yaml
2101
2102    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
2103    copyrights:
2104    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
2105    enabled-by: true
2106    links:
2107    - role: runtime-measurement-request
2108      uid: ../val/performance
2109    limits:
2110      sparc/leon3:
2111        DirtyCache:
2112          max-upper-bound: 0.000005
2113          mean-upper-bound: 0.000005
2114        FullCache:
2115          max-upper-bound: 0.000005
2116          mean-upper-bound: 0.000005
2117        HotCache:
2118          max-upper-bound: 0.000005
2119          mean-upper-bound: 0.000005
2120        Load/1:
2121          max-upper-bound: 0.00001
2122          mean-upper-bound: 0.00001
2123        Load/2:
2124          max-upper-bound: 0.00001
2125          mean-upper-bound: 0.00001
2126        Load/3:
2127          max-upper-bound: 0.00001
2128          mean-upper-bound: 0.00001
2129        Load/4:
2130          max-upper-bound: 0.00001
2131          mean-upper-bound: 0.00001
2132    params: {}
2133    rationale: null
2134    references: []
2135    test-body:
2136      brief: |
2137        Get a buffer.
2138      code: |
2139        ctx->status = rtems_partition_get_buffer( ctx->part_many, &ctx->buffer );
2140      description: null
2141    test-cleanup: null
2142    test-prepare: null
2143    test-setup: null
2144    test-teardown:
2145      brief: |
2146        Return the buffer.
2147      code: |
2148        rtems_status_code sc;
2149
2150        T_quiet_rsc_success( ctx->status );
2151
2152        sc = rtems_partition_return_buffer( ctx->part_many, ctx->buffer );
2153        T_quiet_rsc_success( sc );
2154
2155        return tic == toc;
2156      description: null
2157    text: |
2158      When a partition has exactly ${../val/performance:/params/buffer-count} free
2159      buffers, the ${.:limit-kind} runtime of exactly
2160      ${../val/performance:/params/sample-count} successful calls to
2161      ${../if/get-buffer:/name} in the ${.:/environment} shall be
2162      ${.:limit-condition}.
2163    non-functional-type: performance-runtime
2164    requirement-type: non-functional
2165    type: requirement
2166
2167.. _SpecTypeRequirementValidationItemType:
2168
2169Requirement Validation Item Type
2170^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2171
2172This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2173attribute if the value is ``validation``. This set of attributes provides a
2174requirement validation evidence.  The item shall have exactly one link to the
2175validated requirement with the :ref:`SpecTypeRequirementValidationLinkRole`.
2176All explicit attributes shall be specified. The explicit attributes for this
2177type are:
2178
2179method
2180    The attribute value shall be a :ref:`SpecTypeRequirementValidationMethod`.
2181    Validation by test is done through :ref:`SpecTypeTestCaseItemType` items.
2182
2183text
2184    The attribute value shall be a string. It shall provide the validation
2185    evidence depending on the validation method:
2186
2187    * *By analysis*: A statement shall be provided how the requirement is met,
2188      by analysing static properties of the :term:`software product`.
2189
2190    * *By inspection*: A statement shall be provided how the requirement is
2191      met, by inspection of the :term:`source code`.
2192
2193    * *By review of design*: A rationale shall be provided to demonstrate how
2194      the requirement is satisfied implicitly by the software design.
2195
2196This type is refined by the following types:
2197
2198* :ref:`SpecTypeRequirementValidationMethod`
2199
2200.. _SpecTypeRequirementValidationMethod:
2201
2202Requirement Validation Method
2203^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2204
2205This type refines the following types:
2206
2207* :ref:`SpecTypeRequirementValidationItemType` through the ``method`` attribute
2208  if the value is ``by-analysis``
2209
2210* :ref:`SpecTypeRequirementValidationItemType` through the ``method`` attribute
2211  if the value is ``by-inspection``
2212
2213* :ref:`SpecTypeRequirementValidationItemType` through the ``method`` attribute
2214  if the value is ``by-review-of-design``
2215
2216.. _SpecTypeRuntimeMeasurementTestItemType:
2217
2218Runtime Measurement Test Item Type
2219^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2220
2221This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2222attribute if the value is ``runtime-measurement-test``. This set of attributes
2223specifies a runtime measurement test case. All explicit attributes shall be
2224specified. The explicit attributes for this type are:
2225
2226params
2227    The attribute value shall be a
2228    :ref:`SpecTypeRuntimeMeasurementParameterSet`.
2229
2230test-brief
2231    The attribute value shall be an optional string. If the value is present,
2232    then it shall be the test case brief description.
2233
2234test-cleanup
2235    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. If the
2236    value is present, then it shall be the measure runtime request cleanup
2237    method.  The method is called after each measure runtime request.
2238
2239test-context
2240    The attribute value shall be a list. Each list element shall be a
2241    :ref:`SpecTypeTestContextMember`.
2242
2243test-context-support
2244    The attribute value shall be an optional string. If the value is present,
2245    then it shall be the test context support code.  The context support code
2246    is placed at file scope before the test context definition.
2247
2248test-description
2249    The attribute value shall be an optional string. If the value is present,
2250    then it shall be the test case description.
2251
2252test-includes
2253    The attribute value shall be a list of strings. It shall be a list of
2254    header files included via ``#include <...>``.
2255
2256test-local-includes
2257    The attribute value shall be a list of strings. It shall be a list of
2258    header files included via ``#include "..."``.
2259
2260test-prepare
2261    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. If the
2262    value is present, then it shall be the measure runtime request prepare
2263    method.  The method is called before each measure runtime request.
2264
2265test-setup
2266    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. If the
2267    value is present, then it shall be the test case setup fixture method.
2268
2269test-stop
2270    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. If the
2271    value is present, then it shall be the test case stop fixture method.
2272
2273test-support
2274    The attribute value shall be an optional string. If the value is present,
2275    then it shall be the test case support code. The support code is placed at
2276    file scope before the test case code.
2277
2278test-target
2279    The attribute value shall be a string. It shall be the path to the
2280    generated test case source file.
2281
2282test-teardown
2283    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`. If the
2284    value is present, then it shall be the test case teardown fixture method.
2285
2286.. _SpecTypeSpecificationItemType:
2287
2288Specification Item Type
2289^^^^^^^^^^^^^^^^^^^^^^^
2290
2291This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2292attribute if the value is ``spec``. This set of attributes specifies
2293specification types. All explicit attributes shall be specified. The explicit
2294attributes for this type are:
2295
2296spec-description
2297    The attribute value shall be an optional string. It shall be the
2298    description of the specification type.
2299
2300spec-example
2301    The attribute value shall be an optional string. If the value is present,
2302    then it shall be an example of the specification type.
2303
2304spec-info
2305    The attribute value shall be a :ref:`SpecTypeSpecificationInformation`.
2306
2307spec-name
2308    The attribute value shall be an optional string. It shall be the human
2309    readable name of the specification type.
2310
2311spec-type
2312    The attribute value shall be a :ref:`SpecTypeName`. It shall the
2313    specification type.
2314
2315Please have a look at the following example:
2316
2317.. code-block:: yaml
2318
2319    SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
2320    copyrights:
2321    - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
2322    enabled-by: true
2323    links:
2324    - role: spec-member
2325      uid: root
2326    - role: spec-refinement
2327      spec-key: type
2328      spec-value: example
2329      uid: root
2330    spec-description: null
2331    spec-example: null
2332    spec-info:
2333      dict:
2334        attributes:
2335          an-example-attribute:
2336            description: |
2337              It shall be an example.
2338            spec-type: optional-str
2339          example-number:
2340            description: |
2341              It shall be the example number.
2342            spec-type: int
2343        description: |
2344          This set of attributes specifies an example.
2345        mandatory-attributes: all
2346    spec-name: Example Item Type
2347    spec-type: spec
2348    type: spec
2349
2350.. _SpecTypeTestCaseItemType:
2351
2352Test Case Item Type
2353^^^^^^^^^^^^^^^^^^^
2354
2355This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2356attribute if the value is ``test-case``. This set of attributes specifies a
2357test case. All explicit attributes shall be specified. The explicit attributes
2358for this type are:
2359
2360test-actions
2361    The attribute value shall be a list. Each list element shall be a
2362    :ref:`SpecTypeTestCaseAction`.
2363
2364test-brief
2365    The attribute value shall be a string. It shall be the test case brief
2366    description.
2367
2368test-context
2369    The attribute value shall be a list. Each list element shall be a
2370    :ref:`SpecTypeTestContextMember`.
2371
2372test-context-support
2373    The attribute value shall be an optional string. If the value is present,
2374    then it shall be the test context support code.  The context support code
2375    is placed at file scope before the test context definition.
2376
2377test-description
2378    The attribute value shall be an optional string. It shall be the test case
2379    description.
2380
2381test-header
2382    The attribute value shall be a :ref:`SpecTypeTestHeader`.
2383
2384test-includes
2385    The attribute value shall be a list of strings. It shall be a list of
2386    header files included via ``#include <...>``.
2387
2388test-local-includes
2389    The attribute value shall be a list of strings. It shall be a list of
2390    header files included via ``#include "..."``.
2391
2392test-setup
2393    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
2394
2395test-stop
2396    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
2397
2398test-support
2399    The attribute value shall be an optional string. If the value is present,
2400    then it shall be the test case support code. The support code is placed at
2401    file scope before the test case code.
2402
2403test-target
2404    The attribute value shall be a string. It shall be the path to the
2405    generated target test case source file.
2406
2407test-teardown
2408    The attribute value shall be a :ref:`SpecTypeTestSupportMethod`.
2409
2410.. _SpecTypeTestPlatformItemType:
2411
2412Test Platform Item Type
2413^^^^^^^^^^^^^^^^^^^^^^^
2414
2415This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2416attribute if the value is ``test-platform``. Please note:
2417
2418.. warning::
2419
2420     This item type is work in progress.
2421
2422This set of attributes specifies a test platform. All explicit attributes shall
2423be specified. The explicit attributes for this type are:
2424
2425description
2426    The attribute value shall be a string. It shall be the description of the
2427    test platform.
2428
2429name
2430    The attribute value shall be a string. It shall be the human readable name
2431    of the test platform.
2432
2433.. _SpecTypeTestProcedureItemType:
2434
2435Test Procedure Item Type
2436^^^^^^^^^^^^^^^^^^^^^^^^
2437
2438This type refines the :ref:`SpecTypeRootItemType` through the ``type``
2439attribute if the value is ``test-procedure``. Please note:
2440
2441.. warning::
2442
2443     This item type is work in progress.
2444
2445This set of attributes specifies a test procedure. All explicit attributes
2446shall be specified. The explicit attributes for this type are:
2447
2448name
2449    The attribute value shall be a string. It shall be the human readable name
2450    of the test procedure.
2451
2452purpose
2453    The attribute value shall be a string. It shall state the purpose of the
2454    test procedure.
2455
2456steps
2457    The attribute value shall be a string. It shall describe the steps of the
2458    test procedure execution.
2459
2460.. _SpecTypeTestSuiteItemType:
2461
2462Test Suite Item Type
2463^^^^^^^^^^^^^^^^^^^^
2464
2465This type refines the following types:
2466
2467* :ref:`SpecTypeRootItemType` through the ``type`` attribute if the value is
2468  ``memory-benchmark``
2469
2470* :ref:`SpecTypeRootItemType` through the ``type`` attribute if the value is
2471  ``test-suite``
2472
2473This set of attributes specifies a test suite. All explicit attributes shall be
2474specified. The explicit attributes for this type are:
2475
2476test-brief
2477    The attribute value shall be a string. It shall be the test suite brief
2478    description.
2479
2480test-code
2481    The attribute value shall be a string. It shall be the test suite code.
2482    The test suite code is placed at file scope in the target source file.
2483
2484test-description
2485    The attribute value shall be an optional string. It shall be the test suite
2486    description.
2487
2488test-includes
2489    The attribute value shall be a list of strings. It shall be a list of
2490    header files included via ``#include <...>``.
2491
2492test-local-includes
2493    The attribute value shall be a list of strings. It shall be a list of
2494    header files included via ``#include "..."``.
2495
2496test-suite-name
2497    The attribute value shall be a string. It shall be the name of the test
2498    suite.
2499
2500test-target
2501    The attribute value shall be a string. It shall be the path to the
2502    generated target test suite source file.
2503
2504.. _ReqEngSpecificationAttributeSetsAndValueTypes:
2505
2506Specification Attribute Sets and Value Types
2507--------------------------------------------
2508
2509.. _SpecTypeActionRequirementBooleanExpression:
2510
2511Action Requirement Boolean Expression
2512^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2513
2514A value of this type is a boolean expression.
2515
2516A value of this type shall be of one of the following variants:
2517
2518* The value may be a set of attributes. Each attribute defines an operator.
2519  Exactly one of the explicit attributes shall be specified. The explicit
2520  attributes for this type are:
2521
2522  and
2523      The attribute value shall be a list. Each list element shall be an
2524      :ref:`SpecTypeActionRequirementBooleanExpression`. The *and* operator
2525      evaluates to the *logical and* of the evaluation results of the
2526      expressions in the list.
2527
2528  not
2529      The attribute value shall be an
2530      :ref:`SpecTypeActionRequirementBooleanExpression`. The *not* operator
2531      evaluates to the *logical not* of the evaluation results of the
2532      expression.
2533
2534  or
2535      The attribute value shall be a list. Each list element shall be an
2536      :ref:`SpecTypeActionRequirementBooleanExpression`. The *or* operator
2537      evaluates to the *logical or* of the evaluation results of the
2538      expressions in the list.
2539
2540  post-conditions
2541      The attribute value shall be an
2542      :ref:`SpecTypeActionRequirementExpressionConditionSet`. The
2543      *post-conditions* operator evaluates to true, if the post-condition
2544      states of the associated transition are contained in the specified
2545      post-condition set, otherwise to false.
2546
2547  pre-conditions
2548      The attribute value shall be an
2549      :ref:`SpecTypeActionRequirementExpressionConditionSet`. The
2550      *pre-conditions* operator evaluates to true, if the pre-condition states
2551      of the associated transition are contained in the specified pre-condition
2552      set, otherwise to false.
2553
2554* The value may be a list. Each list element shall be an
2555  :ref:`SpecTypeActionRequirementBooleanExpression`. This list of expressions
2556  evaluates to the *logical or* of the evaluation results of the expressions in
2557  the list.
2558
2559This type is used by the following types:
2560
2561* :ref:`SpecTypeActionRequirementBooleanExpression`
2562
2563* :ref:`SpecTypeActionRequirementExpression`
2564
2565.. _SpecTypeActionRequirementCondition:
2566
2567Action Requirement Condition
2568^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2569
2570This set of attributes defines an action pre-condition or post-condition. All
2571explicit attributes shall be specified. The explicit attributes for this type
2572are:
2573
2574name
2575    The attribute value shall be an :ref:`SpecTypeActionRequirementName`.
2576
2577states
2578    The attribute value shall be a list. Each list element shall be an
2579    :ref:`SpecTypeActionRequirementState`.
2580
2581test-epilogue
2582    The attribute value shall be an optional string. If the value is present,
2583    then it shall be the test epilogue code. The epilogue code is placed in the
2584    test condition preparation or check before the state-specific code.  The
2585    code may use a local variable ``ctx`` which points to the test context, see
2586    :ref:`SpecTypeTestContextMember`.
2587
2588test-prologue
2589    The attribute value shall be an optional string. If the value is present,
2590    then it shall be the test prologue code. The prologue code is placed in the
2591    test condition preparation or check after the state-specific code.  The
2592    code may use a local variable ``ctx`` which points to the test context, see
2593    :ref:`SpecTypeTestContextMember`.
2594
2595This type is used by the following types:
2596
2597* :ref:`SpecTypeActionRequirementItemType`
2598
2599.. _SpecTypeActionRequirementExpression:
2600
2601Action Requirement Expression
2602^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2603
2604This set of attributes defines an expression which may define the state of a
2605post-condition.  The ``else`` and ``specified-by`` shall be used individually.
2606The ``if`` and ``then`` or ``then-specified-by`` expressions shall be used
2607together. At least one of the explicit attributes shall be specified. The
2608explicit attributes for this type are:
2609
2610else
2611    The attribute value shall be an
2612    :ref:`SpecTypeActionRequirementExpressionStateName`. It shall be the name
2613    of the state of the post-condition.
2614
2615if
2616    The attribute value shall be an
2617    :ref:`SpecTypeActionRequirementBooleanExpression`. If the boolean
2618    expression evaluates to true, then the state is defined according to the
2619    ``then`` attribute value.
2620
2621specified-by
2622    The attribute value shall be an :ref:`SpecTypeActionRequirementName`. It
2623    shall be the name of a pre-condition.  The name of the state of the
2624    pre-condition in the associated transition defines the name of the state of
2625    the post-condition.
2626
2627then
2628    The attribute value shall be an
2629    :ref:`SpecTypeActionRequirementExpressionStateName`. It shall be the name
2630    of the state of the post-condition.
2631
2632then-specified-by
2633    The attribute value shall be an :ref:`SpecTypeActionRequirementName`. It
2634    shall be the name of a pre-condition.  The name of the state of the
2635    pre-condition in the associated transition defines the name of the state of
2636    the post-condition.
2637
2638.. _SpecTypeActionRequirementExpressionConditionSet:
2639
2640Action Requirement Expression Condition Set
2641^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2642
2643This set of attributes defines for the specified conditions a set of states.
2644Generic attributes may be specified. Each generic attribute key shall be an
2645:ref:`SpecTypeActionRequirementName`. Each generic attribute value shall be an
2646:ref:`SpecTypeActionRequirementExpressionStateSet`. There shall be at most one
2647generic attribute key for each condition. The key name shall be the condition
2648name.  The value of each generic attribute shall be a set of states of the
2649condition.
2650
2651This type is used by the following types:
2652
2653* :ref:`SpecTypeActionRequirementBooleanExpression`
2654
2655.. _SpecTypeActionRequirementExpressionStateName:
2656
2657Action Requirement Expression State Name
2658^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2659
2660The value shall be a string. It shall be the name of a state of the condition
2661or ``N/A`` if the condition is not applicable. The value
2662
2663* shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``",
2664
2665* or, shall be equal to "``N/A``".
2666
2667This type is used by the following types:
2668
2669* :ref:`SpecTypeActionRequirementExpression`
2670
2671.. _SpecTypeActionRequirementExpressionStateSet:
2672
2673Action Requirement Expression State Set
2674^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2675
2676A value of this type shall be of one of the following variants:
2677
2678* The value may be a list. Each list element shall be an
2679  :ref:`SpecTypeActionRequirementExpressionStateName`. The list defines a set
2680  of states of the condition.
2681
2682* The value may be a string. It shall be the name of a state of the condition
2683  or ``N/A`` if the condition is not applicable. The value
2684
2685  * shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``",
2686
2687  * or, shall be equal to "``N/A``".
2688
2689This type is used by the following types:
2690
2691* :ref:`SpecTypeActionRequirementExpressionConditionSet`
2692
2693.. _SpecTypeActionRequirementName:
2694
2695Action Requirement Name
2696^^^^^^^^^^^^^^^^^^^^^^^
2697
2698The value shall be a string. It shall be the name of a condition or a state of
2699a condition used to define pre-conditions and post-conditions of an action
2700requirement.  It shall be formatted in CamelCase.  It should be brief and
2701abbreviated. The rationale for this is that the names are used in tables and
2702the horizontal space is limited by the page width.  The more conditions you
2703have in an action requirement, the shorter the names should be.  The name
2704``NA`` is reserved and indicates that a condition is not applicable. The value
2705
2706* shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``",
2707
2708* and, shall be not equal to "``NA``".
2709
2710This type is used by the following types:
2711
2712* :ref:`SpecTypeActionRequirementCondition`
2713
2714* :ref:`SpecTypeActionRequirementExpressionConditionSet`
2715
2716* :ref:`SpecTypeActionRequirementExpression`
2717
2718* :ref:`SpecTypeActionRequirementSkipReasons`
2719
2720* :ref:`SpecTypeActionRequirementState`
2721
2722* :ref:`SpecTypeActionRequirementTransitionPostConditions`
2723
2724* :ref:`SpecTypeActionRequirementTransitionPreConditions`
2725
2726.. _SpecTypeActionRequirementSkipReasons:
2727
2728Action Requirement Skip Reasons
2729^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2730
2731This set of attributes specifies skip reasons used to justify why transitions
2732in the transition map are skipped. Generic attributes may be specified. Each
2733generic attribute key shall be an :ref:`SpecTypeActionRequirementName`. Each
2734generic attribute value shall be a string. The key defines the name of a skip
2735reason.  The name can be used in
2736:ref:`SpecTypeActionRequirementTransitionPostConditions` to skip the
2737corresponding transitions.  The value shall give a reason why the transitions
2738are skipped.
2739
2740This type is used by the following types:
2741
2742* :ref:`SpecTypeActionRequirementItemType`
2743
2744.. _SpecTypeActionRequirementState:
2745
2746Action Requirement State
2747^^^^^^^^^^^^^^^^^^^^^^^^
2748
2749This set of attributes defines an action pre-condition or post-condition state.
2750All explicit attributes shall be specified. The explicit attributes for this
2751type are:
2752
2753name
2754    The attribute value shall be an :ref:`SpecTypeActionRequirementName`.
2755
2756test-code
2757    The attribute value shall be a string. It shall be the test code to prepare
2758    or check the state of the condition.  The code may use a local variable
2759    ``ctx`` which points to the test context, see
2760    :ref:`SpecTypeTestContextMember`.
2761
2762text
2763    The attribute value shall be a :ref:`SpecTypeRequirementText`. It shall
2764    define the state of the condition.
2765
2766This type is used by the following types:
2767
2768* :ref:`SpecTypeActionRequirementCondition`
2769
2770.. _SpecTypeActionRequirementTransition:
2771
2772Action Requirement Transition
2773^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2774
2775This set of attributes defines the transition from multiple sets of states of
2776pre-conditions to a set of states of post-conditions through an action in an
2777action requirement.  The ability to specify multiple sets of states of
2778pre-conditions which result in a common set of post-conditions may allow a more
2779compact specification of the transition map.  For example, let us suppose you
2780want to specify the action of a function with a pointer parameter.  The
2781function performs an early check that the pointer is NULL and in this case
2782returns an error code.  The pointer condition dominates the action outcome if
2783the pointer is NULL.  Other pre-condition states can be simply set to ``all``
2784for this transition. All explicit attributes shall be specified. The explicit
2785attributes for this type are:
2786
2787enabled-by
2788    The attribute value shall be an :ref:`SpecTypeEnabledByExpression`. The
2789    transition map may be customized to support configuration variants through
2790    this attribute.  The default transitions (``enabled-by: true``) shall be
2791    specified before the customized variants in the list.
2792
2793post-conditions
2794    The attribute value shall be an
2795    :ref:`SpecTypeActionRequirementTransitionPostConditions`.
2796
2797pre-conditions
2798    The attribute value shall be an
2799    :ref:`SpecTypeActionRequirementTransitionPreConditions`.
2800
2801This type is used by the following types:
2802
2803* :ref:`SpecTypeActionRequirementItemType`
2804
2805.. _SpecTypeActionRequirementTransitionPostConditionState:
2806
2807Action Requirement Transition Post-Condition State
2808^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2809
2810A value of this type shall be of one of the following variants:
2811
2812* The value may be a list. Each list element shall be an
2813  :ref:`SpecTypeActionRequirementExpression`. The list contains expressions to
2814  define the state of the corresponding post-condition.
2815
2816* The value may be a string. It shall be the name of a state of the
2817  corresponding post-condition or ``N/A`` if the post-condition is not
2818  applicable. The value
2819
2820  * shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``",
2821
2822  * or, shall be equal to "``N/A``".
2823
2824This type is used by the following types:
2825
2826* :ref:`SpecTypeActionRequirementTransitionPostConditions`
2827
2828.. _SpecTypeActionRequirementTransitionPostConditions:
2829
2830Action Requirement Transition Post-Conditions
2831^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2832
2833A value of this type shall be of one of the following variants:
2834
2835* The value may be a set of attributes. This set of attributes defines for each
2836  post-condition the state after the action for a transition in an action
2837  requirement. Generic attributes may be specified. Each generic attribute key
2838  shall be an :ref:`SpecTypeActionRequirementName`. Each generic attribute
2839  value shall be an
2840  :ref:`SpecTypeActionRequirementTransitionPostConditionState`. There shall be
2841  exactly one generic attribute key for each post-condition.  The key name
2842  shall be the post-condition name.  The value of each generic attribute shall
2843  be the state of the post-condition or ``N/A`` if the post-condition is not
2844  applicable.
2845
2846* The value may be a string. It shall be the name of a skip reason.  If a skip
2847  reason is given instead of a listing of post-condition states, then this
2848  transition is skipped and no test code runs for this transition. The value
2849
2850  * shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``",
2851
2852  * and, shall be not equal to "``NA``".
2853
2854This type is used by the following types:
2855
2856* :ref:`SpecTypeActionRequirementTransition`
2857
2858.. _SpecTypeActionRequirementTransitionPreConditionStateSet:
2859
2860Action Requirement Transition Pre-Condition State Set
2861^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2862
2863A value of this type shall be of one of the following variants:
2864
2865* The value may be a list. Each list element shall be an
2866  :ref:`SpecTypeActionRequirementName`. The list defines the set of states of
2867  the pre-condition in the transition.
2868
2869* The value may be a string. The value ``all`` represents all states of the
2870  pre-condition in this transition.  The value ``N/A`` marks the pre-condition
2871  as not applicable in this transition. The value shall be an element of
2872
2873  * "``all``", and
2874
2875  * "``N/A``".
2876
2877This type is used by the following types:
2878
2879* :ref:`SpecTypeActionRequirementTransitionPreConditions`
2880
2881.. _SpecTypeActionRequirementTransitionPreConditions:
2882
2883Action Requirement Transition Pre-Conditions
2884^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2885
2886A value of this type shall be of one of the following variants:
2887
2888* The value may be a set of attributes. This set of attributes defines for each
2889  pre-condition the set of states before the action for a transition in an
2890  action requirement. Generic attributes may be specified. Each generic
2891  attribute key shall be an :ref:`SpecTypeActionRequirementName`. Each generic
2892  attribute value shall be an
2893  :ref:`SpecTypeActionRequirementTransitionPreConditionStateSet`. There shall
2894  be exactly one generic attribute key for each pre-condition.  The key name
2895  shall be the pre-condition name.  The value of each generic attribute shall
2896  be a set of states of the pre-condition.
2897
2898* The value may be a string. If this name is specified instead of explicit
2899  pre-condition states, then the post-condition states of this entry are used
2900  to define all remaining transitions of the map. The value shall be equal to
2901  "``default``".
2902
2903This type is used by the following types:
2904
2905* :ref:`SpecTypeActionRequirementTransition`
2906
2907.. _SpecTypeApplicationConfigurationOptionName:
2908
2909Application Configuration Option Name
2910^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2911
2912The value shall be a string. It shall be the name of an application
2913configuration option. The value shall match with the regular expression
2914"``^(CONFIGURE_|BSP_)[A-Z0-9_]+$``".
2915
2916This type is used by the following types:
2917
2918* :ref:`SpecTypeApplicationConfigurationOptionItemType`
2919
2920.. _SpecTypeBooleanOrIntegerOrString:
2921
2922Boolean or Integer or String
2923^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2924
2925A value of this type shall be of one of the following variants:
2926
2927* The value may be a boolean.
2928
2929* The value may be an integer number.
2930
2931* The value may be a string.
2932
2933This type is used by the following types:
2934
2935* :ref:`SpecTypeBuildOptionAction`
2936
2937* :ref:`SpecTypeInterfaceReturnValue`
2938
2939.. _SpecTypeBuildAssemblerOption:
2940
2941Build Assembler Option
2942^^^^^^^^^^^^^^^^^^^^^^
2943
2944The value shall be a string. It shall be an option for the assembler.  The
2945options are used to assemble the sources of this item.  The options defined by
2946this attribute succeed the options presented to the item by the build item
2947context.
2948
2949This type is used by the following types:
2950
2951* :ref:`SpecTypeBuildScriptItemType`
2952
2953* :ref:`SpecTypeBuildStartFileItemType`
2954
2955.. _SpecTypeBuildCCompilerOption:
2956
2957Build C Compiler Option
2958^^^^^^^^^^^^^^^^^^^^^^^
2959
2960The value shall be a string. It shall be an option for the C compiler.  The
2961options are used to compile the sources of this item.  The options defined by
2962this attribute succeed the options presented to the item by the build item
2963context.
2964
2965This type is used by the following types:
2966
2967* :ref:`SpecTypeBuildAdaTestProgramItemType`
2968
2969* :ref:`SpecTypeBuildBSPItemType`
2970
2971* :ref:`SpecTypeBuildGroupItemType`
2972
2973* :ref:`SpecTypeBuildLibraryItemType`
2974
2975* :ref:`SpecTypeBuildObjectsItemType`
2976
2977* :ref:`SpecTypeBuildOptionCCompilerCheckAction`
2978
2979* :ref:`SpecTypeBuildScriptItemType`
2980
2981* :ref:`SpecTypeBuildTestProgramItemType`
2982
2983.. _SpecTypeBuildCPreprocessorOption:
2984
2985Build C Preprocessor Option
2986^^^^^^^^^^^^^^^^^^^^^^^^^^^
2987
2988The value shall be a string. It shall be an option for the C preprocessor.  The
2989options are used to preprocess the sources of this item.  The options defined
2990by this attribute succeed the options presented to the item by the build item
2991context.
2992
2993This type is used by the following types:
2994
2995* :ref:`SpecTypeBuildAdaTestProgramItemType`
2996
2997* :ref:`SpecTypeBuildBSPItemType`
2998
2999* :ref:`SpecTypeBuildGroupItemType`
3000
3001* :ref:`SpecTypeBuildLibraryItemType`
3002
3003* :ref:`SpecTypeBuildObjectsItemType`
3004
3005* :ref:`SpecTypeBuildScriptItemType`
3006
3007* :ref:`SpecTypeBuildStartFileItemType`
3008
3009* :ref:`SpecTypeBuildTestProgramItemType`
3010
3011.. _SpecTypeBuildCXXCompilerOption:
3012
3013Build C++ Compiler Option
3014^^^^^^^^^^^^^^^^^^^^^^^^^
3015
3016The value shall be a string. It shall be an option for the C++ compiler.  The
3017options are used to compile the sources of this item.  The options defined by
3018this attribute succeed the options presented to the item by the build item
3019context.
3020
3021This type is used by the following types:
3022
3023* :ref:`SpecTypeBuildAdaTestProgramItemType`
3024
3025* :ref:`SpecTypeBuildGroupItemType`
3026
3027* :ref:`SpecTypeBuildLibraryItemType`
3028
3029* :ref:`SpecTypeBuildObjectsItemType`
3030
3031* :ref:`SpecTypeBuildOptionCXXCompilerCheckAction`
3032
3033* :ref:`SpecTypeBuildScriptItemType`
3034
3035* :ref:`SpecTypeBuildTestProgramItemType`
3036
3037.. _SpecTypeBuildDependencyLinkRole:
3038
3039Build Dependency Link Role
3040^^^^^^^^^^^^^^^^^^^^^^^^^^
3041
3042This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
3043value is ``build-dependency``. It defines the build dependency role of links.
3044
3045.. _SpecTypeBuildIncludePath:
3046
3047Build Include Path
3048^^^^^^^^^^^^^^^^^^
3049
3050The value shall be a string. It shall be a path to header files.  The path is
3051used by the C preprocessor to search for header files.  It succeeds the
3052includes presented to the item by the build item context.  For an
3053:ref:`SpecTypeBuildGroupItemType` item the includes are visible to all items
3054referenced by the group item.  For :ref:`SpecTypeBuildBSPItemType`,
3055:ref:`SpecTypeBuildObjectsItemType`, :ref:`SpecTypeBuildLibraryItemType`,
3056:ref:`SpecTypeBuildStartFileItemType`, and
3057:ref:`SpecTypeBuildTestProgramItemType` items the includes are only visible to
3058the sources specified by the item itself and they do not propagate to
3059referenced items.
3060
3061This type is used by the following types:
3062
3063* :ref:`SpecTypeBuildAdaTestProgramItemType`
3064
3065* :ref:`SpecTypeBuildBSPItemType`
3066
3067* :ref:`SpecTypeBuildGroupItemType`
3068
3069* :ref:`SpecTypeBuildLibraryItemType`
3070
3071* :ref:`SpecTypeBuildObjectsItemType`
3072
3073* :ref:`SpecTypeBuildScriptItemType`
3074
3075* :ref:`SpecTypeBuildStartFileItemType`
3076
3077* :ref:`SpecTypeBuildTestProgramItemType`
3078
3079.. _SpecTypeBuildInstallDirective:
3080
3081Build Install Directive
3082^^^^^^^^^^^^^^^^^^^^^^^
3083
3084This set of attributes specifies files installed by a build item. All explicit
3085attributes shall be specified. The explicit attributes for this type are:
3086
3087destination
3088    The attribute value shall be a string. It shall be the install destination
3089    directory.
3090
3091source
3092    The attribute value shall be a list of strings. It shall be the list of
3093    source files to be installed in the destination directory.  The path to a
3094    source file shall be relative to the directory of the :file:`wscript`.
3095
3096This type is used by the following types:
3097
3098* :ref:`SpecTypeBuildBSPItemType`
3099
3100* :ref:`SpecTypeBuildGroupItemType`
3101
3102* :ref:`SpecTypeBuildLibraryItemType`
3103
3104* :ref:`SpecTypeBuildObjectsItemType`
3105
3106.. _SpecTypeBuildInstallPath:
3107
3108Build Install Path
3109^^^^^^^^^^^^^^^^^^
3110
3111A value of this type shall be of one of the following variants:
3112
3113* There may be no value (null).
3114
3115* The value may be a string. It shall be the installation path of a
3116  :ref:`SpecTypeBuildTarget`.
3117
3118This type is used by the following types:
3119
3120* :ref:`SpecTypeBuildConfigurationFileItemType`
3121
3122* :ref:`SpecTypeBuildConfigurationHeaderItemType`
3123
3124* :ref:`SpecTypeBuildLibraryItemType`
3125
3126* :ref:`SpecTypeBuildStartFileItemType`
3127
3128.. _SpecTypeBuildLinkStaticLibraryDirective:
3129
3130Build Link Static Library Directive
3131^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3132
3133The value shall be a string. It shall be an external static library identifier.
3134The library is used to link programs referenced by this item, e.g. ``m`` for
3135``libm.a``.  The library is added to the build command through the ``stlib``
3136attribute. It shall not be used for internal static libraries.  Internal static
3137libraries shall be specified through the ``use-after`` and ``use-before``
3138attributes to enable a proper build dependency tracking.
3139
3140This type is used by the following types:
3141
3142* :ref:`SpecTypeBuildAdaTestProgramItemType`
3143
3144* :ref:`SpecTypeBuildScriptItemType`
3145
3146* :ref:`SpecTypeBuildTestProgramItemType`
3147
3148.. _SpecTypeBuildLinkerOption:
3149
3150Build Linker Option
3151^^^^^^^^^^^^^^^^^^^
3152
3153The value shall be a string. It shall be an option for the linker.  The options
3154are used to link executables.  The options defined by this attribute succeed
3155the options presented to the item by the build item context.
3156
3157This type is used by the following types:
3158
3159* :ref:`SpecTypeBuildAdaTestProgramItemType`
3160
3161* :ref:`SpecTypeBuildScriptItemType`
3162
3163* :ref:`SpecTypeBuildTestProgramItemType`
3164
3165.. _SpecTypeBuildOptionAction:
3166
3167Build Option Action
3168^^^^^^^^^^^^^^^^^^^
3169
3170This set of attributes specifies a build option action. Exactly one of the
3171explicit attributes shall be specified. The explicit attributes for this type
3172are:
3173
3174append-test-cppflags
3175    The attribute value shall be a string. It shall be the name of a test
3176    program.  The action appends the action value to the ``CPPFLAGS`` of the
3177    test program.  The name shall correspond to the name of a
3178    :ref:`SpecTypeBuildTestProgramItemType` item. Due to the processing order
3179    of items, there is no way to check if the name specified by the attribute
3180    value is valid.
3181
3182assert-aligned
3183    The attribute value shall be an integer number. The action asserts that the
3184    action value is aligned according to the attribute value.
3185
3186assert-eq
3187    The attribute value shall be a :ref:`SpecTypeBooleanOrIntegerOrString`. The
3188    action asserts that the action value is equal to the attribute value.
3189
3190assert-ge
3191    The attribute value shall be an :ref:`SpecTypeIntegerOrString`. The action
3192    asserts that the action value is greater than or equal to the attribute
3193    value.
3194
3195assert-gt
3196    The attribute value shall be an :ref:`SpecTypeIntegerOrString`. The action
3197    asserts that the action value is greater than the attribute value.
3198
3199assert-int16
3200    The attribute shall have no value. The action asserts that the action value
3201    is a valid signed 16-bit integer.
3202
3203assert-int32
3204    The attribute shall have no value. The action asserts that the action value
3205    is a valid signed 32-bit integer.
3206
3207assert-int64
3208    The attribute shall have no value. The action asserts that the action value
3209    is a valid signed 64-bit integer.
3210
3211assert-int8
3212    The attribute shall have no value. The action asserts that the action value
3213    is a valid signed 8-bit integer.
3214
3215assert-le
3216    The attribute value shall be an :ref:`SpecTypeIntegerOrString`. The action
3217    asserts that the action value is less than or equal to the attribute value.
3218
3219assert-lt
3220    The attribute value shall be an :ref:`SpecTypeIntegerOrString`. The action
3221    asserts that the action value is less than the attribute value.
3222
3223assert-ne
3224    The attribute value shall be a :ref:`SpecTypeBooleanOrIntegerOrString`. The
3225    action asserts that the action value is not equal to the attribute value.
3226
3227assert-power-of-two
3228    The attribute shall have no value. The action asserts that the action value
3229    is a power of two.
3230
3231assert-uint16
3232    The attribute shall have no value. The action asserts that the action value
3233    is a valid unsigned 16-bit integer.
3234
3235assert-uint32
3236    The attribute shall have no value. The action asserts that the action value
3237    is a valid unsigned 32-bit integer.
3238
3239assert-uint64
3240    The attribute shall have no value. The action asserts that the action value
3241    is a valid unsigned 64-bit integer.
3242
3243assert-uint8
3244    The attribute shall have no value. The action asserts that the action value
3245    is a valid unsigned 8-bit integer.
3246
3247check-cc
3248    The attribute value shall be a
3249    :ref:`SpecTypeBuildOptionCCompilerCheckAction`.
3250
3251check-cxx
3252    The attribute value shall be a
3253    :ref:`SpecTypeBuildOptionCXXCompilerCheckAction`.
3254
3255define
3256    The attribute value shall be an optional string. The action adds a define
3257    to the configuration set.  If the attribute value is present, then it is
3258    used as the name of the define, otherwise the ``name`` of the item is used.
3259    The value of the define is the action value.  If the action value is a
3260    string, then it is quoted.
3261
3262define-condition
3263    The attribute value shall be an optional string. The action adds a
3264    conditional define to the configuration set.  If the attribute value is
3265    present, then it is used as the name of the define, otherwise the ``name``
3266    of the item is used.  The value of the define is the action value.
3267
3268define-unquoted
3269    The attribute value shall be an optional string. The action adds a define
3270    to the configuration set.  If the attribute value is present, then it is
3271    used as the name of the define, otherwise the ``name`` of the item is used.
3272    The value of the define is the action value.  If the action value is a
3273    string, then it is not quoted.
3274
3275env-append
3276    The attribute value shall be an optional string. The action appends the
3277    action value to an environment of the configuration set.  If the attribute
3278    value is present, then it is used as the name of the environment variable,
3279    otherwise the ``name`` of the item is used.
3280
3281env-assign
3282    The attribute value shall be an optional string. The action assigns the
3283    action value to an environment of the configuration set.  If the attribute
3284    value is present, then it is used as the name of the environment variable,
3285    otherwise the ``name`` of the item is used.
3286
3287env-enable
3288    The attribute value shall be an optional string. If the action value is
3289    true, then a name is appended to the ``ENABLE`` environment variable of the
3290    configuration set.  If the attribute value is present, then it is used as
3291    the name, otherwise the ``name`` of the item is used.
3292
3293find-program
3294    The attribute shall have no value. The action tries to find the program
3295    specified by the action value. Uses the ``${PATH}`` to find the program.
3296    Returns the result of the find operation, e.g. a path to the program.
3297
3298find-tool
3299    The attribute shall have no value. The action tries to find the tool
3300    specified by the action value. Uses the tool paths specified by the
3301    ``--rtems-tools`` command line option.  Returns the result of the find
3302    operation, e.g. a path to the program.
3303
3304format-and-define
3305    The attribute value shall be an optional string. The action adds a define
3306    to the configuration set.  If the attribute value is present, then it is
3307    used as the name of the define, otherwise the ``name`` of the item is used.
3308    The value of the define is the action value.  The value is formatted
3309    according to the ``format`` attribute value.
3310
3311get-boolean
3312    The attribute shall have no value. The action gets the action value for
3313    subsequent actions from a configuration file variable named by the items
3314    ``name`` attribute. If no such variable exists in the configuration file,
3315    then the default value is used.  The value is converted to a boolean.
3316
3317get-env
3318    The attribute value shall be a string. The action gets the action value for
3319    subsequent actions from the environment variable of the configuration set
3320    named by the attribute value.
3321
3322get-integer
3323    The attribute shall have no value. The action gets the action value for
3324    subsequent actions from a configuration file variable named by the items
3325    ``name`` attribute. If no such variable exists in the configuration file,
3326    then the default value is used.  The value is converted to an integer.
3327
3328get-string
3329    The attribute shall have no value. The action gets the action value for
3330    subsequent actions from a configuration file variable named by the items
3331    ``name`` attribute. If no such variable exists in the configuration file,
3332    then the default value is used.  The value is converted to a string.
3333
3334get-string-command-line
3335    The attribute value shall be a string. The action gets the action value for
3336    subsequent actions from the value of a command line option named by the
3337    items ``name`` attribute. If no such command line option is present, then
3338    the attribute value is used.  The value is converted to a string.
3339
3340script
3341    The attribute value shall be a string. The action executes the attribute
3342    value with the Python ``eval()`` function in the context of the script
3343    action handler.
3344
3345set-test-state
3346    The attribute value shall be a
3347    :ref:`SpecTypeBuildOptionSetTestStateAction`.
3348
3349set-value
3350    The attribute value shall be a :ref:`SpecTypeBuildOptionValue`. The action
3351    sets the action value for subsequent actions to the attribute value.
3352
3353split
3354    The attribute shall have no value. The action splits the action value.
3355
3356substitute
3357    The attribute shall have no value. The action performs a ``${VARIABLE}``
3358    substitution on the action value.  Use ``$$`` for a plain ``$`` character.
3359
3360This type is used by the following types:
3361
3362* :ref:`SpecTypeBuildOptionItemType`
3363
3364.. _SpecTypeBuildOptionCCompilerCheckAction:
3365
3366Build Option C Compiler Check Action
3367^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3368
3369This set of attributes specifies a check done using the C compiler. All
3370explicit attributes shall be specified. The explicit attributes for this type
3371are:
3372
3373cflags
3374    The attribute value shall be a list. Each list element shall be a
3375    :ref:`SpecTypeBuildCCompilerOption`.
3376
3377fragment
3378    The attribute value shall be a string. It shall be a code fragment used to
3379    check the availability of a certain feature through compilation with the C
3380    compiler.  The resulting object is not linked to an executable.
3381
3382message
3383    The attribute value shall be a string. It shall be a description of the
3384    feature to check.
3385
3386This type is used by the following types:
3387
3388* :ref:`SpecTypeBuildOptionAction`
3389
3390.. _SpecTypeBuildOptionCXXCompilerCheckAction:
3391
3392Build Option C++ Compiler Check Action
3393^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3394
3395This set of attributes specifies a check done using the C++ compiler. All
3396explicit attributes shall be specified. The explicit attributes for this type
3397are:
3398
3399cxxflags
3400    The attribute value shall be a list. Each list element shall be a
3401    :ref:`SpecTypeBuildCXXCompilerOption`.
3402
3403fragment
3404    The attribute value shall be a string. It shall be a code fragment used to
3405    check the availability of a certain feature through compilation with the
3406    C++ compiler.  The resulting object is not linked to an executable.
3407
3408message
3409    The attribute value shall be a string. It shall be a description of the
3410    feature to check.
3411
3412This type is used by the following types:
3413
3414* :ref:`SpecTypeBuildOptionAction`
3415
3416.. _SpecTypeBuildOptionDefaultValue:
3417
3418Build Option Default Value
3419^^^^^^^^^^^^^^^^^^^^^^^^^^
3420
3421This set of attributes specifies a build option default value. All explicit
3422attributes shall be specified. The explicit attributes for this type are:
3423
3424enabled-by
3425    The attribute value shall be an :ref:`SpecTypeEnabledByExpression`.
3426
3427value
3428    The attribute value shall be a :ref:`SpecTypeBuildOptionValue`. Its value
3429    shall be the default value for the associated enabled-by expression.
3430
3431This type is used by the following types:
3432
3433* :ref:`SpecTypeBuildOptionItemType`
3434
3435.. _SpecTypeBuildOptionName:
3436
3437Build Option Name
3438^^^^^^^^^^^^^^^^^
3439
3440The value shall be a string. It shall be the name of the build option. The
3441value shall match with the regular expression "``^[a-zA-Z_][a-zA-Z0-9_]*$``".
3442
3443This type is used by the following types:
3444
3445* :ref:`SpecTypeBuildOptionItemType`
3446
3447.. _SpecTypeBuildOptionSetTestStateAction:
3448
3449Build Option Set Test State Action
3450^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3451
3452This set of attributes specifies the test state for a set of test programs with
3453an optional reason. All explicit attributes shall be specified. The explicit
3454attributes for this type are:
3455
3456reason
3457    The attribute value shall be an optional string. If the value is present,
3458    then it shall be the reason for the test state definition.
3459
3460state
3461    The attribute value shall be a :ref:`SpecTypeBuildTestState`. It shall be
3462    the test state for the associated list of tests.
3463
3464tests
3465    The attribute value shall be a list of strings. It shall be the list of
3466    test program names associated with the test state.  The names shall
3467    correspond to the name of a :ref:`SpecTypeBuildTestProgramItemType` or
3468    :ref:`SpecTypeBuildAdaTestProgramItemType` item.  Due to the processing
3469    order of items, there is no way to check if a specified test program name
3470    is valid.
3471
3472This type is used by the following types:
3473
3474* :ref:`SpecTypeBuildOptionAction`
3475
3476.. _SpecTypeBuildOptionValue:
3477
3478Build Option Value
3479^^^^^^^^^^^^^^^^^^
3480
3481A value of this type shall be of one of the following variants:
3482
3483* The value may be a boolean.
3484
3485* The value may be an integer number.
3486
3487* The value may be a list. Each list element shall be a string.
3488
3489* There may be no value (null).
3490
3491* The value may be a string.
3492
3493This type is used by the following types:
3494
3495* :ref:`SpecTypeBuildOptionAction`
3496
3497* :ref:`SpecTypeBuildOptionDefaultValue`
3498
3499.. _SpecTypeBuildSource:
3500
3501Build Source
3502^^^^^^^^^^^^
3503
3504The value shall be a string. It shall be a source file.  The path to a source
3505file shall be relative to the directory of the :file:`wscript`.
3506
3507This type is used by the following types:
3508
3509* :ref:`SpecTypeBuildAdaTestProgramItemType`
3510
3511* :ref:`SpecTypeBuildBSPItemType`
3512
3513* :ref:`SpecTypeBuildLibraryItemType`
3514
3515* :ref:`SpecTypeBuildObjectsItemType`
3516
3517* :ref:`SpecTypeBuildStartFileItemType`
3518
3519* :ref:`SpecTypeBuildTestProgramItemType`
3520
3521.. _SpecTypeBuildTarget:
3522
3523Build Target
3524^^^^^^^^^^^^
3525
3526The value shall be a string. It shall be the target file path.  The path to the
3527target file shall be relative to the directory of the :file:`wscript`.  The
3528target file is located in the build tree.
3529
3530This type is used by the following types:
3531
3532* :ref:`SpecTypeBuildAdaTestProgramItemType`
3533
3534* :ref:`SpecTypeBuildConfigurationFileItemType`
3535
3536* :ref:`SpecTypeBuildConfigurationHeaderItemType`
3537
3538* :ref:`SpecTypeBuildLibraryItemType`
3539
3540* :ref:`SpecTypeBuildStartFileItemType`
3541
3542* :ref:`SpecTypeBuildTestProgramItemType`
3543
3544.. _SpecTypeBuildTestState:
3545
3546Build Test State
3547^^^^^^^^^^^^^^^^
3548
3549The value shall be a string. This string defines a test state. The value shall
3550be an element of
3551
3552* "``benchmark``",
3553
3554* "``exclude``",
3555
3556* "``expected-fail``",
3557
3558* "``indeterminate``", and
3559
3560* "``user-input``".
3561
3562This type is used by the following types:
3563
3564* :ref:`SpecTypeBuildOptionSetTestStateAction`
3565
3566.. _SpecTypeBuildUseAfterDirective:
3567
3568Build Use After Directive
3569^^^^^^^^^^^^^^^^^^^^^^^^^
3570
3571The value shall be a string. It shall be an internal static library identifier.
3572The library is used to link programs referenced by this item, e.g. ``z`` for
3573``libz.a``.  The library is placed after the use items of the build item
3574context.
3575
3576This type is used by the following types:
3577
3578* :ref:`SpecTypeBuildAdaTestProgramItemType`
3579
3580* :ref:`SpecTypeBuildGroupItemType`
3581
3582* :ref:`SpecTypeBuildScriptItemType`
3583
3584* :ref:`SpecTypeBuildTestProgramItemType`
3585
3586.. _SpecTypeBuildUseBeforeDirective:
3587
3588Build Use Before Directive
3589^^^^^^^^^^^^^^^^^^^^^^^^^^
3590
3591The value shall be a string. It shall be an internal static library identifier.
3592The library is used to link programs referenced by this item, e.g. ``z`` for
3593``libz.a``.  The library is placed before the use items of the build item
3594context.
3595
3596This type is used by the following types:
3597
3598* :ref:`SpecTypeBuildAdaTestProgramItemType`
3599
3600* :ref:`SpecTypeBuildGroupItemType`
3601
3602* :ref:`SpecTypeBuildScriptItemType`
3603
3604* :ref:`SpecTypeBuildTestProgramItemType`
3605
3606.. _SpecTypeConstraintLinkRole:
3607
3608Constraint Link Role
3609^^^^^^^^^^^^^^^^^^^^
3610
3611This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
3612value is ``constraint``. It defines the constraint role of links.  The link
3613target shall be a constraint.
3614
3615.. _SpecTypeCopyright:
3616
3617Copyright
3618^^^^^^^^^
3619
3620The value shall be a string. It shall be a copyright statement of a copyright
3621holder of the specification item. The value
3622
3623* shall match with the regular expression
3624  "``^\s*Copyright\s+\(C\)\s+[0-9]+,\s*[0-9]+\s+.+\s*$``",
3625
3626* or, shall match with the regular expression
3627  "``^\s*Copyright\s+\(C\)\s+[0-9]+\s+.+\s*$``",
3628
3629* or, shall match with the regular expression
3630  "``^\s*Copyright\s+\(C\)\s+.+\s*$``".
3631
3632This type is used by the following types:
3633
3634* :ref:`SpecTypeRootItemType`
3635
3636.. _SpecTypeEnabledByExpression:
3637
3638Enabled-By Expression
3639^^^^^^^^^^^^^^^^^^^^^
3640
3641A value of this type shall be an expression which defines under which
3642conditions the specification item or parts of it are enabled.  The expression
3643is evaluated with the use of an *enabled set*.  This is a set of strings which
3644indicate enabled features.
3645
3646A value of this type shall be of one of the following variants:
3647
3648* The value may be a boolean. This expression evaluates directly to the boolean
3649  value.
3650
3651* The value may be a set of attributes. Each attribute defines an operator.
3652  Exactly one of the explicit attributes shall be specified. The explicit
3653  attributes for this type are:
3654
3655  and
3656      The attribute value shall be a list. Each list element shall be an
3657      :ref:`SpecTypeEnabledByExpression`. The *and* operator evaluates to the
3658      *logical and* of the evaluation results of the expressions in the list.
3659
3660  not
3661      The attribute value shall be an :ref:`SpecTypeEnabledByExpression`. The
3662      *not* operator evaluates to the *logical not* of the evaluation results
3663      of the expression.
3664
3665  or
3666      The attribute value shall be a list. Each list element shall be an
3667      :ref:`SpecTypeEnabledByExpression`. The *or* operator evaluates to the
3668      *logical or* of the evaluation results of the expressions in the list.
3669
3670* The value may be a list. Each list element shall be an
3671  :ref:`SpecTypeEnabledByExpression`. This list of expressions evaluates to the
3672  *logical or* of the evaluation results of the expressions in the list.
3673
3674* The value may be a string. If the value is in the *enabled set*, this
3675  expression evaluates to true, otherwise to false.
3676
3677This type is used by the following types:
3678
3679* :ref:`SpecTypeActionRequirementTransition`
3680
3681* :ref:`SpecTypeBuildOptionDefaultValue`
3682
3683* :ref:`SpecTypeEnabledByExpression`
3684
3685* :ref:`SpecTypeInterfaceIncludeLinkRole`
3686
3687* :ref:`SpecTypeRootItemType`
3688
3689Please have a look at the following example:
3690
3691.. code-block:: yaml
3692
3693    enabled-by:
3694      and:
3695      - RTEMS_NETWORKING
3696      - not: RTEMS_SMP
3697
3698.. _SpecTypeFunctionImplementationLinkRole:
3699
3700Function Implementation Link Role
3701^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3702
3703This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
3704value is ``function-implementation``. It defines the function implementation
3705role of links.  It is used to indicate that a
3706:ref:`SpecTypeFunctionalRequirementItemType` item specifies parts of the
3707function.
3708
3709.. _SpecTypeGlossaryMembershipLinkRole:
3710
3711Glossary Membership Link Role
3712^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3713
3714This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
3715value is ``glossary-member``. It defines the glossary membership role of links.
3716
3717.. _SpecTypeIntegerOrString:
3718
3719Integer or String
3720^^^^^^^^^^^^^^^^^
3721
3722A value of this type shall be of one of the following variants:
3723
3724* The value may be an integer number.
3725
3726* The value may be a string.
3727
3728This type is used by the following types:
3729
3730* :ref:`SpecTypeApplicationConfigurationValueOptionItemType`
3731
3732* :ref:`SpecTypeBuildOptionAction`
3733
3734.. _SpecTypeInterfaceBriefDescription:
3735
3736Interface Brief Description
3737^^^^^^^^^^^^^^^^^^^^^^^^^^^
3738
3739A value of this type shall be of one of the following variants:
3740
3741* There may be no value (null).
3742
3743* The value may be a string. It shall be the brief description of the
3744  interface.  It should be a single sentence. The value shall not match with
3745  the regular expression "``\n\n``".
3746
3747This type is used by the following types:
3748
3749* :ref:`SpecTypeInterfaceCompoundItemType`
3750
3751* :ref:`SpecTypeInterfaceCompoundMemberDefinition`
3752
3753* :ref:`SpecTypeInterfaceDefineItemType`
3754
3755* :ref:`SpecTypeInterfaceEnumItemType`
3756
3757* :ref:`SpecTypeInterfaceEnumeratorItemType`
3758
3759* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
3760
3761* :ref:`SpecTypeInterfaceGroupItemType`
3762
3763* :ref:`SpecTypeInterfaceHeaderFileItemType`
3764
3765* :ref:`SpecTypeInterfaceTypedefItemType`
3766
3767* :ref:`SpecTypeInterfaceVariableItemType`
3768
3769.. _SpecTypeInterfaceCompoundDefinitionKind:
3770
3771Interface Compound Definition Kind
3772^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3773
3774The value shall be a string. It specifies how the interface compound is
3775defined.  It may be a typedef only, the struct or union only, or a typedef with
3776a struct or union definition. The value shall be an element of
3777
3778* "``struct-only``",
3779
3780* "``typedef-and-struct``",
3781
3782* "``typedef-and-union``",
3783
3784* "``typedef-only``", and
3785
3786* "``union-only``".
3787
3788This type is used by the following types:
3789
3790* :ref:`SpecTypeInterfaceCompoundItemType`
3791
3792.. _SpecTypeInterfaceCompoundMemberCompound:
3793
3794Interface Compound Member Compound
3795^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3796
3797This type refines the following types:
3798
3799* :ref:`SpecTypeInterfaceCompoundMemberDefinition` through the ``kind``
3800  attribute if the value is ``struct``
3801
3802* :ref:`SpecTypeInterfaceCompoundMemberDefinition` through the ``kind``
3803  attribute if the value is ``union``
3804
3805This set of attributes specifies an interface compound member compound. All
3806explicit attributes shall be specified. The explicit attributes for this type
3807are:
3808
3809definition
3810    The attribute value shall be a list. Each list element shall be an
3811    :ref:`SpecTypeInterfaceCompoundMemberDefinitionDirective`.
3812
3813.. _SpecTypeInterfaceCompoundMemberDeclaration:
3814
3815Interface Compound Member Declaration
3816^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3817
3818This type refines the :ref:`SpecTypeInterfaceCompoundMemberDefinition` through
3819the ``kind`` attribute if the value is ``member``. This set of attributes
3820specifies an interface compound member declaration. All explicit attributes
3821shall be specified. The explicit attributes for this type are:
3822
3823definition
3824    The attribute value shall be a string. It shall be the interface compound
3825    member declaration.  On the declaration a context-sensitive substitution of
3826    item variables is performed.
3827
3828.. _SpecTypeInterfaceCompoundMemberDefinition:
3829
3830Interface Compound Member Definition
3831^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3832
3833A value of this type shall be of one of the following variants:
3834
3835* The value may be a set of attributes. This set of attributes specifies an
3836  interface compound member definition. All explicit attributes shall be
3837  specified. The explicit attributes for this type are:
3838
3839  brief
3840      The attribute value shall be an :ref:`SpecTypeInterfaceBriefDescription`.
3841
3842  description
3843      The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
3844
3845  kind
3846      The attribute value shall be a string. It shall be the interface compound
3847      member kind.
3848
3849  name
3850      The attribute value shall be a string. It shall be the interface compound
3851      member name.
3852
3853* There may be no value (null).
3854
3855This type is refined by the following types:
3856
3857* :ref:`SpecTypeInterfaceCompoundMemberCompound`
3858
3859* :ref:`SpecTypeInterfaceCompoundMemberDeclaration`
3860
3861This type is used by the following types:
3862
3863* :ref:`SpecTypeInterfaceCompoundMemberDefinitionDirective`
3864
3865* :ref:`SpecTypeInterfaceCompoundMemberDefinitionVariant`
3866
3867.. _SpecTypeInterfaceCompoundMemberDefinitionDirective:
3868
3869Interface Compound Member Definition Directive
3870^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3871
3872This set of attributes specifies an interface compound member definition
3873directive. All explicit attributes shall be specified. The explicit attributes
3874for this type are:
3875
3876default
3877    The attribute value shall be an
3878    :ref:`SpecTypeInterfaceCompoundMemberDefinition`. The default definition
3879    will be used if no variant-specific definition is enabled.
3880
3881variants
3882    The attribute value shall be a list. Each list element shall be an
3883    :ref:`SpecTypeInterfaceCompoundMemberDefinitionVariant`.
3884
3885This type is used by the following types:
3886
3887* :ref:`SpecTypeInterfaceCompoundItemType`
3888
3889* :ref:`SpecTypeInterfaceCompoundMemberCompound`
3890
3891.. _SpecTypeInterfaceCompoundMemberDefinitionVariant:
3892
3893Interface Compound Member Definition Variant
3894^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3895
3896This set of attributes specifies an interface compound member definition
3897variant. All explicit attributes shall be specified. The explicit attributes
3898for this type are:
3899
3900definition
3901    The attribute value shall be an
3902    :ref:`SpecTypeInterfaceCompoundMemberDefinition`. The definition will be
3903    used if the expression defined by the ``enabled-by`` attribute evaluates to
3904    true.  In generated header files, the expression is evaluated by the C
3905    preprocessor.
3906
3907enabled-by
3908    The attribute value shall be an
3909    :ref:`SpecTypeInterfaceEnabledByExpression`.
3910
3911This type is used by the following types:
3912
3913* :ref:`SpecTypeInterfaceCompoundMemberDefinitionDirective`
3914
3915.. _SpecTypeInterfaceDefinition:
3916
3917Interface Definition
3918^^^^^^^^^^^^^^^^^^^^
3919
3920A value of this type shall be of one of the following variants:
3921
3922* There may be no value (null).
3923
3924* The value may be a string. It shall be the definition.  On the definition a
3925  context-sensitive substitution of item variables is performed.
3926
3927This type is used by the following types:
3928
3929* :ref:`SpecTypeInterfaceDefinitionDirective`
3930
3931* :ref:`SpecTypeInterfaceDefinitionVariant`
3932
3933.. _SpecTypeInterfaceDefinitionDirective:
3934
3935Interface Definition Directive
3936^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3937
3938This set of attributes specifies an interface definition directive. All
3939explicit attributes shall be specified. The explicit attributes for this type
3940are:
3941
3942default
3943    The attribute value shall be an :ref:`SpecTypeInterfaceDefinition`. The
3944    default definition will be used if no variant-specific definition is
3945    enabled.
3946
3947variants
3948    The attribute value shall be a list. Each list element shall be an
3949    :ref:`SpecTypeInterfaceDefinitionVariant`.
3950
3951This type is used by the following types:
3952
3953* :ref:`SpecTypeInterfaceDefineItemType`
3954
3955* :ref:`SpecTypeInterfaceEnumeratorItemType`
3956
3957* :ref:`SpecTypeInterfaceTypedefItemType`
3958
3959* :ref:`SpecTypeInterfaceVariableItemType`
3960
3961.. _SpecTypeInterfaceDefinitionVariant:
3962
3963Interface Definition Variant
3964^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3965
3966This set of attributes specifies an interface definition variant. All explicit
3967attributes shall be specified. The explicit attributes for this type are:
3968
3969definition
3970    The attribute value shall be an :ref:`SpecTypeInterfaceDefinition`. The
3971    definition will be used if the expression defined by the ``enabled-by``
3972    attribute evaluates to true.  In generated header files, the expression is
3973    evaluated by the C preprocessor.
3974
3975enabled-by
3976    The attribute value shall be an
3977    :ref:`SpecTypeInterfaceEnabledByExpression`.
3978
3979This type is used by the following types:
3980
3981* :ref:`SpecTypeInterfaceDefinitionDirective`
3982
3983.. _SpecTypeInterfaceDescription:
3984
3985Interface Description
3986^^^^^^^^^^^^^^^^^^^^^
3987
3988A value of this type shall be of one of the following variants:
3989
3990* There may be no value (null).
3991
3992* The value may be a string. It shall be the description of the interface.  The
3993  description should be short and concentrate on the average case.  All special
3994  cases, usage notes, constraints, error conditions, configuration
3995  dependencies, references, etc. should be described in the
3996  :ref:`SpecTypeInterfaceNotes`.
3997
3998This type is used by the following types:
3999
4000* :ref:`SpecTypeApplicationConfigurationOptionItemType`
4001
4002* :ref:`SpecTypeInterfaceCompoundItemType`
4003
4004* :ref:`SpecTypeInterfaceCompoundMemberDefinition`
4005
4006* :ref:`SpecTypeInterfaceDefineItemType`
4007
4008* :ref:`SpecTypeInterfaceEnumItemType`
4009
4010* :ref:`SpecTypeInterfaceEnumeratorItemType`
4011
4012* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
4013
4014* :ref:`SpecTypeInterfaceGroupItemType`
4015
4016* :ref:`SpecTypeInterfaceParameter`
4017
4018* :ref:`SpecTypeInterfaceReturnValue`
4019
4020* :ref:`SpecTypeInterfaceTypedefItemType`
4021
4022* :ref:`SpecTypeInterfaceVariableItemType`
4023
4024.. _SpecTypeInterfaceEnabledByExpression:
4025
4026Interface Enabled-By Expression
4027^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4028
4029A value of this type shall be an expression which defines under which
4030conditions an interface definition is enabled.  In generated header files, the
4031expression is evaluated by the C preprocessor.
4032
4033A value of this type shall be of one of the following variants:
4034
4035* The value may be a boolean. It is converted to 0 or 1.  It defines a symbol
4036  in the expression.
4037
4038* The value may be a set of attributes. Each attribute defines an operator.
4039  Exactly one of the explicit attributes shall be specified. The explicit
4040  attributes for this type are:
4041
4042  and
4043      The attribute value shall be a list. Each list element shall be an
4044      :ref:`SpecTypeInterfaceEnabledByExpression`. The *and* operator defines a
4045      *logical and* of the expressions in the list.
4046
4047  not
4048      The attribute value shall be an
4049      :ref:`SpecTypeInterfaceEnabledByExpression`. The *not* operator defines a
4050      *logical not* of the expression.
4051
4052  or
4053      The attribute value shall be a list. Each list element shall be an
4054      :ref:`SpecTypeInterfaceEnabledByExpression`. The *or* operator defines a
4055      *logical or* of the expressions in the list.
4056
4057* The value may be a list. Each list element shall be an
4058  :ref:`SpecTypeInterfaceEnabledByExpression`. It defines a *logical or* of the
4059  expressions in the list.
4060
4061* The value may be a string. It defines a symbol in the expression.
4062
4063This type is used by the following types:
4064
4065* :ref:`SpecTypeInterfaceCompoundMemberDefinitionVariant`
4066
4067* :ref:`SpecTypeInterfaceDefinitionVariant`
4068
4069* :ref:`SpecTypeInterfaceEnabledByExpression`
4070
4071* :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionVariant`
4072
4073.. _SpecTypeInterfaceEnumDefinitionKind:
4074
4075Interface Enum Definition Kind
4076^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4077
4078The value shall be a string. It specifies how the enum is defined.  It may be a
4079typedef only, the enum only, or a typedef with an enum definition. The value
4080shall be an element of
4081
4082* "``enum-only``",
4083
4084* "``typedef-and-enum``", and
4085
4086* "``typedef-only``".
4087
4088This type is used by the following types:
4089
4090* :ref:`SpecTypeInterfaceEnumItemType`
4091
4092.. _SpecTypeInterfaceEnumeratorLinkRole:
4093
4094Interface Enumerator Link Role
4095^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4096
4097This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4098value is ``interface-enumerator``. It defines the interface enumerator role of
4099links.
4100
4101.. _SpecTypeInterfaceFunctionLinkRole:
4102
4103Interface Function Link Role
4104^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4105
4106This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4107value is ``interface-function``. It defines the interface function role of
4108links.  It is used to indicate that a :ref:`SpecTypeActionRequirementItemType`
4109item specifies functional requirements of an
4110:ref:`SpecTypeInterfaceFunctionOrMacroItemType` item.
4111
4112.. _SpecTypeInterfaceFunctionOrMacroDefinition:
4113
4114Interface Function or Macro Definition
4115^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4116
4117A value of this type shall be of one of the following variants:
4118
4119* The value may be a set of attributes. This set of attributes specifies a
4120  function definition. All explicit attributes shall be specified. The explicit
4121  attributes for this type are:
4122
4123  attributes
4124      The attribute value shall be an optional string. If the value is present,
4125      then it shall be the function attributes. On the attributes a
4126      context-sensitive substitution of item variables is performed.  A
4127      function attribute is for example the indication that the function does
4128      not return to the caller.
4129
4130  body
4131      The attribute value shall be an optional string. If the value is present,
4132      then it shall be the definition of a static inline function.  On the
4133      function definition a context-sensitive substitution of item variables is
4134      performed.  If no value is present, then the function is declared as an
4135      external function.
4136
4137  params
4138      The attribute value shall be a list of strings. It shall be the list of
4139      parameter declarations of the function.  On the function parameter
4140      declarations a context-sensitive substitution of item variables is
4141      performed.
4142
4143  return
4144      The attribute value shall be an optional string. If the value is present,
4145      then it shall be the function return type. On the return type a
4146      context-sensitive substitution of item variables is performed.
4147
4148* There may be no value (null).
4149
4150This type is used by the following types:
4151
4152* :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionDirective`
4153
4154* :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionVariant`
4155
4156.. _SpecTypeInterfaceFunctionOrMacroDefinitionDirective:
4157
4158Interface Function or Macro Definition Directive
4159^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4160
4161This set of attributes specifies a function or macro definition directive. All
4162explicit attributes shall be specified. The explicit attributes for this type
4163are:
4164
4165default
4166    The attribute value shall be an
4167    :ref:`SpecTypeInterfaceFunctionOrMacroDefinition`. The default definition
4168    will be used if no variant-specific definition is enabled.
4169
4170variants
4171    The attribute value shall be a list. Each list element shall be an
4172    :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionVariant`.
4173
4174This type is used by the following types:
4175
4176* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
4177
4178.. _SpecTypeInterfaceFunctionOrMacroDefinitionVariant:
4179
4180Interface Function or Macro Definition Variant
4181^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4182
4183This set of attributes specifies a function or macro definition variant. All
4184explicit attributes shall be specified. The explicit attributes for this type
4185are:
4186
4187definition
4188    The attribute value shall be an
4189    :ref:`SpecTypeInterfaceFunctionOrMacroDefinition`. The definition will be
4190    used if the expression defined by the ``enabled-by`` attribute evaluates to
4191    true.  In generated header files, the expression is evaluated by the C
4192    preprocessor.
4193
4194enabled-by
4195    The attribute value shall be an
4196    :ref:`SpecTypeInterfaceEnabledByExpression`.
4197
4198This type is used by the following types:
4199
4200* :ref:`SpecTypeInterfaceFunctionOrMacroDefinitionDirective`
4201
4202.. _SpecTypeInterfaceGroupIdentifier:
4203
4204Interface Group Identifier
4205^^^^^^^^^^^^^^^^^^^^^^^^^^
4206
4207The value shall be a string. It shall be the identifier of the interface group.
4208The value shall match with the regular expression "``^[A-Z][a-zA-Z0-9]*$``".
4209
4210This type is used by the following types:
4211
4212* :ref:`SpecTypeDesignGroupRequirementItemType`
4213
4214* :ref:`SpecTypeInterfaceGroupItemType`
4215
4216.. _SpecTypeInterfaceGroupMembershipLinkRole:
4217
4218Interface Group Membership Link Role
4219^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4220
4221This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4222value is ``interface-ingroup``. It defines the interface group membership role
4223of links.
4224
4225.. _SpecTypeInterfaceHiddenGroupMembershipLinkRole:
4226
4227Interface Hidden Group Membership Link Role
4228^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4229
4230This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4231value is ``interface-ingroup-hidden``. It defines the interface hidden group
4232membership role of links.  This role may be used to make an interface a group
4233member and hide this relationship in the documentation.  An example is an
4234optimized macro implementation of a directive which has the same name as the
4235corresponding directive.
4236
4237.. _SpecTypeInterfaceIncludeLinkRole:
4238
4239Interface Include Link Role
4240^^^^^^^^^^^^^^^^^^^^^^^^^^^
4241
4242This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4243value is ``interface-include``. It defines the interface include role of links
4244and is used to indicate that an interface container includes another interface
4245container.  For example, one header file includes another header file. All
4246explicit attributes shall be specified. The explicit attributes for this type
4247are:
4248
4249enabled-by
4250    The attribute value shall be an :ref:`SpecTypeEnabledByExpression`. It
4251    shall define under which conditions the interface container is included.
4252
4253.. _SpecTypeInterfaceNotes:
4254
4255Interface Notes
4256^^^^^^^^^^^^^^^
4257
4258A value of this type shall be of one of the following variants:
4259
4260* There may be no value (null).
4261
4262* The value may be a string. It shall be the notes for the interface.
4263
4264This type is used by the following types:
4265
4266* :ref:`SpecTypeApplicationConfigurationOptionItemType`
4267
4268* :ref:`SpecTypeInterfaceCompoundItemType`
4269
4270* :ref:`SpecTypeInterfaceDefineItemType`
4271
4272* :ref:`SpecTypeInterfaceEnumeratorItemType`
4273
4274* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
4275
4276* :ref:`SpecTypeInterfaceTypedefItemType`
4277
4278* :ref:`SpecTypeInterfaceVariableItemType`
4279
4280.. _SpecTypeInterfaceParameter:
4281
4282Interface Parameter
4283^^^^^^^^^^^^^^^^^^^
4284
4285This set of attributes specifies an interface parameter. All explicit
4286attributes shall be specified. The explicit attributes for this type are:
4287
4288description
4289    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
4290
4291dir
4292    The attribute value shall be an :ref:`SpecTypeInterfaceParameterDirection`.
4293
4294name
4295    The attribute value shall be a string. It shall be the interface parameter
4296    name.
4297
4298This type is used by the following types:
4299
4300* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
4301
4302* :ref:`SpecTypeInterfaceTypedefItemType`
4303
4304.. _SpecTypeInterfaceParameterDirection:
4305
4306Interface Parameter Direction
4307^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4308
4309A value of this type shall be of one of the following variants:
4310
4311* There may be no value (null).
4312
4313* The value may be a string. It specifies the interface parameter direction.
4314  The value shall be an element of
4315
4316  * "``in``",
4317
4318  * "``out``", and
4319
4320  * "``inout``".
4321
4322This type is used by the following types:
4323
4324* :ref:`SpecTypeInterfaceParameter`
4325
4326* :ref:`SpecTypeTestRunParameter`
4327
4328.. _SpecTypeInterfacePlacementLinkRole:
4329
4330Interface Placement Link Role
4331^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4332
4333This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4334value is ``interface-placement``. It defines the interface placement role of
4335links.  It is used to indicate that an interface definition is placed into an
4336interface container, for example a header file.
4337
4338.. _SpecTypeInterfaceReferencesSet:
4339
4340Interface References Set
4341^^^^^^^^^^^^^^^^^^^^^^^^
4342
4343This set of attributes defines references for the interface. Generic attributes
4344may be specified. Each generic attribute key shall be a :ref:`SpecTypeName`.
4345Each generic attribute value shall be a string. The key defines the reference
4346kind.  The value shall be a kind-specific reference target.
4347
4348This type is used by the following types:
4349
4350* :ref:`SpecTypeInterfaceUnspecifiedItemType`
4351
4352.. _SpecTypeInterfaceReturnDirective:
4353
4354Interface Return Directive
4355^^^^^^^^^^^^^^^^^^^^^^^^^^
4356
4357A value of this type shall be of one of the following variants:
4358
4359* The value may be a set of attributes. This set of attributes specifies an
4360  interface return. All explicit attributes shall be specified. The explicit
4361  attributes for this type are:
4362
4363  return
4364      The attribute value shall be an optional string. It shall describe the
4365      interface return for unspecified return values.
4366
4367  return-values
4368      The attribute value shall be a list. Each list element shall be an
4369      :ref:`SpecTypeInterfaceReturnValue`.
4370
4371* There may be no value (null).
4372
4373This type is used by the following types:
4374
4375* :ref:`SpecTypeInterfaceFunctionOrMacroItemType`
4376
4377* :ref:`SpecTypeInterfaceTypedefItemType`
4378
4379.. _SpecTypeInterfaceReturnValue:
4380
4381Interface Return Value
4382^^^^^^^^^^^^^^^^^^^^^^
4383
4384This set of attributes specifies an interface return value. All explicit
4385attributes shall be specified. The explicit attributes for this type are:
4386
4387description
4388    The attribute value shall be an :ref:`SpecTypeInterfaceDescription`.
4389
4390value
4391    The attribute value shall be a :ref:`SpecTypeBooleanOrIntegerOrString`. It
4392    shall be the described interface return value.
4393
4394This type is used by the following types:
4395
4396* :ref:`SpecTypeInterfaceReturnDirective`
4397
4398.. _SpecTypeInterfaceTargetLinkRole:
4399
4400Interface Target Link Role
4401^^^^^^^^^^^^^^^^^^^^^^^^^^
4402
4403This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4404value is ``interface-target``. It defines the interface target role of links.
4405It is used for interface forward declarations.
4406
4407.. _SpecTypeLink:
4408
4409Link
4410^^^^
4411
4412This set of attributes specifies a link from one specification item to another
4413specification item.  The links in a list are ordered.  The first link in the
4414list is processed first. All explicit attributes shall be specified. The
4415explicit attributes for this type are:
4416
4417role
4418    The attribute value shall be a :ref:`SpecTypeName`. It shall be the role of
4419    the link.
4420
4421uid
4422    The attribute value shall be an :ref:`SpecTypeUID`. It shall be the
4423    absolute or relative UID of the link target item.
4424
4425This type is refined by the following types:
4426
4427* :ref:`SpecTypeApplicationConfigurationGroupMemberLinkRole`
4428
4429* :ref:`SpecTypeBuildDependencyLinkRole`
4430
4431* :ref:`SpecTypeConstraintLinkRole`
4432
4433* :ref:`SpecTypeFunctionImplementationLinkRole`
4434
4435* :ref:`SpecTypeGlossaryMembershipLinkRole`
4436
4437* :ref:`SpecTypeInterfaceEnumeratorLinkRole`
4438
4439* :ref:`SpecTypeInterfaceFunctionLinkRole`
4440
4441* :ref:`SpecTypeInterfaceGroupMembershipLinkRole`
4442
4443* :ref:`SpecTypeInterfaceHiddenGroupMembershipLinkRole`
4444
4445* :ref:`SpecTypeInterfaceIncludeLinkRole`
4446
4447* :ref:`SpecTypeInterfacePlacementLinkRole`
4448
4449* :ref:`SpecTypeInterfaceTargetLinkRole`
4450
4451* :ref:`SpecTypePlacementOrderLinkRole`
4452
4453* :ref:`SpecTypeRequirementRefinementLinkRole`
4454
4455* :ref:`SpecTypeRequirementValidationLinkRole`
4456
4457* :ref:`SpecTypeRuntimeMeasurementRequestLinkRole`
4458
4459* :ref:`SpecTypeSpecificationMemberLinkRole`
4460
4461* :ref:`SpecTypeSpecificationRefinementLinkRole`
4462
4463* :ref:`SpecTypeUnitTestLinkRole`
4464
4465This type is used by the following types:
4466
4467* :ref:`SpecTypeRootItemType`
4468
4469* :ref:`SpecTypeTestCaseAction`
4470
4471* :ref:`SpecTypeTestCaseCheck`
4472
4473.. _SpecTypeName:
4474
4475Name
4476^^^^
4477
4478The value shall be a string. A string is a valid name if it matches with the
4479``^([a-z][a-z0-9-]*|SPDX-License-Identifier)$`` regular expression.
4480
4481This type is used by the following types:
4482
4483* :ref:`SpecTypeApplicationConfigurationOptionItemType`
4484
4485* :ref:`SpecTypeBuildItemType`
4486
4487* :ref:`SpecTypeBuildOptionSetTestStateAction`
4488
4489* :ref:`SpecTypeFunctionalRequirementItemType`
4490
4491* :ref:`SpecTypeGlossaryItemType`
4492
4493* :ref:`SpecTypeInterfaceItemType`
4494
4495* :ref:`SpecTypeInterfaceReferencesSet`
4496
4497* :ref:`SpecTypeLink`
4498
4499* :ref:`SpecTypeNonFunctionalRequirementItemType`
4500
4501* :ref:`SpecTypeRequirementItemType`
4502
4503* :ref:`SpecTypeRootItemType`
4504
4505* :ref:`SpecTypeRuntimeMeasurementParameterSet`
4506
4507* :ref:`SpecTypeRuntimePerformanceParameterSet`
4508
4509* :ref:`SpecTypeSpecificationAttributeValue`
4510
4511* :ref:`SpecTypeSpecificationExplicitAttributes`
4512
4513* :ref:`SpecTypeSpecificationGenericAttributes`
4514
4515* :ref:`SpecTypeSpecificationItemType`
4516
4517* :ref:`SpecTypeSpecificationList`
4518
4519* :ref:`SpecTypeSpecificationRefinementLinkRole`
4520
4521.. _SpecTypeOptionalString:
4522
4523Optional String
4524^^^^^^^^^^^^^^^
4525
4526A value of this type shall be of one of the following variants:
4527
4528* There may be no value (null).
4529
4530* The value may be a string.
4531
4532.. _SpecTypePlacementOrderLinkRole:
4533
4534Placement Order Link Role
4535^^^^^^^^^^^^^^^^^^^^^^^^^
4536
4537This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4538value is ``placement-order``. This link role defines the placement order of
4539items in a container item (for example an interface function in a header file
4540or a documentation section).
4541
4542.. _SpecTypeRequirementReference:
4543
4544Requirement Reference
4545^^^^^^^^^^^^^^^^^^^^^
4546
4547This set of attributes specifies a requirement reference. All explicit
4548attributes shall be specified. The explicit attributes for this type are:
4549
4550identifier
4551    The attribute value shall be a string. It shall be the type-specific
4552    identifier of the reference target. For *group* references use the Doxygen
4553    group identifier.
4554
4555type
4556    The attribute value shall be a :ref:`SpecTypeRequirementReferenceType`.
4557
4558This type is used by the following types:
4559
4560* :ref:`SpecTypeRequirementItemType`
4561
4562.. _SpecTypeRequirementReferenceType:
4563
4564Requirement Reference Type
4565^^^^^^^^^^^^^^^^^^^^^^^^^^
4566
4567The value shall be a string. It specifies the type of a requirement reference.
4568The value shall be an element of
4569
4570* "``define``",
4571
4572* "``file``",
4573
4574* "``function``",
4575
4576* "``group``",
4577
4578* "``macro``", and
4579
4580* "``variable``".
4581
4582This type is used by the following types:
4583
4584* :ref:`SpecTypeRequirementReference`
4585
4586.. _SpecTypeRequirementRefinementLinkRole:
4587
4588Requirement Refinement Link Role
4589^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4590
4591This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4592value is ``requirement-refinement``. It defines the requirement refinement role
4593of links.
4594
4595.. _SpecTypeRequirementText:
4596
4597Requirement Text
4598^^^^^^^^^^^^^^^^
4599
4600The value shall be a string. It shall state a requirement or constraint. The
4601value shall not contain an element of
4602
4603* "``acceptable``",
4604
4605* "``adequate``",
4606
4607* "``almost always``",
4608
4609* "``and/or``",
4610
4611* "``appropriate``",
4612
4613* "``approximately``",
4614
4615* "``as far as possible``",
4616
4617* "``as much as practicable``",
4618
4619* "``best``",
4620
4621* "``best possible``",
4622
4623* "``easy``",
4624
4625* "``efficient``",
4626
4627* "``e.g.``",
4628
4629* "``enable``",
4630
4631* "``enough``",
4632
4633* "``etc.``",
4634
4635* "``few``",
4636
4637* "``first rate``",
4638
4639* "``flexible``",
4640
4641* "``generally``",
4642
4643* "``goal``",
4644
4645* "``graceful``",
4646
4647* "``great``",
4648
4649* "``greatest``",
4650
4651* "``ideally``",
4652
4653* "``i.e.``",
4654
4655* "``if possible``",
4656
4657* "``in most cases``",
4658
4659* "``large``",
4660
4661* "``many``",
4662
4663* "``maximize``",
4664
4665* "``minimize``",
4666
4667* "``most``",
4668
4669* "``multiple``",
4670
4671* "``necessary``",
4672
4673* "``numerous``",
4674
4675* "``optimize``",
4676
4677* "``ought to``",
4678
4679* "``probably``",
4680
4681* "``quick``",
4682
4683* "``rapid``",
4684
4685* "``reasonably``",
4686
4687* "``relevant``",
4688
4689* "``robust``",
4690
4691* "``satisfactory``",
4692
4693* "``several``",
4694
4695* "``shall be included but not limited to``",
4696
4697* "``simple``",
4698
4699* "``small``",
4700
4701* "``some``",
4702
4703* "``state of the art``",
4704
4705* "``sufficient``",
4706
4707* "``suitable``",
4708
4709* "``support``",
4710
4711* "``systematically``",
4712
4713* "``transparent``",
4714
4715* "``typical``",
4716
4717* "``user friendly``",
4718
4719* "``usually``",
4720
4721* "``versatile``", and
4722
4723* "``when necessary``".
4724
4725This type is used by the following types:
4726
4727* :ref:`SpecTypeActionRequirementState`
4728
4729* :ref:`SpecTypeApplicationConfigurationGroupItemType`
4730
4731* :ref:`SpecTypeConstraintItemType`
4732
4733* :ref:`SpecTypeInterfaceGroupItemType`
4734
4735* :ref:`SpecTypeRequirementItemType`
4736
4737.. _SpecTypeRequirementValidationLinkRole:
4738
4739Requirement Validation Link Role
4740^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4741
4742This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4743value is ``validation``. It defines the requirement validation role of links.
4744
4745.. _SpecTypeRuntimeMeasurementEnvironment:
4746
4747Runtime Measurement Environment
4748^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4749
4750The value shall be a string. It specifies the runtime measurement environment.
4751The value
4752
4753* shall be an element of
4754
4755  * "``FullCache``",
4756
4757  * "``HotCache``", and
4758
4759  * "``DirtyCache``",
4760
4761* or, shall match with the regular expression "``^Load/[1-9][0-9]*$``".
4762
4763This type is used by the following types:
4764
4765* :ref:`SpecTypeRuntimeMeasurementEnvironmentTable`
4766
4767.. _SpecTypeRuntimeMeasurementEnvironmentTable:
4768
4769Runtime Measurement Environment Table
4770^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4771
4772This set of attributes provides runtime performance limits for a set of runtime
4773measurement environments. Generic attributes may be specified. Each generic
4774attribute key shall be a :ref:`SpecTypeRuntimeMeasurementEnvironment`. Each
4775generic attribute value shall be a :ref:`SpecTypeRuntimeMeasurementValueTable`.
4776
4777This type is used by the following types:
4778
4779* :ref:`SpecTypeRuntimePerformanceLimitTable`
4780
4781.. _SpecTypeRuntimeMeasurementParameterSet:
4782
4783Runtime Measurement Parameter Set
4784^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4785
4786This set of attributes defines parameters of the runtime measurement test case.
4787All explicit attributes shall be specified. The explicit attributes for this
4788type are:
4789
4790sample-count
4791    The attribute value shall be an integer number. It shall be the sample
4792    count of the runtime measurement context.
4793
4794In addition to the explicit attributes, generic attributes may be specified.
4795Each generic attribute key shall be a :ref:`SpecTypeName`. The attribute value
4796may have any type.
4797
4798This type is used by the following types:
4799
4800* :ref:`SpecTypeRuntimeMeasurementTestItemType`
4801
4802.. _SpecTypeRuntimeMeasurementRequestLinkRole:
4803
4804Runtime Measurement Request Link Role
4805^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4806
4807This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
4808value is ``runtime-measurement-request``. It defines the runtime measurement
4809request role of links.  The link target shall be a
4810:ref:`SpecTypeRuntimeMeasurementTestItemType` item.
4811
4812.. _SpecTypeRuntimeMeasurementValueKind:
4813
4814Runtime Measurement Value Kind
4815^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4816
4817The value shall be a string. It specifies the kind of a runtime measurement
4818value. The value shall be an element of
4819
4820* "``max-lower-bound``",
4821
4822* "``max-upper-bound``",
4823
4824* "``mean-lower-bound``",
4825
4826* "``mean-upper-bound``",
4827
4828* "``median-lower-bound``",
4829
4830* "``median-upper-bound``",
4831
4832* "``min-lower-bound``", and
4833
4834* "``min-upper-bound``".
4835
4836This type is used by the following types:
4837
4838* :ref:`SpecTypeRuntimeMeasurementValueTable`
4839
4840.. _SpecTypeRuntimeMeasurementValueTable:
4841
4842Runtime Measurement Value Table
4843^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4844
4845This set of attributes provides a set of runtime measurement values each of a
4846specified kind.  The unit of the values shall be one second. Generic attributes
4847may be specified. Each generic attribute key shall be a
4848:ref:`SpecTypeRuntimeMeasurementValueKind`. Each generic attribute value shall
4849be a floating-point number.
4850
4851This type is used by the following types:
4852
4853* :ref:`SpecTypeRuntimeMeasurementEnvironmentTable`
4854
4855.. _SpecTypeRuntimePerformanceLimitTable:
4856
4857Runtime Performance Limit Table
4858^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4859
4860This set of attributes provides runtime performance limits for BSP variants
4861specified by ``"<arch>/<bsp>"`` with <arch> being the architecture of the BSP
4862and <bsp> being the base name of the BSP. Generic attributes may be specified.
4863Each generic attribute key shall be a string. Each generic attribute value
4864shall be a :ref:`SpecTypeRuntimeMeasurementEnvironmentTable`.
4865
4866This type is used by the following types:
4867
4868* :ref:`SpecTypeRuntimePerformanceRequirementItemType`
4869
4870.. _SpecTypeRuntimePerformanceParameterSet:
4871
4872Runtime Performance Parameter Set
4873^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4874
4875This set of attributes defines parameters of the runtime performance
4876requirement. Generic attributes may be specified. Each generic attribute key
4877shall be a :ref:`SpecTypeName`. The attribute value may have any type.
4878
4879This type is used by the following types:
4880
4881* :ref:`SpecTypeRuntimePerformanceRequirementItemType`
4882
4883.. _SpecTypeSPDXLicenseIdentifier:
4884
4885SPDX License Identifier
4886^^^^^^^^^^^^^^^^^^^^^^^
4887
4888The value shall be a string. It defines the license of the item expressed
4889though an SPDX License Identifier. The value
4890
4891* shall be equal to "``CC-BY-SA-4.0 OR BSD-2-Clause``",
4892
4893* or, shall be equal to "``BSD-2-Clause``",
4894
4895* or, shall be equal to "``CC-BY-SA-4.0``".
4896
4897This type is used by the following types:
4898
4899* :ref:`SpecTypeRootItemType`
4900
4901.. _SpecTypeSpecificationAttributeSet:
4902
4903Specification Attribute Set
4904^^^^^^^^^^^^^^^^^^^^^^^^^^^
4905
4906This set of attributes specifies a set of attributes. The following explicit
4907attributes are mandatory:
4908
4909* ``attributes``
4910
4911* ``description``
4912
4913* ``mandatory-attributes``
4914
4915The explicit attributes for this type are:
4916
4917attributes
4918    The attribute value shall be a
4919    :ref:`SpecTypeSpecificationExplicitAttributes`. It shall specify the
4920    explicit attributes of the attribute set.
4921
4922description
4923    The attribute value shall be an optional string. It shall be the
4924    description of the attribute set.
4925
4926generic-attributes
4927    The attribute value shall be a
4928    :ref:`SpecTypeSpecificationGenericAttributes`. It shall specify the generic
4929    attributes of the attribute set.
4930
4931mandatory-attributes
4932    The attribute value shall be a
4933    :ref:`SpecTypeSpecificationMandatoryAttributes`. It shall specify the
4934    mandatory attributes of the attribute set.
4935
4936This type is used by the following types:
4937
4938* :ref:`SpecTypeSpecificationInformation`
4939
4940.. _SpecTypeSpecificationAttributeValue:
4941
4942Specification Attribute Value
4943^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4944
4945This set of attributes specifies an attribute value. All explicit attributes
4946shall be specified. The explicit attributes for this type are:
4947
4948description
4949    The attribute value shall be an optional string. It shall be the
4950    description of the attribute value.
4951
4952spec-type
4953    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
4954    specification type of the attribute value.
4955
4956This type is used by the following types:
4957
4958* :ref:`SpecTypeSpecificationExplicitAttributes`
4959
4960.. _SpecTypeSpecificationBooleanValue:
4961
4962Specification Boolean Value
4963^^^^^^^^^^^^^^^^^^^^^^^^^^^
4964
4965This attribute set specifies a boolean value. Only the ``description``
4966attribute is mandatory. The explicit attributes for this type are:
4967
4968assert
4969    The attribute value shall be a boolean. This optional attribute defines the
4970    value constraint of the specified boolean value.  If the value of the
4971    assert attribute is true, then the value of the specified boolean value
4972    shall be true.  If the value of the assert attribute is false, then the
4973    value of the specified boolean value shall be false.  In case the assert
4974    attribute is not present, then the value of the specified boolean value may
4975    be true or false.
4976
4977description
4978    The attribute value shall be an optional string. It shall be the
4979    description of the specified boolean value.
4980
4981This type is used by the following types:
4982
4983* :ref:`SpecTypeSpecificationInformation`
4984
4985.. _SpecTypeSpecificationExplicitAttributes:
4986
4987Specification Explicit Attributes
4988^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4989
4990Generic attributes may be specified. Each generic attribute key shall be a
4991:ref:`SpecTypeName`. Each generic attribute value shall be a
4992:ref:`SpecTypeSpecificationAttributeValue`. Each generic attribute specifies an
4993explicit attribute of the attribute set.  The key of the each generic attribute
4994defines the attribute key of the explicit attribute.
4995
4996This type is used by the following types:
4997
4998* :ref:`SpecTypeSpecificationAttributeSet`
4999
5000.. _SpecTypeSpecificationFloatingPointAssert:
5001
5002Specification Floating-Point Assert
5003^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5004
5005A value of this type shall be an expression which asserts that the
5006floating-point value of the specified attribute satisfies the required
5007constraints.
5008
5009A value of this type shall be of one of the following variants:
5010
5011* The value may be a set of attributes. Each attribute defines an operator.
5012  Exactly one of the explicit attributes shall be specified. The explicit
5013  attributes for this type are:
5014
5015  and
5016      The attribute value shall be a list. Each list element shall be a
5017      :ref:`SpecTypeSpecificationFloatingPointAssert`. The *and* operator
5018      evaluates to the *logical and* of the evaluation results of the
5019      expressions in the list.
5020
5021  eq
5022      The attribute value shall be a floating-point number. The *eq* operator
5023      evaluates to true, if the value to check is equal to the value of this
5024      attribute, otherwise to false.
5025
5026  ge
5027      The attribute value shall be a floating-point number. The *ge* operator
5028      evaluates to true, if the value to check is greater than or equal to the
5029      value of this attribute, otherwise to false.
5030
5031  gt
5032      The attribute value shall be a floating-point number. The *gt* operator
5033      evaluates to true, if the value to check is greater than the value of
5034      this attribute, otherwise to false.
5035
5036  le
5037      The attribute value shall be a floating-point number. The *le* operator
5038      evaluates to true, if the value to check is less than or equal to the
5039      value of this attribute, otherwise to false.
5040
5041  lt
5042      The attribute value shall be a floating-point number. The *lt* operator
5043      evaluates to true, if the value to check is less than the value of this
5044      attribute, otherwise to false.
5045
5046  ne
5047      The attribute value shall be a floating-point number. The *ne* operator
5048      evaluates to true, if the value to check is not equal to the value of
5049      this attribute, otherwise to false.
5050
5051  not
5052      The attribute value shall be a
5053      :ref:`SpecTypeSpecificationFloatingPointAssert`. The *not* operator
5054      evaluates to the *logical not* of the evaluation results of the
5055      expression.
5056
5057  or
5058      The attribute value shall be a list. Each list element shall be a
5059      :ref:`SpecTypeSpecificationFloatingPointAssert`. The *or* operator
5060      evaluates to the *logical or* of the evaluation results of the
5061      expressions in the list.
5062
5063* The value may be a list. Each list element shall be a
5064  :ref:`SpecTypeSpecificationFloatingPointAssert`. This list of expressions
5065  evaluates to the *logical or* of the evaluation results of the expressions in
5066  the list.
5067
5068This type is used by the following types:
5069
5070* :ref:`SpecTypeSpecificationFloatingPointAssert`
5071
5072* :ref:`SpecTypeSpecificationFloatingPointValue`
5073
5074.. _SpecTypeSpecificationFloatingPointValue:
5075
5076Specification Floating-Point Value
5077^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5078
5079This set of attributes specifies a floating-point value. Only the
5080``description`` attribute is mandatory. The explicit attributes for this type
5081are:
5082
5083assert
5084    The attribute value shall be a
5085    :ref:`SpecTypeSpecificationFloatingPointAssert`. This optional attribute
5086    defines the value constraints of the specified floating-point value.  In
5087    case the assert attribute is not present, then the value of the specified
5088    floating-point value may be every valid floating-point number.
5089
5090description
5091    The attribute value shall be an optional string. It shall be the
5092    description of the specified floating-point value.
5093
5094This type is used by the following types:
5095
5096* :ref:`SpecTypeSpecificationInformation`
5097
5098.. _SpecTypeSpecificationGenericAttributes:
5099
5100Specification Generic Attributes
5101^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5102
5103This set of attributes specifies generic attributes.  Generic attributes are
5104attributes which are not explicitly specified by
5105:ref:`SpecTypeSpecificationExplicitAttributes`.  They are restricted to uniform
5106attribute key and value types. All explicit attributes shall be specified. The
5107explicit attributes for this type are:
5108
5109description
5110    The attribute value shall be an optional string. It shall be the
5111    description of the generic attributes.
5112
5113key-spec-type
5114    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
5115    specification type of the generic attribute keys.
5116
5117value-spec-type
5118    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
5119    specification type of the generic attribute values.
5120
5121This type is used by the following types:
5122
5123* :ref:`SpecTypeSpecificationAttributeSet`
5124
5125.. _SpecTypeSpecificationInformation:
5126
5127Specification Information
5128^^^^^^^^^^^^^^^^^^^^^^^^^
5129
5130This set of attributes specifies attribute values. At least one of the explicit
5131attributes shall be specified. The explicit attributes for this type are:
5132
5133bool
5134    The attribute value shall be a :ref:`SpecTypeSpecificationBooleanValue`. It
5135    shall specify a boolean value.
5136
5137dict
5138    The attribute value shall be a :ref:`SpecTypeSpecificationAttributeSet`. It
5139    shall specify a set of attributes.
5140
5141float
5142    The attribute value shall be a
5143    :ref:`SpecTypeSpecificationFloatingPointValue`. It shall specify a
5144    floating-point value.
5145
5146int
5147    The attribute value shall be a :ref:`SpecTypeSpecificationIntegerValue`. It
5148    shall specify an integer value.
5149
5150list
5151    The attribute value shall be a :ref:`SpecTypeSpecificationList`. It shall
5152    specify a list of attributes or values.
5153
5154none
5155    The attribute shall have no value. It specifies that no value is required.
5156
5157str
5158    The attribute value shall be a :ref:`SpecTypeSpecificationStringValue`. It
5159    shall specify a string.
5160
5161This type is used by the following types:
5162
5163* :ref:`SpecTypeSpecificationItemType`
5164
5165.. _SpecTypeSpecificationIntegerAssert:
5166
5167Specification Integer Assert
5168^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5169
5170A value of this type shall be an expression which asserts that the integer
5171value of the specified attribute satisfies the required constraints.
5172
5173A value of this type shall be of one of the following variants:
5174
5175* The value may be a set of attributes. Each attribute defines an operator.
5176  Exactly one of the explicit attributes shall be specified. The explicit
5177  attributes for this type are:
5178
5179  and
5180      The attribute value shall be a list. Each list element shall be a
5181      :ref:`SpecTypeSpecificationIntegerAssert`. The *and* operator evaluates
5182      to the *logical and* of the evaluation results of the expressions in the
5183      list.
5184
5185  eq
5186      The attribute value shall be an integer number. The *eq* operator
5187      evaluates to true, if the value to check is equal to the value of this
5188      attribute, otherwise to false.
5189
5190  ge
5191      The attribute value shall be an integer number. The *ge* operator
5192      evaluates to true, if the value to check is greater than or equal to the
5193      value of this attribute, otherwise to false.
5194
5195  gt
5196      The attribute value shall be an integer number. The *gt* operator
5197      evaluates to true, if the value to check is greater than the value of
5198      this attribute, otherwise to false.
5199
5200  le
5201      The attribute value shall be an integer number. The *le* operator
5202      evaluates to true, if the value to check is less than or equal to the
5203      value of this attribute, otherwise to false.
5204
5205  lt
5206      The attribute value shall be an integer number. The *lt* operator
5207      evaluates to true, if the value to check is less than the value of this
5208      attribute, otherwise to false.
5209
5210  ne
5211      The attribute value shall be an integer number. The *ne* operator
5212      evaluates to true, if the value to check is not equal to the value of
5213      this attribute, otherwise to false.
5214
5215  not
5216      The attribute value shall be a :ref:`SpecTypeSpecificationIntegerAssert`.
5217      The *not* operator evaluates to the *logical not* of the evaluation
5218      results of the expression.
5219
5220  or
5221      The attribute value shall be a list. Each list element shall be a
5222      :ref:`SpecTypeSpecificationIntegerAssert`. The *or* operator evaluates to
5223      the *logical or* of the evaluation results of the expressions in the
5224      list.
5225
5226* The value may be a list. Each list element shall be a
5227  :ref:`SpecTypeSpecificationIntegerAssert`. This list of expressions evaluates
5228  to the *logical or* of the evaluation results of the expressions in the list.
5229
5230This type is used by the following types:
5231
5232* :ref:`SpecTypeSpecificationIntegerAssert`
5233
5234* :ref:`SpecTypeSpecificationIntegerValue`
5235
5236.. _SpecTypeSpecificationIntegerValue:
5237
5238Specification Integer Value
5239^^^^^^^^^^^^^^^^^^^^^^^^^^^
5240
5241This set of attributes specifies an integer value. Only the ``description``
5242attribute is mandatory. The explicit attributes for this type are:
5243
5244assert
5245    The attribute value shall be a :ref:`SpecTypeSpecificationIntegerAssert`.
5246    This optional attribute defines the value constraints of the specified
5247    integer value.  In case the assert attribute is not present, then the value
5248    of the specified integer value may be every valid integer number.
5249
5250description
5251    The attribute value shall be an optional string. It shall be the
5252    description of the specified integer value.
5253
5254This type is used by the following types:
5255
5256* :ref:`SpecTypeSpecificationInformation`
5257
5258.. _SpecTypeSpecificationList:
5259
5260Specification List
5261^^^^^^^^^^^^^^^^^^
5262
5263This set of attributes specifies a list of attributes or values. All explicit
5264attributes shall be specified. The explicit attributes for this type are:
5265
5266description
5267    The attribute value shall be an optional string. It shall be the
5268    description of the list.
5269
5270spec-type
5271    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
5272    specification type of elements of the list.
5273
5274This type is used by the following types:
5275
5276* :ref:`SpecTypeSpecificationInformation`
5277
5278.. _SpecTypeSpecificationMandatoryAttributes:
5279
5280Specification Mandatory Attributes
5281^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5282
5283It defines which explicit attributes are mandatory.
5284
5285A value of this type shall be of one of the following variants:
5286
5287* The value may be a list. Each list element shall be a :ref:`SpecTypeName`.
5288  The list defines the mandatory attributes through their key names.
5289
5290* The value may be a string. It defines how many explicit attributes are
5291  mandatory.  If `none` is used, then none of the explicit attributes is
5292  mandatory, they are all optional. The value shall be an element of
5293
5294  * "``all``",
5295
5296  * "``at-least-one``",
5297
5298  * "``at-most-one``",
5299
5300  * "``exactly-one``", and
5301
5302  * "``none``".
5303
5304This type is used by the following types:
5305
5306* :ref:`SpecTypeSpecificationAttributeSet`
5307
5308.. _SpecTypeSpecificationMemberLinkRole:
5309
5310Specification Member Link Role
5311^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5312
5313This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
5314value is ``spec-member``. It defines the specification membership role of
5315links.
5316
5317.. _SpecTypeSpecificationRefinementLinkRole:
5318
5319Specification Refinement Link Role
5320^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5321
5322This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
5323value is ``spec-refinement``. It defines the specification refinement role of
5324links. All explicit attributes shall be specified. The explicit attributes for
5325this type are:
5326
5327spec-key
5328    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
5329    specification type refinement attribute key of the specification
5330    refinement.
5331
5332spec-value
5333    The attribute value shall be a :ref:`SpecTypeName`. It shall be the
5334    specification type refinement attribute value of the specification
5335    refinement.
5336
5337.. _SpecTypeSpecificationStringAssert:
5338
5339Specification String Assert
5340^^^^^^^^^^^^^^^^^^^^^^^^^^^
5341
5342A value of this type shall be an expression which asserts that the string of
5343the specified attribute satisfies the required constraints.
5344
5345A value of this type shall be of one of the following variants:
5346
5347* The value may be a set of attributes. Each attribute defines an operator.
5348  Exactly one of the explicit attributes shall be specified. The explicit
5349  attributes for this type are:
5350
5351  and
5352      The attribute value shall be a list. Each list element shall be a
5353      :ref:`SpecTypeSpecificationStringAssert`. The *and* operator evaluates to
5354      the *logical and* of the evaluation results of the expressions in the
5355      list.
5356
5357  contains
5358      The attribute value shall be a list of strings. The *contains* operator
5359      evaluates to true, if the string to check converted to lower case with
5360      all white space characters converted to a single space character contains
5361      a string of the list of strings of this attribute, otherwise to false.
5362
5363  eq
5364      The attribute value shall be a string. The *eq* operator evaluates to
5365      true, if the string to check is equal to the value of this attribute,
5366      otherwise to false.
5367
5368  ge
5369      The attribute value shall be a string. The *ge* operator evaluates to
5370      true, if the string to check is greater than or equal to the value of
5371      this attribute, otherwise to false.
5372
5373  gt
5374      The attribute value shall be a string. The *gt* operator evaluates to
5375      true, if the string to check is greater than the value of this attribute,
5376      otherwise to false.
5377
5378  in
5379      The attribute value shall be a list of strings. The *in* operator
5380      evaluates to true, if the string to check is contained in the list of
5381      strings of this attribute, otherwise to false.
5382
5383  le
5384      The attribute value shall be a string. The *le* operator evaluates to
5385      true, if the string to check is less than or equal to the value of this
5386      attribute, otherwise to false.
5387
5388  lt
5389      The attribute value shall be a string. The *lt* operator evaluates to
5390      true, if the string to check is less than the value of this attribute,
5391      otherwise to false.
5392
5393  ne
5394      The attribute value shall be a string. The *ne* operator evaluates to
5395      true, if the string to check is not equal to the value of this attribute,
5396      otherwise to false.
5397
5398  not
5399      The attribute value shall be a :ref:`SpecTypeSpecificationStringAssert`.
5400      The *not* operator evaluates to the *logical not* of the evaluation
5401      results of the expression.
5402
5403  or
5404      The attribute value shall be a list. Each list element shall be a
5405      :ref:`SpecTypeSpecificationStringAssert`. The *or* operator evaluates to
5406      the *logical or* of the evaluation results of the expressions in the
5407      list.
5408
5409  re
5410      The attribute value shall be a string. The *re* operator evaluates to
5411      true, if the string to check matches with the regular expression of this
5412      attribute, otherwise to false.
5413
5414  uid
5415      The attribute shall have no value. The *uid* operator evaluates to true,
5416      if the string is a valid UID, otherwise to false.
5417
5418* The value may be a list. Each list element shall be a
5419  :ref:`SpecTypeSpecificationStringAssert`. This list of expressions evaluates
5420  to the *logical or* of the evaluation results of the expressions in the list.
5421
5422This type is used by the following types:
5423
5424* :ref:`SpecTypeSpecificationStringAssert`
5425
5426* :ref:`SpecTypeSpecificationStringValue`
5427
5428.. _SpecTypeSpecificationStringValue:
5429
5430Specification String Value
5431^^^^^^^^^^^^^^^^^^^^^^^^^^
5432
5433This set of attributes specifies a string. Only the ``description`` attribute
5434is mandatory. The explicit attributes for this type are:
5435
5436assert
5437    The attribute value shall be a :ref:`SpecTypeSpecificationStringAssert`.
5438    This optional attribute defines the constraints of the specified string.
5439    In case the assert attribute is not present, then the specified string may
5440    be every valid string.
5441
5442description
5443    The attribute value shall be an optional string. It shall be the
5444    description of the specified string attribute.
5445
5446This type is used by the following types:
5447
5448* :ref:`SpecTypeSpecificationInformation`
5449
5450.. _SpecTypeTestCaseAction:
5451
5452Test Case Action
5453^^^^^^^^^^^^^^^^
5454
5455This set of attributes specifies a test case action. All explicit attributes
5456shall be specified. The explicit attributes for this type are:
5457
5458action-brief
5459    The attribute value shall be an optional string. It shall be the test case
5460    action brief description.
5461
5462action-code
5463    The attribute value shall be a string. It shall be the test case action
5464    code.
5465
5466checks
5467    The attribute value shall be a list. Each list element shall be a
5468    :ref:`SpecTypeTestCaseCheck`.
5469
5470links
5471    The attribute value shall be a list. Each list element shall be a
5472    :ref:`SpecTypeLink`. The links should use the
5473    :ref:`SpecTypeRequirementValidationLinkRole` for validation tests and the
5474    :ref:`SpecTypeUnitTestLinkRole` for unit tests.
5475
5476This type is used by the following types:
5477
5478* :ref:`SpecTypeTestCaseItemType`
5479
5480.. _SpecTypeTestCaseCheck:
5481
5482Test Case Check
5483^^^^^^^^^^^^^^^
5484
5485This set of attributes specifies a test case check. All explicit attributes
5486shall be specified. The explicit attributes for this type are:
5487
5488brief
5489    The attribute value shall be an optional string. It shall be the test case
5490    check brief description.
5491
5492code
5493    The attribute value shall be a string. It shall be the test case check
5494    code.
5495
5496links
5497    The attribute value shall be a list. Each list element shall be a
5498    :ref:`SpecTypeLink`. The links should use the
5499    :ref:`SpecTypeRequirementValidationLinkRole` for validation tests and the
5500    :ref:`SpecTypeUnitTestLinkRole` for unit tests.
5501
5502This type is used by the following types:
5503
5504* :ref:`SpecTypeTestCaseAction`
5505
5506.. _SpecTypeTestContextMember:
5507
5508Test Context Member
5509^^^^^^^^^^^^^^^^^^^
5510
5511A value of this type shall be of one of the following variants:
5512
5513* The value may be a set of attributes. This set of attributes defines an
5514  action requirement test context member. All explicit attributes shall be
5515  specified. The explicit attributes for this type are:
5516
5517  brief
5518      The attribute value shall be an optional string. It shall be the test
5519      context member brief description.
5520
5521  description
5522      The attribute value shall be an optional string. It shall be the test
5523      context member description.
5524
5525  member
5526      The attribute value shall be a string. It shall be the test context
5527      member definition.  It shall be a valid C structure member definition
5528      without a trailing ``;``.
5529
5530* There may be no value (null).
5531
5532This type is used by the following types:
5533
5534* :ref:`SpecTypeActionRequirementItemType`
5535
5536* :ref:`SpecTypeRuntimeMeasurementTestItemType`
5537
5538* :ref:`SpecTypeTestCaseItemType`
5539
5540.. _SpecTypeTestHeader:
5541
5542Test Header
5543^^^^^^^^^^^
5544
5545A value of this type shall be of one of the following variants:
5546
5547* The value may be a set of attributes. This set of attributes specifies a test
5548  header.  In case a test header is specified, then instead of a test case a
5549  test run function will be generated.  The test run function will be declared
5550  in the test header target file and defined in the test source target file.
5551  The test run function can be used to compose test cases.  The test header
5552  file is not automatically included in the test source file.  It should be
5553  added to the includes or local includes of the test. All explicit attributes
5554  shall be specified. The explicit attributes for this type are:
5555
5556  code
5557      The attribute value shall be an optional string. If the value is present,
5558      then it shall be the test header code.  The header code is placed at file
5559      scope after the general test declarations and before the test run
5560      function declaration.
5561
5562  freestanding
5563      The attribute value shall be a boolean. The value shall be ``true``, if
5564      the test case is freestanding, otherwise ``false``.  Freestanding test
5565      cases are not statically registered.  Instead the generated test runner
5566      uses :c:func:`T_case_begin` and :c:func:`T_case_end`.
5567
5568  includes
5569      The attribute value shall be a list of strings. It shall be a list of
5570      header files included by the header file via ``#include <...>``.
5571
5572  local-includes
5573      The attribute value shall be a list of strings. It shall be a list of
5574      header files included by the header file via ``#include "..."``.
5575
5576  run-params
5577      The attribute value shall be a list. Each list element shall be a
5578      :ref:`SpecTypeTestRunParameter`.
5579
5580  target
5581      The attribute value shall be a string. It shall be the path to the
5582      generated test header file.
5583
5584* There may be no value (null).
5585
5586This type is used by the following types:
5587
5588* :ref:`SpecTypeActionRequirementItemType`
5589
5590* :ref:`SpecTypeTestCaseItemType`
5591
5592.. _SpecTypeTestRunParameter:
5593
5594Test Run Parameter
5595^^^^^^^^^^^^^^^^^^
5596
5597This set of attributes specifies a parameter for the test run function. In case
5598this parameter is used in an :ref:`SpecTypeActionRequirementItemType` item,
5599then the parameter is also added as a member to the test context, see
5600:ref:`SpecTypeTestContextMember`. All explicit attributes shall be specified.
5601The explicit attributes for this type are:
5602
5603description
5604    The attribute value shall be a string. It shall be the description of the
5605    parameter.
5606
5607dir
5608    The attribute value shall be an :ref:`SpecTypeInterfaceParameterDirection`.
5609
5610name
5611    The attribute value shall be a string. It shall be the parameter name.
5612
5613specifier
5614    The attribute value shall be a string. It shall be the complete function
5615    parameter specifier.  Use ``${.:name}`` for the parameter name, for example
5616    ``"int ${.:name}"``.
5617
5618This type is used by the following types:
5619
5620* :ref:`SpecTypeTestHeader`
5621
5622.. _SpecTypeTestSupportMethod:
5623
5624Test Support Method
5625^^^^^^^^^^^^^^^^^^^
5626
5627A value of this type shall be of one of the following variants:
5628
5629* The value may be a set of attributes. This set of attributes defines an
5630  action requirement test support method. All explicit attributes shall be
5631  specified. The explicit attributes for this type are:
5632
5633  brief
5634      The attribute value shall be an optional string. It shall be the test
5635      support method brief description.
5636
5637  code
5638      The attribute value shall be a string. It shall be the test support
5639      method code.  The code may use a local variable ``ctx`` which points to
5640      the test context, see :ref:`SpecTypeTestContextMember`.
5641
5642  description
5643      The attribute value shall be an optional string. It shall be the test
5644      support method description.
5645
5646* There may be no value (null).
5647
5648This type is used by the following types:
5649
5650* :ref:`SpecTypeActionRequirementItemType`
5651
5652* :ref:`SpecTypeRuntimeMeasurementTestItemType`
5653
5654* :ref:`SpecTypeRuntimePerformanceRequirementItemType`
5655
5656* :ref:`SpecTypeTestCaseItemType`
5657
5658.. _SpecTypeUID:
5659
5660UID
5661^^^
5662
5663The value shall be a string. The string shall be a valid absolute or relative
5664item UID.
5665
5666This type is used by the following types:
5667
5668* :ref:`SpecTypeLink`
5669
5670.. _SpecTypeUnitTestLinkRole:
5671
5672Unit Test Link Role
5673^^^^^^^^^^^^^^^^^^^
5674
5675This type refines the :ref:`SpecTypeLink` through the ``role`` attribute if the
5676value is ``unit-test``. It defines the unit test role of links.  For unit tests
5677the link target should be the :ref:`SpecTypeInterfaceDomainItemType` containing
5678the software unit. All explicit attributes shall be specified. The explicit
5679attributes for this type are:
5680
5681name
5682    The attribute value shall be a string. It shall be the name of the tested
5683    software unit.
Note: See TracBrowser for help on using the repository browser.