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

Last change on this file since 3f9fa47 was 3f9fa47, checked in by Sebastian Huber <sebastian.huber@…>, on 07/27/20 at 13:44:04

eng: Add ability to skip action transitions

Sometimes the pre-conditions in an action requirement are not
independent and it is necessary skip a certain set of pre-condition
states. This should be used with care since no test code is run in
these cases. There shall be a reason given why skipping a transition is
justified.

Update #3715.

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