Requirements#

Containers Library Requirements
status: draft
security: YES
safety: ASIL_B
tags: requirements, containers_library, containers

Functional Requirements#

Dynamic Array
status: valid
security: NO
safety: ASIL_B

The Containers library shall provide a fixed-size array container with construction-time size specification.

Intrusive List
status: valid
security: NO
safety: ASIL_B

The Containers library shall provide an intrusive doubly-linked list based on the C++ standardization proposal P0406R1.

Type Safety
status: valid
security: NO
safety: ASIL_B
tags: baselibs, containers
reqtype: Functional

The Containers library shall enforce compile-time type safety for all container operations.

Non-Relocatable Vector
status: valid
security: NO
safety: ASIL_B

The Containers library shall provide a non-relocatable vector container that maintains stable element addresses.

Non-Functional Requirements#

Deterministic Behavior
status: valid
security: NO
safety: ASIL_B
tags: baselibs, containers
reqtype: Non-Functional

The Containers library shall provide deterministic behavior with no dynamic memory allocation.

Assumptions of Use (AoU)#

Check Capacity
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall verify sufficient capacity or handle allocation failures before insertion operations to prevent exceeding container limits and undefined behavior.

Iterator Validity
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall ensure that iterators are not used after operations that invalidate them and refresh iterators after modifying operations.

Element Lifetime and Ownership
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall ensure that elements stored in containers remain valid throughout their lifetime in the container, and for intrusive containers, that element objects are not destroyed or moved while contained within the container.

Thread Safety
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Non-Functional

The user shall implement external synchronization mechanisms when accessing or modifying container objects from multiple threads concurrently, as the library provides no internal thread safety guarantees.

Index Bounds Checking
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall ensure that all index-based access operations use valid indices within the container’s current size range to prevent out-of-bounds access and undefined behavior.

Container State Verification
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall verify container state before performing operations that depend on specific states, such as checking if a container is non-empty before accessing elements.

Memory Resource Management
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Non-Functional

The user shall provide sufficient memory resources for all container operations.

Element Type Requirements
status: valid
security: NO
safety: ASIL_B
tags: inspected, baselibs, containers
reqtype: Functional

The user shall ensure that element types are copy constructible, move constructible and destructible, and additionally for intrusive containers that they provide the required intrusive node members.