Kapselt bis zu dreidimensionale Bereichsgrößen als unveränderlichen Werttyp über kontrollierte Factory-Erzeugung.
Kontext
Die Template-Klasse ara::shwa::Range repräsentiert innerhalb des Adaptive-Platform-Moduls shwa eine mehrdimensionale Bereichs- oder Größenangabe (standardmäßig parametriert über Dimensions = 1). In hardwarenahen oder speicherteilenden Architekturen dient ein Bereichsobjekt typischerweise als strukturierte Beschreibung geometrischer Ausdehnungen oder Pufferdimensionen über bis zu drei Achsen. Interaktionspartner sind vor allem Anwendungskomponenten und Treiberdienste, die Speicherbereiche allokieren, partitionieren oder adressieren müssen. Die Klasse kapselt die diskreten Abmessungen der Dimensionen und schützt sie vor fehlerhafter direkter Konstruktion, indem sie als unvollständig oder ungültig initialisierte Objekte durch Schnittstelleneinschränkungen unterbunden werden.
Lebenszyklus
Der Lebenszyklus einer Instanz von ara::shwa::Range wird durch strenge Konstruktionsvorgaben bestimmt. Der parameterlose Standardkonstruktor ist explizit gelöscht [AP_SWS_SHWA_01002]. Eine direkte Erzeugung ohne Vorgabe der Dimensionen ist damit ausgeschlossen. Stattdessen erfolgt die Erzeugung ausschließlich über statische Factory-Methoden Create, die für ein-, zwei- oder dreidimensionale Ausprägungen überladen sind: für eine Dimension mit dim0 [AP_SWS_SHWA_01007], für zwei Dimensionen mit dim0 und dim1 [AP_SWS_SHWA_01008] sowie für drei Dimensionen mit dim0, dim1 und dim2 [AP_SWS_SHWA_01009]. Jede dieser Factory-Funktionen liefert ein ara::core::Result<Range> zurück.
Nach erfolgreicher Erzeugung verhält sich die Klasse als vollwertiger Werttyp (Value Type). Sie stellt sowohl den Kopierkonstruktor [AP_SWS_SHWA_01003] als auch den Zuweisungsoperator durch Kopieren [AP_SWS_SHWA_01004] als standardisierte, ausnahmesichere Operationen bereit (noexcept = default). Ergänzend stehen ein Move-Konstruktor [AP_SWS_SHWA_01005] und ein Move-Zuweisungsoperator [AP_SWS_SHWA_01006] mit derselben Ausnahmesicherheit zur Verfügung. Instanzen besitzen somit klare Wertsemantik und können problemlos übertragen oder in Containern gehalten werden. Hinsichtlich der Nebenläufigkeit sind die statischen Factory-Methoden thread-sicher ausgelegt, wohingegen die lesenden Inspektor-Methoden GetDimension0 [AP_SWS_SHWA_01010], GetDimension1 [AP_SWS_SHWA_01011] und GetDimension2 [AP_SWS_SHWA_01012] von der Spezifikation als nicht thread-sicher eingestuft werden.
Nutzungspfad
Ein typischer Nutzungspfad umfasst die Erzeugung einer Bereichsinstanz über die statische Schnittstelle, die Validierung des Ergebnisses und das anschließende Auslesen der Dimensionen für Konfigurations- oder Allokationsschritte. Das folgende Sequenzdiagramm illustriert diesen Ablauf.
Sequenzdiagramm: Typischer Nutzungsablauf bei der Erzeugung und Abfrage von Dimensionen. Quellen: [AP_SWS_SHWA_01007], [AP_SWS_SHWA_01010]
Im ersten Schritt ruft die Anwendung eine der Factory-Überladungen auf, beispielsweise Create(dim0) [AP_SWS_SHWA_01007] für einen eindimensionalen Bereich oder Create(dim0, dim1) [AP_SWS_SHWA_01008] beziehungsweise Create(dim0, dim1, dim2) [AP_SWS_SHWA_01009] für mehrdimensionale Konfigurationen. Die aufrufende Schicht prüft anschließend das zurückgelieferte ara::core::Result auf Erfolg. Liegt ein gültiger Wert vor, wird das Range-Objekt dereferenziert oder verschoben. Anschließend können nachgelagerte Funktionen die enthaltenen Achsengrößen über GetDimension0 [AP_SWS_SHWA_01010] sowie bedarfsweise über GetDimension1 [AP_SWS_SHWA_01011] und GetDimension2 [AP_SWS_SHWA_01012] abfragen und für Pufferoperationen heranziehen.
Fehlerszenarien
Bei der Erzeugung mittels Create können Fehlerbedingungen auftreten, die das Fehlschlagen der Initialisierung zur Folge haben. In diesem Fall liefert die Factory kein initialisiertes Objekt, sondern ein Fehlerergebnis vom Typ ShwaErrorCode::kRuntime („General runtime error“) [AP_SWS_SHWA_01007], [AP_SWS_SHWA_01008], [AP_SWS_SHWA_01009]. Für alle Factory-Varianten garantiert die Spezifikation Rollback-Semantik und Ausnahmesicherheit (noexcept), sodass bei einem Fehler keine Teilstände verbleiben oder Inkonsistenzen hervorgerufen werden.
Für die Inspektormethoden GetDimension0 [AP_SWS_SHWA_01010], GetDimension1 [AP_SWS_SHWA_01011] und GetDimension2 [AP_SWS_SHWA_01012] sind keine Rückgabefehlercodes vorgesehen, jedoch weist die Spezifikation diese als nicht ausnahmesicher (not exception safe) und nicht thread-sicher (not thread-safe) aus. Der Aufrufer trägt daher die Vorbedingung, den Zugriff über Threads hinweg abzusichern. Zudem dürfte der Aufruf einer Dimensionsabfrage, die über die mit dem Template-Parameter Dimensions instanziierte Dimensionenanzahl hinausgeht (beispielsweise GetDimension2 bei einer eindimensionalen Konfiguration), unzulässig sein und zu Fehlern führen. Frage Q-794519baf2ea8a5e (offen)
Dieser Leitfaden basiert ausschließlich auf der Schnittstellenspezifikation von ara::shwa::Range aus AUTOSAR Adaptive R25-11.
gemini-3.8-flash-medium· 2026-10-13