module ara::core — Adaptive Platform Core
Module guideAI-GENERATED
Provides platform-wide C++ basic types, fail-safe result types, and deterministic memory pools.
Provides platform-wide C++ basic types, fail-safe result types, and deterministic memory pools.
The module core provides the platform-wide basic types, PMR memory pools, and asynchronous synchronization primitives Future and Promise for the AUTOSAR Adaptive Platform (SWArchitecture p. 60, [SWS_CORE_00326]). To meet strict safety and real-time requirements, the sum type Result<T, E> replaces classic exceptions with deterministic return values ([SWS_CORE_00751]). In the event of irreparable system errors, the fail-fast function Abort() ensures immediate, controlled process termination ([SWS_CORE_00052]).
The module core functions as a basic functional cluster of the AUTOSAR Adaptive Platform and provides uniform data structures, asynchronous communication primitives, and memory management mechanisms for all platform services and applications (SWArchitecture p. 60). To guarantee deterministic execution and functional safety in POSIX operating system environments, core replaces conventional C++ exceptions with the type-safe result type Result<T, E> and controls dynamic memory allocations via polymorphic allocators ([SWS_CORE_00041], [SWS_CORE_00751]).
Context diagram: Embedding of the functional cluster ara::core and its interface areas into the Adaptive Platform. Sources: SWArchitecture p. 60, SWArchitecture p. 36
For concurrent synchronization, core implements the interplay between Future and Promise ([SWS_CORE_00326], [SWS_CORE_00344]). While the producer provides the computation status or errors via the Promise, Future allows the consumer both time-monitored queries via wait_for() and reactive forwardings by means of then() ([SWS_CORE_00329], [SWS_CORE_00331], TimeSynchronization p. 90).
Activity diagram: Deterministic evaluation path of a Result object in the error-free case and in the error case. Sources: [SWS_CORE_00751], [SWS_CORE_00755], [SWS_CORE_00757], [SWS_CORE_00766]
To avoid fragmentation, the module provides pool resources such as SynchronizedPoolResource and UnsynchronizedPoolResource that restrict allocations to fixed-size chunks ([SWS_CORE_00030], [SWS_CORE_00067], SWArchitecture p. 61). If an insurmountable error condition occurs, the platform enforces immediate fail-fast termination of the process via Abort() following the prior execution of a registered AbortHandler ([SWS_CORE_00051], [SWS_CORE_00052]).
System Role and Architectural Foundation of ara::core
The module core forms the fundamental foundation of the AUTOSAR Adaptive Platform and provides basic type definitions, memory management mechanisms, and basic interfaces for all functional clusters and Adaptive Applications (SWArchitecture p. 60). In contrast to application-specific services, core is designed to be process-local and defines the essential abstractions to realize portable, deterministic, and resource-efficient C++ software within POSIX operating system environments (SWArchitecture p. 36).
Architecturally, the module functions as a standardized interface between the low-level operating system functions and the higher layers of the Adaptive Platform (SWArchitecture p. 60). In doing so, core addresses key requirements for functional safety (ASIL) and real-time capability by making dynamic memory allocations controllable and dispensing with the pervasive use of C++ exceptions in regular control flow ([SWS_CORE_00052], [SWS_CORE_00751]). Providing platform-wide basic types prevents proprietary isolated solutions between middleware components such as ara::com or ara::ts (ARAComAPI p. 46, TimeSynchronization p. 90).
Context diagram: Embedding of the functional cluster ara::core and its interface areas into the Adaptive Platform. Sources: SWArchitecture p. 60, SWArchitecture p. 36
Asynchronous Control and Data Flows via Future and Promise
For concurrent and decoupled interaction, ara::core implements the producer-consumer pattern using Promise and Future ([SWS_CORE_00326], [SWS_CORE_00341]). A Promise represents the writing interface through which an asynchronous worker or a communication skeleton deposits the result or an error ([SWS_CORE_00345], [SWS_CORE_00353]). The consuming counterpart is Future, which monitors the shared state and encapsulates type-safe access to the return value (ARAComAPI p. 46, ARAComAPI p. 59).
To prevent client threads from blocking, Future provides time-bounded wait operations in addition to the synchronous, blocking query function get() ([SWS_CORE_00326]): wait_for() and wait_until() return a status indicator of type FutureStatus ([SWS_CORE_00329], [SWS_CORE_00330], ARAComAPI p. 1). Via the method then(), callbacks can be registered that are executed automatically upon arrival of the result; optionally, a user-specific Executor can be integrated here to direct execution to specific thread pools ([SWS_CORE_00024], [SWS_CORE_00331], [SWS_CORE_00337]). Copy operations are explicitly prohibited for Future and Promise to ensure exclusive ownership ([SWS_CORE_00334], [SWS_CORE_00350]).
Sequence diagram: Asynchronous value and error transmission between worker and application via Promise and Future. Sources: [SWS_CORE_00326], [SWS_CORE_00329], [SWS_CORE_00344], [SWS_CORE_00345], TimeSynchronization p. 90
Deterministic Error Management: Result, ErrorCode, and ErrorDomain
A core aspect of safety-oriented programming in the Adaptive Platform is the strict avoidance of uncontrolled exceptions during regular operation. ara::core::Result<T, E> functions as a type-safe sum type encapsulation that contains either a success payload value of type T or an error object of type E ([SWS_CORE_00721], [SWS_CORE_00723], [SWS_CORE_00751]). Specializations exist both for reference types Result<T&, E> and for operations without return values Result<void, E> ([SWS_CORE_00821], [SWS_CORE_00908]).
The contained state is checked via HasValue() or the explicit conversion operator operator bool() ([SWS_CORE_00751], [SWS_CORE_00752]). Payload data is accessed via Value() or operator*(), while errors are queried via Error() ([SWS_CORE_00755], [SWS_CORE_00757]). For functional further processing and error propagation, Result provides methods such as Bind(), ValueOr(), and Resolve() ([SWS_CORE_00761], [SWS_CORE_00768]). Errors are modeled via ErrorCode, which links a numerical error code CodeType with a unique domain identifier ErrorDomain as well as optional diagnostic additional data SupportDataType ([SWS_CORE_00121], [SWS_CORE_00122], [SWS_CORE_00512]). The method ValueOrThrow() exists as a bridge for environments with enabled exception handling, but throws the exception associated with the domain in the event of an error ([SWS_CORE_00154], [SWS_CORE_00766]).
Activity diagram: Deterministic evaluation path of a Result object in the error-free case and in the error case. Sources: [SWS_CORE_00751], [SWS_CORE_00755], [SWS_CORE_00757], [SWS_CORE_00766]
Polymorphic Memory Management via Pool Resources
Dynamic allocation on the default heap entails risks regarding non-determinism and memory fragmentation. ara::core therefore integrates memory management based on polymorphic memory resources (PMR), patterned after the C++ NVI pattern (Non-Virtual Interface) (SWArchitecture p. 61). The base class MemoryResource declares the public interfaces allocate() and deallocate(), which internally invoke the pure virtual methods do_allocate() and do_deallocate() ([SWS_CORE_00041], [SWS_CORE_00061]).
Specialized pool resources are available for real-time-critical allocation patterns: SynchronizedPoolResource provides thread-safe allocations from preconfigured chunks and block sizes via PoolOptions ([SWS_CORE_00027], [SWS_CORE_00030]). For strictly thread-local processing phases without synchronization overhead, UnsynchronizedPoolResource is used ([SWS_CORE_00046], [SWS_CORE_00067]). Via release(), the entire allocated memory area can be returned to the upstream upstream_resource() in a single step, which effectively prevents memory leaks in phase-oriented workflows ([SWS_CORE_00037], [SWS_CORE_00038], [SWS_CORE_00065]).
Class diagram: Hierarchy of polymorphic memory resources according to the Non-Virtual Interface (NVI) pattern. Sources: SWArchitecture p. 61, [SWS_CORE_00030], [SWS_CORE_00041], [SWS_CORE_00061]
Fundamental Utility and Container Types (Optional, Array, Vector, Map)
To avoid undefined behavior and ensure clear semantics, core standardizes elementary containers and utility types. ara::core::Optional<T> represents values that may or may not be present without having to resort to unsafe null pointers ([SWS_CORE_01103], [SWS_CORE_01104], ARAComAPI p. 1). The state is queried via has_value() or operator bool(), while access is performed via value(), value_or(), or operator*() ([SWS_CORE_01128], [SWS_CORE_01129], [SWS_CORE_01130], [SWS_CORE_01134]). Special reference overloads Optional<T&> allow optional references to be held safely ([SWS_CORE_01151], [SWS_CORE_01167]).
For fixed-size data structures, the module provides Array<T, N>, which supports direct indexing via operator[], bounds-checked access using at(), as well as standard iterators ([SWS_CORE_01250], [SWS_CORE_01265], [SWS_CORE_01273]). Comparison operators are implemented according to strict coding guidelines with bool return types and exception safety ([SWS_CORE_01290], CPP14Guidelines p. 241). Dynamically growing sequences and associative containers are covered by Vector<T, Allocator> and Map<Key, T, Compare, Allocator> ([SWS_CORE_01318], [SWS_CORE_01428]). Both types accept configurable allocators, allowing allocations to be handled seamlessly via the polymorphic MemoryResource pools ([SWS_CORE_00066], [SWS_CORE_01303], [SWS_CORE_01406]).
Error Behavior and Fail-Fast Termination
If a process cannot safely compensate for a severe error state, the fail-fast principle of the Adaptive Platform takes effect (SWArchitecture p. 60). Via the interface Abort(), immediate, unconditional termination of the running process is brought about ([SWS_CORE_00052]). The function is declared as [[noreturn]] and noexcept to ensure that no stack unwinding routines or destructors produce incorrect subsequent states ([SWS_CORE_00052], SWArchitecture p. 36).
To save volatile diagnostic information or execute final emergency logging actions prior to termination, applications can register user-specific callback functions via SetAbortHandler() or AddAbortHandler() ([SWS_CORE_00050], [SWS_CORE_00051], [SWS_CORE_00054]). A registered abort handler must satisfy the signature void() noexcept ([SWS_CORE_00053]). After execution of the handler, the platform enforces final termination of the process so that continued execution in an undefined memory state is not possible (SWArchitecture p. 60).
Activity diagram: Control flow of the fail-fast abort via Abort() with execution of the AbortHandler. Sources: SWArchitecture p. 60, [SWS_CORE_00051], [SWS_CORE_00052]
Further detailed evidence
The specification of core in release R25-11 is based on a series of normative requirements and architectural models. Constitutive for process lifecycle and emergency-stop behavior are Initialize(), Deinitialize() as well as Abort() and SetAbortHandler() ([SWS_CORE_00051], [SWS_CORE_00052], SWArchitecture p. 60). The asynchronous communication model relies significantly on Future ([SWS_CORE_00326], [SWS_CORE_00329]) and Promise ([SWS_CORE_00344], [SWS_CORE_00345]), whose interplay is verified in application-level clusters such as ara::com and ara::ts (ARAComAPI p. 46, TimeSynchronization p. 90).
Error-free data and memory management is standardized by the specifications for Result ([SWS_CORE_00751], [SWS_CORE_00766]), ErrorCode ([SWS_CORE_00512]), and the PMR memory classes SynchronizedPoolResource as well as UnsynchronizedPoolResource ([SWS_CORE_00030], [SWS_CORE_00046], SWArchitecture p. 61). In addition, container and comparison guidelines define deterministic data storage in safety-critical overall systems ([SWS_CORE_01103], [SWS_CORE_01250], [SWS_CORE_01318], CPP14Guidelines p. 241).
This guide was generated by an AI curation assistant based on the AUTOSAR specification for R25-11.
function: 1060 type alias: 101 class: 34 struct: 26 variable: 13 enumeration: 3
ara::core::literals::string_view_literals
string_view_hash (std)tuple_elementtuple_sizeClasses
ArrayBasicStringBitsetCoreErrorDomainCoreExceptionErrorCodeErrorDomainExceptionExecutorFutureFutureErrorDomainFutureExceptionhashhash (std)in_place_index_tin_place_tin_place_type_tInstanceSpecifieris_nothrow_swappableMapMemoryResourceMonostateMonotonicBufferResourcenullopt_tOptionalPolymorphicAllocatorPoolOptionsPromiseResultSpanSteadyClockStringViewSynchronizedPoolResourcetuple_elementtuple_sizeUnsynchronizedPoolResourceVariantvariant_alternativevariant_sizeVectorFunctions
AbortAbortHandlerPrototypeAddAbortHandleras_bytesas_writable_bytesdataDeinitializeemptyGetCoreErrorDomainGetDefaultResourceGetFutureErrorDomainInitializeNewDeleteResourceNullMemoryResourceSetAbortHandlerSetDefaultResourcesizestring_view_Types
AbortHandlerByteStringvariant_alternative_tEnumerations
CoreErrcFutureErrcFutureStatusConstants
dynamic_extentin_placein_place_indexin_place_typenulloptvariant_size_vTopic map
ara::core
67No element data available for this release
ara::core
Implementation of std::array type from [array.syn] The implicitly-declared special member functions specified in [array.cons] are not expli ≙ std::array
Access get 4
template <std::size_t I, typename T, std::size_t N> constexpr T & get (Array< T, N > &a) noexcept; SWS_CORE_01282template <std::size_t I, typename T, std::size_t N> constexpr T && get (Array< T, N > &&a) noexcept; SWS_CORE_01283template <std::size_t I, typename T, std::size_t N> constexpr T const & get (const Array< T, N > &a) noexcept; SWS_CORE_01284template <size_t I, class T, size_t N> constexpr const T && get (const Array< T, N > &&) noexcept; SWS_CORE_01286Comparison != < <= == > >= 6
template <typename T, std::size_t N> bool operator!= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01291template <typename T, std::size_t N> bool operator< (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01292template <typename T, std::size_t N> bool operator<= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01294template <typename T, std::size_t N> bool operator== (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01290template <typename T, std::size_t N> bool operator> (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01293template <typename T, std::size_t N> bool operator>= (const Array< T, N > &lhs, const Array< T, N > &rhs) noexcept(noexcept(std::declval< T & >()==std::declval< T & >())); SWS_CORE_01295Swap swap 1
template <typename T, std::size_t N> void swap (Array< T, N > &lhs, Array< T, N > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01296Implementation of std::pmr::basic_string type from [basic.string] ≙ std::pmr::basic_string
Comparison != < <= == > >= 18
template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03367template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03368template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator!= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03369template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03370template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03371template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator< (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03372template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03376template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03377template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator<= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03378template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03364template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03365template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator== (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03366template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03373template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03374template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator> (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03375template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const BasicString< Allocator > &lhs, const Basic String< Allocator > &rhs) noexcept; SWS_CORE_03379template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03380template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> bool operator>= (const charT *lhs, const BasicString< Allocator > &rhs); SWS_CORE_03381Concatenation + 12
template <typename Allocator> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, const BasicString< Allocator > &rhs); SWS_CORE_03352template <typename Allocator> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, const BasicString< Allocator > &rhs); SWS_CORE_03353template <typename Allocator> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, BasicString< Allocator > &&rhs); SWS_CORE_03354template <typename Allocator> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, BasicString< Allocator > &&rhs); SWS_CORE_03355template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const charT *lhs, const Basic String< Allocator > &rhs); SWS_CORE_03356template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const charT *lhs, BasicString< Allocator > &&rhs); SWS_CORE_03357template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (charT lhs, const BasicString< Allocator > &rhs); SWS_CORE_03358template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (charT lhs, BasicString< Allocator > &&rhs); SWS_CORE_03359template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, const charT *rhs); SWS_CORE_03360template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, const charT *rhs); SWS_CORE_03361template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (const BasicString< Allocator > &lhs, charT rhs); SWS_CORE_03362template <typename Allocator, typename charT = typename std::allocator_traits<Allocator>::value_type> BasicString< Allocator > operator+ (BasicString< Allocator > &&lhs, charT rhs); SWS_CORE_03363Input/output getline << >> 6
template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str, charT delim); SWS_CORE_03401template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &&is, BasicString< Allocator > &str, charT delim); SWS_CORE_03402template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str); SWS_CORE_03403template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & getline (std::basic_istream< charT, traits > &&is, BasicString< Allocator > &str); SWS_CORE_03404template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_ostream< charT, traits > & operator<< (std::basic_ostream< charT, traits > &os, const BasicString< Allocator > &str); SWS_CORE_03400template <class charT = char, class traits = std::char_traits<char>, class Allocator = ara::core::PolymorphicAllocator<char>> std::basic_istream< charT, traits > & operator>> (std::basic_istream< charT, traits > &is, BasicString< Allocator > &str); SWS_CORE_03399Conversion to_string 9
String to_string (int val); SWS_CORE_03382String to_string (unsigned val); SWS_CORE_03383String to_string (long val); SWS_CORE_03384String to_string (unsigned long val); SWS_CORE_03385String to_string (long long val); SWS_CORE_03386String to_string (unsigned long long val); SWS_CORE_03387String to_string (float val); SWS_CORE_03388String to_string (double val); SWS_CORE_03389String to_string (long double val); SWS_CORE_03390Swap swap 1
template <typename Allocator> void swap (BasicString< Allocator > &lhs, BasicString< Allocator > &rhs); SWS_CORE_03296More stod stof stoi stol stold stoll stoul stoull 8
double stod (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03397float stof (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03396int stoi (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03391long stol (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03392long double stold (const ara::core::String &str, size_t *idx=nullptr); SWS_CORE_03398long long stoll (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03394unsigned long stoul (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03393unsigned long long stoull (const ara::core::String &str, size_t *idx=nullptr, int base=10); SWS_CORE_03395Implementation of std::bitset type from [bitset] ≙ std::bitset
Input/output << >> 2
template <class CharT = char, class Traits = std::char_traits<CharT>, std::size_t N> std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const Bitset< N > &x); SWS_CORE_01756template <class CharT, class Traits, std::size_t N> std::basic_istream< CharT, Traits > & operator>> (std::basic_istream< CharT, Traits > &is, Bitset< N > &x); SWS_CORE_01755More & | ˆ 3
template <std::size_t N> Bitset< N > operator& (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01752template <std::size_t N> Bitset< N > operator| (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01753template <std::size_t N> Bitset< N > operatorˆ (const Bitset< N > &, const Bitset< N > &) noexcept; SWS_CORE_01754An error domain for errors originating from the ara::core Functional Cluster.
inherits from ErrorDomain
Exception type thrown for ara::core errors.
inherits from Exception
Encapsulation of an error code
Creation MakeErrorCode 2
constexpr ErrorCode MakeErrorCode (FutureErrc code, Error Domain::SupportDataType data) noexcept; SWS_CORE_00490constexpr ErrorCode MakeErrorCode (CoreErrc code, ErrorDomain::Support DataType data) noexcept; SWS_CORE_05290Comparison != == 2
constexpr bool operator!= (const ErrorCode &lhs, const ErrorCode &rhs) noexcept; SWS_CORE_00572constexpr bool operator== (const ErrorCode &lhs, const ErrorCode &rhs) noexcept; SWS_CORE_00571Encapsulation of an ErrorDomain
base of CoreErrorDomain, FutureErrorDomain
Base type for all ARA exception types
inherits from std::exception
base of CoreException, FutureException
Provides an interface for a executing context, which asynchronously invokes Callable ([4] [func.wrap.func]) objects in a guaranteed thread-s
Implementation of std::future from [future.syn] in [11] ≙ std::future
Specializations Future< void, E >
Error domain for errors originating from ara::core::Future and ara::core::Promise
inherits from ErrorDomain
Exception type thrown by ara::core::Future and ara::core::Promise
inherits from Exception
≙ [bitset]
Denote an index-distinguishing operation to be performed in-place
Denote an operation to be performed in-place
Denote a type-distinguishing operation to be performed in-place
Representation of an AUTOSAR Instance Specifier, which is basically an AUTOSAR shortName path wrapper.
Comparison != == 2
bool operator!= (ara::core::StringView lhs, const InstanceSpecifier &rhs) noexcept; SWS_CORE_08082bool operator== (ara::core::StringView lhs, const InstanceSpecifier &rhs) noexcept; SWS_CORE_08081As per std::is_nothrow_swappable, see [meta.unary.prop] in [11] ≙ std::is_nothrow_swappable
Implementation of std::pmr::map container from [map] ≙ std::pmr::map
Swap swap 1
template <class Key, class T, class Compare, class Allocator> void swap (Map< Key, T, Compare, Allocator > &lhs, Map< Key, T, Compare, Allocator > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01496Implementation of std::pmr::memory_resource type from [mem.res.class] ≙ std::pmr::memory_resource
base of MonotonicBufferResource, SynchronizedPoolResource, UnsynchronizedPoolResource
Comparison == 1
bool operator== (const MemoryResource &a, const MemoryResource &b) noexcept; SWS_CORE_06561≙ [variant]
Access get get_if holds_alternative visit 15
template <std::size_t I, typename... Types> constexpr variant_alternative_t< I, Variant< Types... > > & get ( Variant< Types... > &variant) noexcept; SWS_CORE_01613template <std::size_t I, typename... Types> constexpr variant_alternative_t< I, Variant< Types... > > && get ( Variant< Types... > &&variant) noexcept; SWS_CORE_01614template <std::size_t I, typename... Types> constexpr const variant_alternative_t< I, Variant< Types... > > & get (const Variant< Types... > &variant) noexcept; SWS_CORE_01615template <std::size_t I, typename... Types> constexpr const variant_alternative_t< I, Variant< Types... > > && get (const Variant< Types... > &&variant) noexcept; SWS_CORE_01616template <typename T, typename... Types> constexpr T & get (Variant< Types... > &variant) noexcept; SWS_CORE_01617template <typename T, typename... Types> constexpr T && get (Variant< Types... > &&variant) noexcept; SWS_CORE_01618template <typename T, typename... Types> constexpr const T & get (const Variant< Types... > &variant) noexcept; SWS_CORE_01619template <typename T, typename... Types> constexpr const T && get (const Variant< Types... > &&variant) noexcept; SWS_CORE_01620template <std::size_t I, typename... Types> std::add_pointer_t< variant_alternative_t< I, Variant< Types... > > > get_if (Variant< Types... > *variant) noexcept; SWS_CORE_01621template <std::size_t I, typename... Types> std::add_pointer_t< const variant_alternative_t< I, Variant< Types... > > > get_if (const Variant< Types... > *variant) noexcept; SWS_CORE_01622template <typename T, typename... Types> std::add_pointer_t< T > get_if (Variant< Types... > *variant) noexcept; SWS_CORE_01623template <typename T, typename... Types> std::add_pointer_t< const T > get_if (const Variant< Types... > *variant) noexcept; SWS_CORE_01624template <typename T, typename... Types> constexpr bool holds_alternative (const Variant< Types... > &variant) noexcept; SWS_CORE_01626template <typename ReturnType, typename Visitor, typename... Variants> constexpr {<invoke-result-decltype-1>} visit (Visitor &&visitor, Variants &&... variants); SWS_CORE_01633template <typename Visitor, typename... Variants> constexpr {<invoke-result-decltype-2>} visit (Visitor &&visitor, Variants &&... variants); SWS_CORE_01634Comparison != < <= == > >= 12
template <typename... Types> constexpr bool operator!= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01628constexpr bool operator!= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01642template <typename... Types> constexpr bool operator< (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01629constexpr bool operator< (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01643template <typename... Types> constexpr bool operator<= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01631constexpr bool operator<= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01645template <typename... Types> constexpr bool operator== (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01627constexpr bool operator== (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01641template <typename... Types> constexpr bool operator> (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01630constexpr bool operator> (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01644template <typename... Types> constexpr bool operator>= (const Variant< Types... > &lhs, const Variant< Types... > &rhs); SWS_CORE_01632constexpr bool operator>= (Monostate lhs, Monostate rhs) noexcept; SWS_CORE_01646Swap swap 1
template <typename... Types> void swap (Variant< Types... > &lhs, Variant< Types... > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01696Implementation of std::pmr::monotonic_buffer_resource type from [mem.res.monotonic.buffer] ≙ std::pmr::monotonic_buffer_resource
inherits from MemoryResource
Shall implement std::nullopt_t ≙ std::nullopt_t
Implementation of std::optional
Specializations Optional< T & >
Creation make_optional 3
template <typename T> constexpr Optional< std::decay_t< T > > make_optional (T &&) noexcept(std::is_nothrow_move_constructible< T >::value); SWS_CORE_01138template <typename T, typename... Args> constexpr Optional< T > make_optional (Args &&... args) noexcept(std::is_nothrow_constructible< T, Args... >::value); SWS_CORE_01139template <typename T, typename U, typename... Args> constexpr Optional< T > make_optional (std::initializer_list< U > il, Args &&... args) noexcept(std::is_nothrow_constructible< T, std::initializer_list< U > &, Args &&... >::value); SWS_CORE_01140Comparison != < <= == > >= 30
template <typename T, typename U> constexpr bool operator!= (const Optional< T > &, const Optional< U > &); SWS_CORE_01143template <typename T, typename U> constexpr bool operator!= (const Optional< T > &, const U &); SWS_CORE_01176template <typename T, typename U> constexpr bool operator!= (const U &, const Optional< T > &); SWS_CORE_01177template <typename T> constexpr bool operator!= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01188template <typename T> constexpr bool operator!= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01189template <typename T, typename U> constexpr bool operator< (const Optional< T > &, const Optional< U > &); SWS_CORE_01144template <typename T, typename U> constexpr bool operator< (const Optional< T > &, const U &); SWS_CORE_01178template <typename T, typename U> constexpr bool operator< (const U &, const Optional< T > &); SWS_CORE_01179template <typename T> constexpr bool operator< (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01190template <typename T> constexpr bool operator< (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01191template <typename T, typename U> constexpr bool operator<= (const Optional< T > &, const Optional< U > &); SWS_CORE_01146template <typename T, typename U> constexpr bool operator<= (const Optional< T > &, const U &); SWS_CORE_01180template <typename T, typename U> constexpr bool operator<= (const U &, const Optional< T > &); SWS_CORE_01181template <typename T> constexpr bool operator<= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01192template <typename T> constexpr bool operator<= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01193template <typename T, typename U> constexpr bool operator== (const Optional< T > &, const Optional< U > &); SWS_CORE_01142template <typename T, typename U> constexpr bool operator== (const Optional< T > &, const U &); SWS_CORE_01148template <typename T, typename U> constexpr bool operator== (const U &, const Optional< T > &); SWS_CORE_01149template <typename T> constexpr bool operator== (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01186template <typename T> constexpr bool operator== (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01187template <typename T, typename U> constexpr bool operator> (const Optional< T > &, const Optional< U > &); SWS_CORE_01145template <typename T, typename U> constexpr bool operator> (const Optional< T > &, const U &); SWS_CORE_01182template <typename T, typename U> constexpr bool operator> (const U &, const Optional< T > &); SWS_CORE_01183template <typename T> constexpr bool operator> (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01194template <typename T> constexpr bool operator> (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01195template <typename T, typename U> constexpr bool operator>= (const Optional< T > &, const Optional< U > &); SWS_CORE_01147template <typename T, typename U> constexpr bool operator>= (const Optional< T > &, const U &); SWS_CORE_01184template <typename T, typename U> constexpr bool operator>= (const U &, const Optional< T > &); SWS_CORE_01185template <typename T> constexpr bool operator>= (const Optional< T > &, nullopt_t) noexcept; SWS_CORE_01196template <typename T> constexpr bool operator>= (nullopt_t, const Optional< T > &) noexcept; SWS_CORE_01197Swap swap 1
template <typename T> void swap (Optional< T > &lhs, Optional< T > &rhs) noexcept(std::is_ nothrow_move_constructible< T >::value &&std::is_nothrow_move_ assignable< T >::value); SWS_CORE_01096Implementation of std::pmr::polymorphic_allocator from [mem.poly.allocator.class] ≙ std::pmr::polymorphic_allocator
Comparison == 1
template <class T1, class T2> bool operator== (const PolymorphicAllocator< T1 > &a, const PolymorphicAllocator< T2 > &b) noexcept; SWS_CORE_06560Implementation of std::pmr::pool_options from [mem.poly.pool_options.class] ≙ std::pmr::pool_options
ara::core specific variant of std::promise class The implementation shall flag the condition E!=ara::core::ErrorCode as a compile error. ≙ std::promise
Specializations Promise< void, E >
This class is a type that contains either a value or an error
Specializations Result< T &, E > Result< void, E >
Comparison != == 10
template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const Result< T, E > &rhs); SWS_CORE_00781template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const T &rhs); SWS_CORE_00784template <typename T, typename E> bool operator!= (const T &lhs, const Result< T, E > &rhs); SWS_CORE_00785template <typename T, typename E> bool operator!= (const Result< T, E > &lhs, const E &rhs); SWS_CORE_00788template <typename T, typename E> bool operator!= (const E &lhs, const Result< T, E > &rhs); SWS_CORE_00789template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const Result< T, E > &rhs); SWS_CORE_00780template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const T &rhs); SWS_CORE_00782template <typename T, typename E> bool operator== (const T &lhs, const Result< T, E > &rhs); SWS_CORE_00783template <typename T, typename E> bool operator== (const Result< T, E > &lhs, const E &rhs); SWS_CORE_00786template <typename T, typename E> bool operator== (const E &lhs, const Result< T, E > &rhs); SWS_CORE_00787Swap swap 1
template <typename T, typename E> void swap (Result< T, E > &lhs, Result< T, E > &rhs) noexcept(noexcept(lhs.Swap(rhs))); SWS_CORE_00796Implementation of std::span container from [views.span] ≙ std::span
Creation MakeSpan 5
template <typename T> constexpr Span< T > MakeSpan (T *ptr, typename Span< T >::size_type count) noexcept; SWS_CORE_01990template <typename T> constexpr Span< T > MakeSpan (T *firstElem, T *lastElem) noexcept; SWS_CORE_01991template <typename T, std::size_t N> constexpr Span< T, N > MakeSpan (T(&arr)[N]) noexcept; SWS_CORE_01992template <typename Container> constexpr Span< typename Container::value_type > MakeSpan (Container &cont) noexcept; SWS_CORE_01993template <typename Container> constexpr Span< typename Container::value_type const > MakeSpan (const Container &cont) noexcept; SWS_CORE_01994This clock represents a monotonic clock
Implementation of std::basic_string_view type from [string.view] ≙ std::basic_string_view
Comparison != < <= == > >= 6
constexpr bool operator!= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02182constexpr bool operator< (StringView lhs, StringView rhs) noexcept; SWS_CORE_02183constexpr bool operator<= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02185constexpr bool operator== (StringView lhs, StringView rhs) noexcept; SWS_CORE_02181constexpr bool operator> (StringView lhs, StringView rhs) noexcept; SWS_CORE_02184constexpr bool operator>= (StringView lhs, StringView rhs) noexcept; SWS_CORE_02186Input/output << 1
std::ostream & operator<< (std::ostream &os, StringView sv); SWS_CORE_02187Implementation of std::pmr::synchronized_pool_resource from [mem.res.pool] ≙ std::pmr::synchronized_pool_resource
inherits from MemoryResource
Implementation of std::pmr::unsynchronized_pool_resource from [mem.res.pool] ≙ std::pmr::unsynchronized_pool_resource
inherits from MemoryResource
Implementation of std::variant type from [basic.string] ≙ std::variant
≙ [variant]
Specializations variant_size< Variant< Types... > > variant_size< const volatile T > variant_size< const T > variant_size< volatile T >
Implementation of std::pmr::vector container from [vector] ≙ std::pmr::vector
Comparison != < <= == > >= 6
template <typename T, typename Allocator> bool operator!= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01391template <typename T, typename Allocator> bool operator< (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01392template <typename T, typename Allocator> bool operator<= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01393template <typename T, typename Allocator> bool operator== (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01390template <typename T, typename Allocator> bool operator> (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01394template <typename T, typename Allocator> bool operator>= (const Vector< T, Allocator > &lhs, const Vector< T, Allocator > &rhs); SWS_CORE_01395Swap swap 1
template <typename T, typename Allocator> void swap (Vector< T, Allocator > &lhs, Vector< T, Allocator > &rhs) noexcept(noexcept(lhs.swap(rhs))); SWS_CORE_01396Abort the current operation This function will never return to its caller. The stack is not unwound: destructors of variables with automatic storage duration are not called. Calling this function is ill-formed if any of the arguments is not convertible to ara::core:: StringView.
template <typename... Args> [[noreturn]] void Abort (const Args &... args) noexcept;A function declaration with the correct prototype for ara::core::SetAbortHandler This declaration exists only for providing a function type that includes noexcept and that acts as base type for a type alias, which is defined in [SWS_CORE_00050]. This compensates for the fact that the C++ standard (up to and including C++14) prohibits that noexcept appears in an alias-declaration. There is no implementation of this function.
void AbortHandlerPrototype () noexcept;Add a custom Abort handler function. Implementations support at least 8 AbortHandlers. Implementation false is returned when either the implementation-defined limit for number of abort handlers
bool AddAbortHandler (AbortHandler handler) noexcept;≙ [views.span]
template <typename ElementType, std::size_t Extent> Span< const Byte, Extent==dynamic_extent ? dynamic_extent :sizeof(ElementType) *Extent > as_bytes (Span< ElementType, Extent > s) noexcept;≙ [views.span]
template <typename ElementType, std::size_t Extent> Span< Byte, Extent==dynamic_extent ? dynamic_extent :sizeof(Element Type) *Extent > as_writable_bytes (Span< ElementType, Extent > s) noexcept;Return a pointer to the block of memory that contains the elements of a container.
Overloads data 4
template <typename Container> constexpr auto data (Container &c) noexcept(noexcept(c.data())) -> decltype(c.data()); SWS_CORE_04110template <typename Container> constexpr auto data (const Container &c) noexcept(noexcept(c.data())) -> decltype(c.data()); SWS_CORE_04111template <typename T, std::size_t N> constexpr T * data (T(&array)[N]) noexcept; SWS_CORE_04112template <typename E> constexpr const E * data (std::initializer_list< E > il) noexcept; SWS_CORE_04113Shutdown of the ARA Framework After this call, no interaction with the ARA is allowed with the exception of types intended to be used independently of initialization as defined in [SWS_CORE_15002]. As a prerequisite to calling this API it is expected that the use of ARA interfaces has completed (with the given exceptions). It is strongly recommended to make this call in a place where it is guaranteed that the static initialization has completed and destruction of statically initialized data has not yet started.
Result< void > Deinitialize () noexcept;Return whether the given container is empty
Overloads empty 3
template <typename Container> constexpr auto empty (const Container &c) noexcept(noexcept(c.empty())) -> decltype(c.empty()); SWS_CORE_04130template <typename T, std::size_t N> constexpr bool empty (const T(&array)[N]) noexcept; SWS_CORE_04131template <typename E> constexpr bool empty (std::initializer_list< E > il) noexcept; SWS_CORE_04132Return a reference to the global ara::core::CoreErrorDomain
constexpr const ErrorDomain & GetCoreErrorDomain () noexcept;except for the following deviations: 1. Description references to std::pmr::new_delete_resource() are replaced by ara:: core::NewDeleteResource() 2. Description references to std::pmr::set_default_resource() are replaced by ara:: core::SetDefaultResource() 3. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::new_delete_resource
MemoryResource * GetDefaultResource () noexcept;Obtain the reference to the single global ara::core::FutureErrorDomain instance.
constexpr const ErrorDomain & GetFutureErrorDomain () noexcept;Initialization of the ARA framework. Prior to this call, interaction with the ARA is not allowed with the exception of types intended to be used independently of initialization as defined in [SWS_CORE_15002]. It is strongly recommended to make this call in a place where it is guaranteed that static initialization has completed.
Result< void > Initialize (int &argc, char **argv) noexcept;except for the following deviations: 1. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::memory_resource
MemoryResource * NewDeleteResource () noexcept;except for the following deviations: 1. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource 2. It’s allocate() function returns nullptr instead of throwing std::bad_alloc ≙ std::pmr::memory_resource
MemoryResource * NullMemoryResource () noexcept;Add a custom Abort handler function and return the most recently added one. By setting nullptr, the implementation may restore the default handler instead; this will remove all previously installed handlers. Implementation This function can be called from multiple threads simultaneously; these calls are performed in an
AbortHandler SetAbortHandler (AbortHandler handler) noexcept;except for the following deviations: 1. Description references to std::pmr::new_delete_resource() are replaced by ara:: core::NewDeleteResource() 2. Description references to std::pmr::get_default_resource() are replaced by ara:: core::GetDefaultResource() 3. Return type std::pmr::memory_resource is replaced with ara::core:: MemoryResource ≙ std::pmr::new_delete_resource
MemoryResource * SetDefaultResource (MemoryResource *r) noexcept;Return the size of a container
Overloads size 2
template <typename Container> constexpr auto size (const Container &c) noexcept(noexcept(c.size())) -> decltype(c.size()); SWS_CORE_04120template <typename T, std::size_t N> constexpr std::size_t size (const T(&array)[N]) noexcept; SWS_CORE_04121Defines all errors of the ara::core Functional Cluster
enum class CoreErrc : ErrorDomain::CodeType {...};Specifies the errors that can occur upon calling Future::get() or Future::GetResult().
enum class FutureErrc : ara::core::ErrorDomain::CodeType {...};Specifies the status of a ara::core::Future as returned by: • Future<T,E>::wait_for() • Future<void,E>::wait_for() • Future<T,E>::wait_until() • Future<void,E>::wait_until() These definitions are equivalent to the ones from std::future_status. However, no item equivalent to std::future_status::deferred is available here. Implementation The numerical values of the enum literals are implementation-defined ≙ std::future_status
enum class FutureStatus : std::uint8_t {...};The type of a handler for ara::core::SetAbortHandler
using AbortHandler = decltype(&AbortHandlerPrototype);A non-integral binary type. The requirements on this type are stated in "See also:" Implementation {<byte-type>} shall be an implementation-defined type
using Byte = {<byte-type>};≙ [basic.string]
using String = BasicString<>;≙ [variant]
using variant_alternative_t = typename variant_alternative<I, T>::type;≙ [views.span]
constexpr std::size_t dynamic_extent = std::numeric_limits<std::size_ t>::max();The singleton instance of ara::core::in_place_t
constexpr in_place_t in_place;The singleton instances (one for each I of ara::core::in_place_index_t
template <std::size_t Index> constexpr in_place_index_t<Index> in_place_index {};The singleton instances (one for each T) of ara::core::in_place_type_t
template <typename T> constexpr in_place_type_t<T> in_place_type;≙ [variant]
template <typename T> constexpr std::size_t variant_size_v = variant_size<T>::value;ara::core::literals::string_view_literals
≙ [string.view]
constexpr StringView operator""_SV (const char *str, std::size_t len) noexcept;std
Specialization of std::hash (hashing function for ara::core::Monostate) ≙ std::hash
Specializations hash< ara::core::Optional< T > hash< ara::core::String > hash< ara::core::StringView > hash< ara::core::Variant< hash< ara::core::Vector< T, Allocator > >
≙ [array]
≙ [array]
Namespaces
- ara::core 50 Klassen, 194 freie Funktionen
- ara::core::literals::string_view_literals 0 Klassen, 1 freie Funktionen
- std 8 Klassen, 0 freie Funktionen
UML class diagram of the module
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · German original