Diese Seite wurde vollständig KI-generiert auf Basis von SWS Safe Hardware Acceleration (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.
[AP_SWS_SHWA_01001] текст ещё не импортированUpstream: RS_SHWA_00017
template <int Dimensions = 1> class Range final {...};
Die Spezifikation definiert diesen Klassentyp mit der gezeigten Schnittstelle.
Инкапсулирует размеры диапазонов размерностью до трёх измерений в виде неизменяемого типа значения посредством контролируемого создания фабрикой.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9801add965b6ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Инкапсулирует размеры диапазонов размерностью до трёх измерений в виде неизменяемого типа значения посредством контролируемого создания фабрикой.
Класс инкапсулирует многомерные размеры диапазона и полностью исключает инстанцирование без параметров [AP_SWS_SHWA_01002]. Объекты контролируемо создаются через статические фабричные методы, которые в случае ошибки возвращают ShwaErrorCode::kRuntime, а при успехе предоставляют безысключительные объекты-значения с семантикой копирования и перемещения [AP_SWS_SHWA_01007]. Считывание отдельных измерений не является потокобезопасным и требует внешней синхронизации [AP_SWS_SHWA_01010].
Контекст
Шаблонный класс ara::shwa::Range представляет внутри модуля shwa Adaptive Platform многомерное указание диапазона или размера (по умолчанию параметризованное через Dimensions = 1). В аппаратно-ориентированных или разделяющих память архитектурах объект диапазона обычно служит структурированным описанием геометрических размеров или измерений буфера максимум по трём осям. Партнёрами по взаимодействию являются прежде всего компоненты приложений и службы драйверов, которым необходимо выделять, секционировать или адресовать области памяти. Класс инкапсулирует дискретные размеры измерений и защищает их от ошибочного прямого конструирования, исключая неполно или некорректно инициализированные объекты за счёт ограничений интерфейса.
Жизненный цикл
Жизненный цикл экземпляра ara::shwa::Range определяется строгими правилами конструирования. Конструктор по умолчанию без параметров явно удалён [AP_SWS_SHWA_01002]. Прямое создание без указания измерений тем самым исключено. Вместо этого создание происходит исключительно через статические фабричные методы Create, перегруженные для одно-, двух- или трёхмерных вариантов: для одного измерения — с dim0[AP_SWS_SHWA_01007], для двух измерений — с dim0 и dim1[AP_SWS_SHWA_01008], а также для трёх измерений — с dim0, dim1 и dim2[AP_SWS_SHWA_01009]. Каждая из этих фабричных функций возвращает ara::core::Result<Range>.
После успешного создания класс ведёт себя как полноценный тип значения (Value Type). Он предоставляет как конструктор копирования [AP_SWS_SHWA_01003], так и оператор присваивания копированием [AP_SWS_SHWA_01004] в качестве стандартизированных безысключительных операций (noexcept = default). Дополнительно доступны конструктор перемещения [AP_SWS_SHWA_01005] и оператор присваивания перемещением [AP_SWS_SHWA_01006] с аналогичной гарантией безопасности исключений. Таким образом, экземпляры обладают явной семантикой значений и могут без проблем передаваться или содержаться в контейнерах. С точки зрения конкурентности статические фабричные методы спроектированы как потокобезопасные, тогда как методы-инспекторы для чтения GetDimension0[AP_SWS_SHWA_01010], GetDimension1[AP_SWS_SHWA_01011] и GetDimension2[AP_SWS_SHWA_01012] классифицируются спецификацией как непотокобезопасные.
Путь использования
Типичный путь использования включает создание экземпляра диапазона через статический интерфейс, валидацию результата и последующее считывание измерений для шагов конфигурации или выделения памяти. Следующая диаграмма последовательности иллюстрирует этот процесс.
На первом шаге приложение вызывает одну из перегрузок фабрики, например Create(dim0)[AP_SWS_SHWA_01007] для одномерного диапазона или Create(dim0, dim1)[AP_SWS_SHWA_01008] либо Create(dim0, dim1, dim2)[AP_SWS_SHWA_01009] для многомерных конфигураций. Вызывающий уровень затем проверяет возвращённый ara::core::Result на успешность. Если получено валидное значение, объект Range разыменовывается или перемещается. После этого последующие функции могут запрашивать содержащиеся размеры осей через GetDimension0[AP_SWS_SHWA_01010], а также при необходимости через GetDimension1[AP_SWS_SHWA_01011] и GetDimension2[AP_SWS_SHWA_01012], и использовать их для операций с буфером.
Сценарии ошибок
При создании с помощью Create могут возникать ошибочные условия, приводящие к сбою инициализации. В этом случае фабрика возвращает не инициализированный объект, а результат ошибки типа ShwaErrorCode::kRuntime («General runtime error») [AP_SWS_SHWA_01007], [AP_SWS_SHWA_01008], [AP_SWS_SHWA_01009]. Для всех вариантов фабрики спецификация гарантирует семантику отката и безопасность исключений (noexcept), так что в случае ошибки не остаётся промежуточных состояний и не возникает несогласованности.
Для методов-инспекторов GetDimension0[AP_SWS_SHWA_01010], GetDimension1[AP_SWS_SHWA_01011] и GetDimension2[AP_SWS_SHWA_01012] коды ошибок возврата не предусмотрены, однако спецификация обозначает их как небезысключительные (not exception safe) и непотокобезопасные (not thread-safe). Таким образом, вызывающая сторона несёт ответственность за соблюдение предусловия по защите доступа между потоками. Кроме того, вызов запроса измерения, выходящего за пределы количества измерений, инстанцированного с помощью шаблонного параметра Dimensions (например, GetDimension2 в одномерной конфигурации), по-видимому, недопустим и приводит к ошибкам. Вопрос Q-794519baf2ea8a5e (открытый)
Настоящее руководство основано исключительно на спецификации интерфейса ara::shwa::Range из AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал