11. Anlage | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
11.10 Sprachdefinierte Attribute (Anlage K)
Diese Anlage enthält eine Zusammenfassung der im Referenzhandbuch der Sprache definierten Attribute. P'Access Für ein Präfix P, das ein Unterprogramm bezeichnet, ergibt dieses Attribut einen Zugriffswert, der das von P bezeichnete Unterprogramm bestimmt. Der Typ von P'Access ist ein dem erwarteten Typ entsprechender Unterprogramm-Zugriffstyp. X'Access Für ein Präfix X, das eine Alias-Kennzeichnung eines Objekts bezeichnet, ergibt dieses Attribut einen Zugriffswert der das von X bezeichnete Objekt bestimmt. Der Typ von X'Access ist ein dem erwarteten Typ entsprechender Objekt-Zugriffstyp. Der erwartete Typ sei ein allgemeiner Zugriffstyp. X'Address Das Attribut "Address" bezeichnet die Adresse des ersten Speicherelementes das X zugewiesen wurde, wobei das Präfix X für ein Objekt, eine Programmeinheit oder eine Marke stehen kann. Bei einer Programmeinheit oder einer Marke bezieht sich dieser Wert auf den Maschinencode, welcher dem Rumpf oder der Anweisung zugeordnet ist. Der Wert dieses Attributs ist vom Typ System.Address. S'Adjacent Dieses Attribut ist eine Funktion mit folgender Spezifikation: function S'Adjacent( X, Towards : gleitpunkt_typ ) return gleitpunkt_typ Für jeden Untertyp S eines Gleitpunkttyps liefert diese Funktion die am dichtesten an "X" liegende Maschinenzahl mit der Eigenschaft, daß sie sich zwischen "X" und "Towards" befindet. Ist "X" gleich "Towards", dann wird "X" zurückgegeben. Falls das Ergebnis außerhalb des Untertyps S liegt, wird die Ausnahme Constraint_Error ausgelöst. Falls das Attribut "gleitpunkt_typ'Signed_Zeros" den Rückgabewert "Wahr" ergibt und das Ergebnis von "Adjacent" null ist, so erhält dieses Ergebnis das Vorzeichen von "X". Hat "Towards" den Wert null, so hat sein Vorzeichen keinen Einfluß auf das Ergebnis von "Adjacent". Es gelten folgende Identitäten: gleitpunkt_typ'Pred( X ) = gleittpunkt_typ'Adjacent( X, Towards ), falls X > Towards und gleitpunkt_typ'Succ( X ) = gleittpunkt_typ'Adjacent( X, Towards ), falls X < Towards Beispiel: Der Wert des Bruches "1/3" ist binär nicht darstellbar. Mit dem Attribut "Adjacent" kann bestimmt werden, ob die Zahl, die als Näherung für "1/3" dienen soll, unterhalb float'Adjacent( X => 1.0 / 3.0, Towards => 0.0 ) oder oberhalb float'Adjacent( X => 1.0 / 3.0, Towards => 1.0 ) von "1/3" liegen soll. Anmerkung: Folgende drei Werte stehen nicht zwangsläufig in einem bestimmten Verhältnis. x : float := float'Adjacent( 1.0 / 3.0, 0.0 ); -- unterhalb y : float := float'Adjacent( 1.0 / 3.0, 1.0 ); -- oberhalb z : float := 1.0 / 3.0; Zwar gilt, daß "x" echt kleiner "y" ist, aber in welchem Verhältnis "z" zu "x" oder "y" steht, ist ungewiß. Es wird nicht garantiert, daß entweder "z" identisch zu "x" oder zu "y" ist. Sicher ist nur, daß "z" irgendwo zwischen "x" und "y" liegt. Das folgt daraus, daß "x" und "y" sicher Maschinenzahlen sind, aber das "z" eine Maschinenzahl ist wird nirgends gefordert. Wird "z" z. B. in einem Register gehalten, so kann die Genauigkeit von "z" größer sein, als die der Maschinenzahlen, und damit "z" dichter an dem exakten Wert des Bruches "1/3" liegen als "x" und "y". S'Aft Ergibt die Anzahl von Dezimalstellen die nach dem Dezimalpunkt benötigt werden um das Delta eines Festpunkt-Untertyps S aufzunehmen, ausgenommen das Delta ist größer als 0.1, dann ergibt das Attribut den Wert eins. (S'Aft ist die kleinste positive Ganzzahl N für die (10**N)*S'Delta größer oder gleich eins ist.) Der Wert dieses Attributs ist vom Typ universal_integer. X'Alignment Das Attribut "Alignment" gibt an, nach welchen Speicherplatzgrenzen Objekte eines Typs ausgerichtet werden oder ein Objekt ausgerichtet ist. Es gilt die Identität: X'Address mod X'Alignment = 0. Beispiel:
Die mögliche Ausrichtung eines Typs hängt von dem Speicherplatz ab, der benötigt wird um Objekte des Typs anzulegen. Beispiel:
Der Übersetzer gibt mit der Fehlermeldung eine minimale Größe für die Ausrichtung an, z. B. auf einem PC den Wert 4. Für den Typ "b_int" werden mindestens 32 Bit benötigt, also 4 Byte mit je 8 Bit. Eine Ausrichtung von 2 würde bedeuten, daß der Ganzzahltyp "b_int" auf einem PC über eine Wortgrenze hinweg abgespeichert werden müßte. Das wäre für einen Zahltyp sehr ineffizient. Wird für ein Objekt die Ausrichtung null angegeben, so gilt entweder, daß das Objekt nicht durch das Laufzeitsystem alloziert wurde oder daß das Objekt mittels unchecked_conversion entstanden ist. Objekte, die nicht vom Laufzeitsystem alloziert wurden, sind solche, die (z. B. aus in anderen Sprachen entwickelten Programmteilen) importiert wurden oder durch benutzerdefinierte Allokatoren entstanden sind. S'Base Für jeden skalaren Untertyp S bezeichnet dieses Attribut einen uneingeschränkten Untertyp des Typs von S. Dieser uneingeschränkte Untertyp wird als Basis-Untertyp des Typs bezeichnet. S'Bit_Order Für jeden spezifischen Verbund-Untertyp S bezeichnet dieses Attribut die Bitreihenfolge für den Typ von S. Der Wert dieses Attributs ist vom Typ System.Bit_Order. PBody_Version Das Attribut "Version" ergibt eine Versions"nummer" für den Rumpf einer Programmeinheit. Der Typ des Rückgabewerts ist vom Typ String. Siehe auch das Attribut "Version" für den Deklarationsteil. Wird die Versionsnummer zu dem Rumpf einer Programmeinheit ausgegeben, danach der Rumpf verändert, übersetzt und von neuem die Versionsnummer ausgegeben, so unterscheiden sich beide Versionsnummern. Allerdings ist nicht gesichert, daß an diesen Nummern abgelesen werden kann, welche der beiden Rümpfe der jüngere bzw. ältere ist. Dieses Attribut steht im Zusammenhang mit verteilten Systemen. Ein Ada-Programm, das über mehrere Partitionen verteilt ist, kann mit diesem Attribut feststellen, ob die Konfiguration so vorliegt, wie vorher festgelegt. Beispiel:
T'Callable Das Attribut "Callable" ist vom Typ "Boolean" und liefert den Wert "Wahr", wenn der Prozeß T mittels eines ingangsaufrufes aufrufbar ist, und liefert den Wert "Falsch", wenn der Prozeß T nicht mehr mittels eines Eingangsaufrufes aufrufbar ist. Ein Prozeß ist genau dann nicht mehr aufrufbar, wenn sein Zustand ausgeführt, beendet oder anormal ist (siehe Zustände von Prozessen). Beispiel:
E'Caller Das Attribut "Caller" liefert die vom Laufzeitsystem verwendete eindeutige Bezeichnung eines Prozesses. Das Attribut "Caller" kann nur in einer Annahmeanweisung oder im Rumpf eines Einganges einer geschützten Einheit verwendet werden. Diese Bezeichnung ist vom privaten Typ Task_ID aus dem Paket "Ada.Task_Identification". Siehe auch das Attribut T'Identity. Beispiel:
S'Ceiling Das Attribut "Ceiling" eines Gleitpunkt-Untertyps S entspricht der Funktion Ceiling(X). Diese ergibt den kleinsten ganzzahligen Wert größer oder gleich X und stellt somit eine Rundung nach oben dar. So gilt z.B. float'Ceiling(1.2) = 2.0 und float'Ceiling(-1.8) = -1.0. Wenn X = 0 erhält das Ergebnis das Vorzeichen von X; ein Ergebnis gleich null erhält ansonsten ein negatives Vorzeichen falls S'Signed_Zeros "wahr" ist. Siehe hierzu auch S'Floor und S'Truncation. Beispiel:
S'Class Das Attribut S'Class kennzeichnet die klassenweiten Typen. Diese sind spezielle erweiterbare Typen, die Objekte eines Unterbaums einer Klassenhierarchie aufnehmen können. Bei Verwendung des Attributs darf ein Objekt verschiedenen Objekten einer Klassenhierarchie zugeordnet werden. Einem Objekt einer Klassenhierarchie wird zur Laufzeit selbständig das zugehörige Unterprogramm zugeordnet. Beispiel zur "klassenweiten Programmierung":
Auf jeden Untertyp S eines nicht erweiterbaren privaten Typs, dessen volle Sichtweise erweiterbar ist, ist S'Class ebenfalls anwendbar. X'Component_Size Das Attribut "Component_Size" bezeichnet für einen Reihungs-Untertyp oder ein Reihungsobjekt X die Größe der Komponenten vom Typ X in Bit. Der Wert dieses Attributs ist vom Typ universal_integer. S'Compose Für jeden Untertyp S eines Gleitpunkt-Typs T bezeichnet S'Compose eine Funktion mit der folgenden Spezifikation: function S'Compose (Fraction : T; Exponent : universal_integer) return T Sei v der Wert Fraction*T'Machine_Radix**(Exponent-k), wobei k den normalisierten Exponenten von Fraction darstellt. Falls v eine Maschinenzahl vom Typ T ist, oder falls |v|>=T'Model_Small, ergibt die Funktion v; ansonsten ergibt sie eine der Maschinenzahlen vom Typ T die v am nächsten liegen. Es wird Constraint_Error ausgelöst, falls v außerhalb Basisbereichs von S liegt. Wenn S'Signed_Zeros "wahr" ist erhält ein Ergebnis gleich null das Vorzeichen von Fraction. A'Constrained Für ein Präfix A eines Diskriminanten-Typs ergibt dieses Attribut den Wert "wahr" falls A eine Konstante, einen Wert, oder eine eingeschränkte Variable bezeichnet, ansonsten den Wert "falsch". Beispiel:
S'Copy_Sign Das Attribut "Copy_Sign" bezeichnet eine Funktion mit zwei Parametern, Value und Sign, eines Gleitpunkt-Untertyps S. Das Ergebnis verknüpft den Absolutwert von Value mit dem Vorzeichen von Sign. Ein Wert gleich null erhält nur dann das Vorzeichen von Sign wenn S'Signed_Zeros "wahr" ist. Beispiel:
E'Count Das Attribut "Count" kann nur innerhalb eines Einganges E eines Prozesses oder einer geschützten Einheit (Geschützte Typen) verwendet werden und liefert die Anzahl vor dem Eingang E wartender Aufrufe. Der Typ des Rückgabewertes ist universal_integer. Beispiel:
S'Definite Das Attribut "Definite" gibt "wahr" zurück, falls der Typ "S" ein definierter Typ ist, andernfalls "falsch". Nicht definierte Typen sind unbeschränkte Reihungstypen, Typen mit Diskriminanten ohne Voreinstellung und Typen mit unbekannter Diskriminante. Beispiel:
Zu allen drei Typen "reihung", "mit_diskri" und "paket.unbekannt" liefert die Abfrage mit dem Attribut "Definite" das Ergebnis "ist nicht definiert". S'Delta Für jeden Festpunkt-Untertyp S bezeichnet das Attribut S'Delta das Delta des Typs. Der Wert dieses Attributs ist vom Typ universal_real. S'Denorm Das Attribut "Denorm" gilt für jeden Untertyp S eines Gleitpunkt-Typs T und ergibt den Wert "wahr", falls jeder Wert der in der Form +/-mantissa*T'Machine_Radix**T'Machine_Emin ausgedrückt werden kann eine Maschinenzahl vom Typ T ist; ansonsten ergibt es den Wert "falsch". Hierbei ist mantissa ein Bruch ungleich Null mit TMachine_Mantissa Stellen der Basis TMachine_Radix, dessen erste Ziffer Null ist. Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Digits Für jeden dezimalen Festpunkt-Untertyp S bezeichnet das Attribut S'Digits die Anzahl Stellen des dezimalen Festpunkt-Untertyps S, welche der Anzahl von Dezimalstellen entspricht, die in Objekten des Untertyps dargestellt werden können. Der Wert dieses Attributs ist vom Typ universal_integer. S'Digits Für jeden Gleitpunkt-Untertyp S bezeichnet das Attribut S'Digits die angeforderte dezimale Genauigkeit für den Untertyp S. Der Wert dieses Attributs ist vom Typ universal_integer. S'Exponent Für jeden Untertyp S eines Gleitpunkt-Typs T bezeichnet das Attribut S'Exponent eine Funktion mit der folgenden Spezifikation: function S'Exponent (X : T) return universal_integer Die Funktion ergibt den normalisierten Exponenten von X. S'External_Tag Dieses Attribut liefert zu einem erweiterbaren Typ T eine externe Zeichenketten-Darstellung für T'Tag vom vordefinierten Typ String. Die Darstellung der externen Kennung ist implementierungsabhängig. Das Attribut ermöglicht eine lesbare Ausgabe des Tags und wird z. B. bei Ausgaben von Objekten erweiterbaren Typs auf Streams genutzt, um eine spätere Identifizierung zu ermöglichen. A'First(N) Das Attribut A'First(N) bezeichnet die untere Grenze des N-ten Indexbereichs eines Reihungstyps A; sein Typ ist der entsprechende Indextyp. Siehe auch A'Last(N) und A'Length(N). Beispiel:
A'First Das Attribut A'First bezeichnet die untere Grenze des ersten Indexbereichs eines Reihungstyps A; sein Typ ist der entsprechende Indextyp. Siehe auch A'Last und A'Length. Beispiel:
S'First Das Attribut S'First bezeichnet die untere Grenze des Bereichs eines skalaren Untertyps S. Der Wert des Attributs hat denselben Typ wie S. Siehe auch S'Last. Beispiel: Es gibt in Ada zwei vordefinierte ganzzahlige Untertypen: Natural stellt die natürlichen Zahlen inklusive null dar, es gilt daher Natural'First = 0; Positive stellt die positiven Zahlen dar (ohne null) und es gilt Positive'First = 1. R.C'First_Bit Liefert für eine Komponente C eines Verbundtyps R den Offset vom Anfang des ersten Speicherelementes, das von C belegt wird, bis zum ersten Bit, das von Komponente C belegt wird. Der Offset wird in Bit angegeben, wobei das erste Bit eines Speicherelementes mit 0 numeriert ist. Dieses Attribut liefert einen Wert des Typs universal_integer. S'Floor Für jeden Untertyp S eines Gleitpunkt-Typs T ergibt die Funktion Floor(X) den größten ganzzahligen Wert kleiner oder gleich X, rundet somit also immer nach unten. Wenn X = 0 erhält das Ergebnis das Vorzeichen von X; ein Ergebnis von null hat ansonsten ein positives Vorzeichen. Siehe hierzu auch S'Ceiling und S'Truncation. Beispiel:
S'Fore Für jeden Festpunkt-Untertyp S: S'Fore ergibt die Mindestanzahl Zeichen die für eine dezimale Darstellung eines beliebigen Wertes des Untertyps S vor dem Dezimalpunkt benötigt werden, unter der Annahme, daß diese Darstellung zwar keinen Exponenten enthält, dafür aber ein einzelnes Zeichen als Präfix hat, welches entweder ein Minuszeichen oder ein Leerzeichen ist. (Diese Mindestanzahl enthält keine überflüssigen Nullen oder Unterstriche und beträgt mindestens 2.) Der Wert dieses Attributs ist vom Typ universal_integer. S'Fraction Für jeden Untertyp S eines Gleitpunkt-Typs T bezeichnet S'Fraction eine Funktion mit der folgenden Spezifikation: function S'Fraction (X : T) return T Die Funktion ergibt den Wert X*T'Machine_Radix**(-k), wobei k der normalisierte Exponent von X ist. Ein Ergebnis von null, welches nur dann auftreten kann wenn X gleich null ist, erhält das Vorzeichen von X. E'Identity Die Ausnahmeidentität einer beliebigen Ausnahme wird mittels des Attributs "Identity" bestimmt. Der Typ dieses Attributs ist "Exception_Id". Man kann die Ausnahmeidentität z. B. zur Ausgabe mittels "Exception_Name" in einem Ausnahmebehandler nutzen, wobei der vollständige Name der Ausnahme in Großbuchstaben (inkl. Paketname) ausgegeben wird. Beispiel: Die Anweisung: Put_Line (Exception_Name (Data_Error'Identity)); erzeugt die Ausgabe: "ADA.IO_EXCEPTIONS.DATA_ERROR" T'Identity Das Attribut "Identity" liefert für einen Prozeß T eine vom Laufzeitsystem vergebene eindeutige Bezeichnung. Diese Bezeichnung ist vom privaten Typ Task_ID aus dem Paket "Ada.Task_Identification". Siehe auch das Attribut E'Caller. Beispiel:
Das Attribut S'Image gilt für jeden skalaren Untertyp S und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Image(Arg : S'Base) return String Diese Funktion ergibt ein Abbild des Wertes Arg in Form einer Zeichenkette, d.h. die Zeichenkette enthält eine für Menschen lesbare Form des Wertes. Beispiel:
S'Class'Input Liest ein Objekt des Typs SClass von einem Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Input eine Funktion mit der folgenden Spezifikation: function S'Class'Input( Stream : access Ada.Streams.Root_Stream_Type'Class) return T'Class Diese Funktion liest zuerst die externe Kennung von einem Stream und bestimmt die entsprechende interne Kennung durch Aufruf von Tags.Internal_Tag(String'Input(Stream)) und verzweigt dann zu dem Unterprogramm S'Output, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Input. S'Output Schreibt ein Objekt des Typs S auf einen Stream und fügt zusätzlich Angaben über Grenzen oder Diskriminanten hinzu, die beim Lesen mittels der Gegenfunktion S'Input ausgewertet werden. S'Output ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Output use procedure_name; S'Output bezeichnet eine Funktion mit der folgenden Spezifikation: procedure S'Output( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in S) D'Partition_ID Das Attribut "Partition_ID" identifiziert die Partition (siehe auch Anlage E "Verteilte Systeme"), in der eine Bibliothekseinheit abgearbeitet wird. Der Rückgabewert hat den Typ universal_integer. Ist das Objekt, auf das "Partition_ID" abgewendet werden soll, eine als "pure" deklarierte Bibliothekseinheit oder ist das Objekt keine eigenständige Bibliothekseinheit, so führt die Anweisung zu einem Übersetzungsfehler. Ist das Objekt eine "remote call interface"-Bibliothekseinheit, so wird die Identifikation der Partition zurückgegeben, auf der der Rumpf abgearbeitet wurde. Ein "remote call interface" ist eine Schnittstelle, mittels derer "remote calls" abgesetzt werden können . Ein "remote call" ist der Aufruf eines Unterprogramms einer Partition, die verschieden von der Partition ist, aus der der Aufruf initiert wird. Eine Partition kann auf einer anderen Plattform ausgeführt werden. Beispiel:
S'Pos Das Attribut S'Pos ist für jeden diskreten Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Pos(Arg : S'Base) return universal_integer Diese Funktion ergibt die Ordnungszahl des Wertes Arg, als einen Wert vom Typ universal_integer. Beispiel:
R.C'Position Liefert für eine Komponente C eines Verbundtyps R die Position der Komponente relativ zum Anfang des Verbundes, wobei diese Positionsdifferenz in Byte ausgegeben wird. Die erste Komponente befindet sich auf Position 0, alle anderen Komponenten des Verbundtyps R berechnen sich wie folgt: Position := R.C'Address - R'Address. Dieses Attribut liefert einen Wert des Typs universal_integer. S'Pred Das Attribut S'Pred ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Pred(Arg : S'Base) return S'Base Für einen Aufzählungstyp ergibt die Funktion den Wert, dessen Ordnungszahl um eins kleiner ist als die des Wertes von Arg; Constraint_Error wird ausgelöst, falls es keinen solchen Wert des Typs gibt. Beispiel:
Für einen ganzzahligen Typ ergibt die Funktion den Wert der Subtraktion von eins vom Wert von Arg. Beispiel: integer'Pred(5) = 4 Für einen Festpunkttyp ergibt die Funktion den Wert der Subtraktion von Small vom Wert von Arg. Für einen Gleitpunkttyp ergibt die Funktion die Maschinenzahl (wie in 3.5.7 definiert) unmittelbar unter dem Wert von Arg; Constraint_Error wird ausgelöst, falls es keine solche Maschinenzahl gibt. Die Gegenfunktion hierzu ist S'Succ. A'Range(N) Das Attribut A'Range(N) entspricht dem Bereich A'First(N) .. A'Last(N) eines Reihungstyps A, mit der Ausnahme daß das Präfix A nur einmal ausgewertet wird. Siehe auch A'First(N), A'Last(N) und A'Length(N). Beispiel:
A'Range Das Attribut A'Range entspricht dem Bereich A'First .. A'Last eines Reihungstyps A, mit der Ausnahme daß das Präfix A nur einmal ausgewertet wird. Siehe auch A'First, A'Last und A'Length. Beispiel:
S'Range Das Attribut S'Range entspricht dem Bereich S'First .. S'Last eines skalaren Untertyps S. Beispiel: subtype Prozent is Natural range 0..100; Prozent'Range = 0..100 S'Class'Read Liest ein Objekt des Typs S'Class von einem Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Read eine Funktion mit der folgenden Spezifikation: procedure S'Class'Read( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : out T'Class) Der Aufruf verzweigt zu dem Unterprogramm S'Read, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Write. S'Read Liest ein Objekt des Typs S von einem Stream, wobei nur die Repräsentation dieses Objektes gelesen wird. Wenn es sich bei dem Objekt um ein unbegrenztes Objekt handelt, muß die Prozedur S'Input verwendet werden. S'Read ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Read use procedure_name; S'Read bezeichnet eine Prozedur mit der folgenden Spezifikation: procedure S'Read( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : out S) S'Remainder Für jeden Untertyp S eines Gleitpunkttyps T bezeichnet S'Remainder eine Funktion mit der folgenden Spezifikation: function S'Remainder (X, Y : T) return T Für ein Y ungleich null sei v der Wert X-n*Y, wobei n die Ganzzahl ist, die dem genauen Wert von X/Y am nächsten liegt; für |n-X/Y|=1/2 wird ein gerades n gewählt. Falls v eine Maschinenzahl vom Typ T ist ergibt die Funktion v; ansonsten ergibt sie null. Constraint_Error wird ausgelöst falls Y gleich null ist. Ein Ergebnis von null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. S'Round Das Attribut S'Round ist für jeden dezimalen Festpunkt-Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Round(X : universal_real) return S'Base Die Funktion ergibt den gerundeten Wert von X. Für ein X das genau zwischen zwei Werten des Typs S liegt wird von null hinweg gerundet. Beispiel:
S'Rounding Das Attribut S'Rounding ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Rounding (X : T) return T Die Funktion ergibt den ganzzahligen Wert der X am nächsten liegt. Falls X genau auf halbem Weg zwischen zwei Ganzzahlen liegt wird von null hinweg gerundet. Ein Ergebnis gleich null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Ceiling, S'Floor, S'Truncation und S'Unbiased_Rounding S'Safe_First Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt die untere Grenze des sicheren Bereichs des Typs T. Falls die Anlage G "Numerik" vom Übersetzer nicht berücksichtigt wird, ist der Wert dieses Attributs implementierungsbestimmt. Der Wert dieses Attributs ist vom Typ universal_real. S'Safe_Last Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt die obere Grenze des sicheren Bereichs des Typs T. Falls die Anlage G "Numerik" vom Übersetzer nicht berücksichtigt wird, ist der Wert dieses Attributs implementierungsbestimmt. Der Wert dieses Attributs ist vom Typ universal_real. S'Scale Für jeden dezimalen Festpunkt-Untertyp S bezeichnet das Attribut S'Scale die Skala des Untertyps S, definiert als den Wert N, so daß S'Delta = 10.0**(-N). Die Skala zeigt die Position des Kommas im Vergleich zur am weitesten rechts liegenden signifikanten Stelle der Werte des Untertyps S. Der Wert dieses Attributs ist vom Typ universal_integer. S'Scaling Für jeden Untertyp S eines Gleitpunkttyps T bezeichnet S'Scaling eine Funktion mit der folgenden Spezifikation: function S'Scaling (X : T; Adjustment : universal_integer) return T Sei v der Wert X*T'Machine_Radix**Adjustment. Falls v eine Maschinenzahl vom Typ T ist, oder falls |v|>=T'Model_Small ergibt die Funktion v; ansonsten ergibt sie eine der Maschinenzahlen vom Typ T die v am nächsten liegen. Constraint_Error wird ausgelöst falls v sich außerhalb des Basisbereichs von S befindet. Ein Ergebnis gleich null hat das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. S'Signed_Zeros Für jeden Untertyp S eines Gleitpunkt-Typs T ergibt dieses Attribut den Wert "wahr" wenn die Hardwaredarstellung für den Typ T dazu in der Lage ist, Nullen mit sowohl positivem als auch negativem Vorzeichen darzustellen, welche von den vordefinierten Operationen vom Typ T erzeugt werden, wie in IEC 559:1989 spezifiziert; ansonsten ergibt es den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Size Für einen Typ S bezeichnet S'Size die Größe (in Bit), wobei von dem minimalen Wert ausgegangen wird, der für die Repräsentation benötigt wird. Für ein Objekt dieses Typs kann durchaus ein größerer Wert ermittelt werden, wie es z. B. bei Verbundtypen der Fall ist, wenn eine Ausrichtung an Wortgrenzen vorgenommen wird. Falls S unbestimmt ist, ist die ermittelte Größe implementierungsabhängig. Der Wert dieses Attributs ist vom Typ universal_integer. X'Size Das Attribut X'Size bezeichnet die Größe der Darstellung des Objektes, angegeben in Bit. Es bezieht sich auf Objekte und nicht auf Typen. Der Wert dieses Attributs ist vom Typ universal_integer. Siehe auch S'Size. S'Storage_Pool Für jeden Zugriffs-Untertyp S bezeichnet das Attribut "Storage_Pool" den Speicherpool des Typs von S. Der Typ dieses Attributs ist Root_Storage_Pool'Class. S'Storage_Size Der Rückgabewert dieses Attributs entspricht einem Aufruf von Storage_Size(S'Storage_Pool) und liefert ein Maß der für den Pool reservierten Speichereinheiten. Der Wert entspricht der Gesamtzahl der Speichereinheiten, die für die Speicherbelegung aller Objekte des Typs S reserviert sind. Der Typ dieses Attributs ist universal_integer. T'Storage_Size Das Attribut "Storage_Size" liefert die Anzahl Speicherelemente, die für den Prozeß T reserviert sind. Anzahl ist vom Typ universal_integer. Falls der Prozeß T über einen Laufzeitstapel verfügt, so ist dessen Größe berücksichtigt. In manchen Laufzeitsysteme wird einem Prozeß noch weiterer Speicherplatz zugewiesen, in dem z. B. sogenannte "task control blocks" abgelegt werden. Ob solcher Speicherplatz ebenfalls durch das Attribut "Storage_Size" berücksichtigt ist, wird durch das Referenzhandbuch nicht spezifiziert. S'Succ Das Attribut S'Succ ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Succ(Arg : S'Base) return S'Base Für einen Aufzählungstyp ergibt die Funktion den Wert dessen Ordnungszahl um eins über der des Wertes von Arg liegt; Constraint_Error wird ausgelöst, falls es von diesem Typ keinen solchen Wert gibt. Beispiel: type Farben is (rot, grün, blau); Farben'Succ(rot) = grün Für einen ganzzahligen Typ ergibt die Funktion den Wert der Addition von eins zum Wert von Arg. Beispiel: integer'Succ(2) = 3 Für einen Festpunkttyp ergibt die Funktion den Wert der Addition von S'Small zum Wert von Arg. Für einen Gleitpunkt-Typ ergibt die Funktion die Maschinenzahl unmittelbar über dem Wert von Arg; Constraint_Error wird ausgelöst, falls es keine solche Maschinenzahl gibt. Die Gegenfunktion hierzu ist S'Pred. S'Tag Für jeden erweiterbaren Typ T liefert das Attribut S'Tag die Kennung des Typs T. Der Wert dieses Attributs ist vom Typ Tag, das im Paket Ada.Tags privat deklariert ist. Man kann diese Kennung z. B. dazu verwenden, Objekte erweiterbaren Typs dahingehend zu vergleichen, ob sie bezüglich ihrer Ableitungsstufe übereinstimmen. X'Tag Für ein Präfix X welches ein klassenweiter erweiterbarer Typ ist: X'Tag bezeichnet die Kennung von X. Der Wert dieses Attributs ist vom Typ Tag. T'Terminated Das Attribut "Terminated" ist vom Typ "Boolean" und liefert den Wert "wahr", wenn der Prozeß T beendet ist, andernfalls den Wert "falsch" (siehe Zustände von Prozessen). Beispiel:
S'Truncation Das Attribut S'Truncation ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Truncation (X : T) return T Die Funktion ergibt den Wert Ceiling(X) falls X negativ ist und ansonsten Floor(X), entspricht also einem Abschneiden der Nachkommastellen. Ein Ergebnis gleich null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Ceiling, S'Floor, S'Rounding und S'Unbiased_Rounding. S'Unbiased_Rounding Das Attribut S'Unbiased_Rounding ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Unbiased_Rounding (X : T) return T Die Funktion ergibt den ganzzahligen Wert der X am nächsten liegt, wobei zur geraden Ganzzahl gerundet wird falls X genau auf halbem Weg zwischen zwei Ganzzahlen liegt. Ein Ergebnis gleich null erhält das Vorzeichen von X, falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Truncation und S'Rounding. X'Unchecked_Access Für ein Präfix X, das eine Alias-Kennzeichnung eines Objekts bezeichnet: Alle Regeln und die Semantik die auf X'Access zutreffen gelten auch für X'Unchecked_Access, mit der Ausnahme, daß für die Zwecke der Zugriffsregeln und Prüfungen X so erscheint, als wäre es unmittelbar innerhalb eines Bibliothekspakets deklariert. S'Val Das Attribut S'Val ist für jeden diskreten Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Val(Arg : universal_integer) return S'Base Diese Funktion ergibt einen Wert vom Typ S, dessen Ordnungszahl dem Wert von Arg gleicht. Beispiel:
X'Valid Für ein Präfix X, das ein skalares Objekt bezeichnet, ergibt das Attribut "Valid" nur dann "wahr", wenn das von X bezeichnete Objekt normal ist und eine gültige Darstellung hat. Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Value Das Attribut S'Value ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Value(Arg : String) return S'Base Diese Funktion ergibt den Zahlenwert eines Abbilds, das als Zeichenkette übergeben wurde, Leerzeichen an Anfang und Ende werden ignoriert. Beispiel:
P'Version Das Attribut "Version" ergibt eine Versions"nummer" für die Spezifikation einer Programmeinheit. Der Typ des Rückgabewerts ist vom Typ "String". Siehe auch das Attribut "Body_Version" für den Rumpf und Anlage E. Wird die Versionsnummer zu der Deklaration einer Programmeinheit ausgegeben, danach die Deklaration verändert, übersetzt und von neuem die Versionsnummer ausgegeben, so unterscheiden sich beide Versionsnummern. Allerdings ist nicht sichergestellt, daß an diesen Nummern abgelesen kann, welche der beiden Deklarationen die jüngere bzw. ältere ist. Dieses Attribut steht im Zusammenhang mit verteilten Systemen. Ein Ada-Programm, das über mehrere Partitionen verteilt ist, kann mit diesem Attribut feststellen, ob die Konfiguration so vorliegt, wie vorher festgelegt. Beispiel:
S'Wide_Image Das Attribut S'Wide_Image ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Wide_Image(Arg : S'Base) return Wide_String Diese Funktion ergibt ein Abbild des Wertes Arg in Form einer Zeichenkette, das heißt die Zeichenkette enthält eine lesbare Form des Zahlenwertes. (Siehe auch S'Image) Die Gegenfunktion hierzu ist S'Wide_Value, es gilt S'Wide_Value(S'Wide_Image(x)) = x S'Wide_Value Das Attribut S'Wide_Value ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Wide_Value(Arg : Wide_String) return S'Base Diese Funktion ergibt den Zahlenwert eines Abbilds das als Wide_String übergeben wurde, Leerzeichen an Anfang und Ende werden ignoriert. (Siehe auch S'Value) Die Gegenfunktion hierzu ist S'Wide_Image, es gilt S'Wide_Value(S'Wide_Image(x)) = x S'Wide_Width Das Attribut S'Wide_Width ist für jeden skalaren Untertyp S gültig und bezeichnet die maximale Länge eines von S'Wide_Image zurückgegebenen Wide_String für alle Werte des Untertyps S. Der Wert ist vom Typ universal_integer. Für einen Untertyp mit leerem Bereich ist dieser Wert 0. (Siehe auch S'Width) S'Width Das Attribut S'Width ist für jeden skalaren Untertyp S gültig und bezeichnet die maximale Länge einer von S'Image zurückgegebenen Zeichenkette für alle Werte des Untertyps S. Der Wert ist vom Typ universal_integer. Für einen Untertyp mit leerem Bereich ist dieser Wert 0. Beispiel: type Farben is (rot, gruen, blau); Farben'Width = 5, da Farben'Image(gruen) = "gruen" S'Class'Write Schreibt ein Objekt des Typs S'Class auf einen Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Write eine Prozedur mit der folgenden Spezifikation: procedure S'Class'Write( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in T'Class) Der Aufruf verzweigt zu dem Unterprogramm S'Write, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Read. S'Write Schreibt ein Objekt des Typs S auf einen Stream, wobei nur die Repräsentation dieses Objektes ausgegeben wird. Wenn es sich bei dem Objekt um ein unbegrenztes Objekt handelt, muß die Prozedur S'Output verwendet werden. S'Write ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Write use procedure_name; S'Write bezeichnet eine Prozedur mit der folgenden Spezifikation: procedure S'Write( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in S) S'Machine Für jeden Untertyp S eines Gleitpunkt-Typs T bezeichnet das Attribut S'Machine eine Funktion mit der folgenden Spezifikation: function S'Machine (X : T) return T Falls X eine Maschinenzahl vom Typ T ist ergibt die Funktion X; ansonsten ergibt sie den Wert der durch Rundung oder Abschneiden von X zu einer der beiden nächstliegenden Maschinenzahlen vom Typ T gewonnen wird. Constraint_Error wird ausgelöst falls das Runden oder Abschneiden von X auf die Genauigkeit der Maschinenzahlen in einem Wert außerhalb des Grundbereichs von S resultiert. Ein Ergebnis gleich null hat das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. S'Machine_Overflows Für jeden Untertyp S eines Festpunkttyps T: Ergibt den Wert "wahr" wenn für jede vordefinierte Operation, die ein Ergebnis vom Typ T liefert, Überlauf und Division durch null erkannt und durch Auslösen von Constraint_Error gemeldet werden; ergibt ansonsten den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Machine_Overflows Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt den Wert "wahr" wenn für jede vordefinierte Operation, die ein Ergebnis vom Typ T liefert, Überlauf und Division durch null erkannt und durch Auslösen von Constraint_Error gemeldet werden; ergibt ansonsten den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Machine_Radix Für jeden Untertyp S eines Festpunkttyps T: Ergibt den Radix der Hardwaredarstellung des Typs T. Der Wert dieses Attributs ist vom Typ universal_integer. S'Machine_Radix Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt den Radix der Hardwaredarstellung des Typs T. Der Wert dieses Attributs ist vom Typ universal_integer. S'Machine_Rounds Für jeden Untertyp S eines Festpunkttyps T: Ergibt den Wert "wahr" falls ungenaue Ergebnisse aller vordefinierten Operationen die ein Ergebnis vom Typ T liefern gerundet werden; ergibt ansonsten den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Machine_Rounds Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt den Wert "wahr" falls ungenaue Ergebnisse aller vordefinierten Operationen die ein Ergebnis vom Typ T liefern gerundet werden; ergibt ansonsten den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Max Das Attribut S'Max ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Max(Left, Right : S'Base) return S'Base Die Funktion ergibt den größeren der Werte der beiden Parameter. Beispiel: integer'Max(5, 7) = 7 oder type Farben is (rot, grün, blau); Farben'Max(blau, rot) = blau S'Max_Size_In_Storage_Elements Für jeden Untertyp S bezeichnet dieses Attribut den maximalen Wert für Size_In_Storage_Elements der über Allocate für einen Zeigertyp angefordert wird, der auf den Untertyp S verweist. Der Wert dieses Attributs ist vom Typ universal_integer. S'Min Das Attribut S'Min ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Min(Left, Right : S'Base) return S'Base Die Funktion ergibt den kleineren der Werte der beiden Parameter. Beispiel: integer'Min(5, 7) = 5 oder type Farben is (rot, grün, blau); Farben'Min(blau, rot) = rot S'Modulus Für jeden modularen Untertyp S liefert das Attribut S'Modulus den Wert, der bei der Modulo-Deklaration des Typs S angegeben wurde. Dieser Wert ist vom Typ universal_integer. S'Class'Output Schreibt ein Objekt des Typs S'Class auf einen Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Output eine Prozedur mit der folgenden Spezifikation: procedure S'Class'Output( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in T'Class) Diese Prozedur schreibt zuerst durch einen Aufruf von String'Output(Tags.External_Tag(Item'Tag) die externe Kennung von Item auf einen Stream und verzweigt dann zu dem Unterprogramm S'Output, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Input. S'Output Schreibt ein Objekt des Typs S auf einen Stream und fügt zusätzlich Angaben über Grenzen oder Diskriminanten hinzu, die beim Lesen mittels der Gegenfunktion S'Input ausgewertet werden. S'Output ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Output use procedure_name; S'Output bezeichnet eine Funktion mit der folgenden Spezifikation: procedure S'Output( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in S) D'Partition_ID Das Attribut "Partition_ID" identifiziert die Partition (siehe auch Anlage E "Verteilte Systeme"), in der eine Bibliothekseinheit abgearbeitet wird. Der Rückgabewert hat den Typ universal_integer. Ist das Objekt, auf das "Partition_ID" abgewendet werden soll, eine als "pure" deklarierte Bibliothekseinheit oder ist das Objekt keine eigenständige Bibliothekseinheit, so führt die Anweisung zu einem Übersetzungsfehler. Ist das Objekt eine "remote call interface"-Bibliothekseinheit, so wird die Identifikation der Partition zurückgegeben, auf der der Rumpf abgearbeitet wurde. Ein "remote call interface" ist eine Schnittstelle, mittels derer "remote calls" abgesetzt werden können . Ein "remote call" ist der Aufruf eines Unterprogramms einer Partition, die verschieden von der Partition ist, aus der der Aufruf initiert wird. Eine Partition kann auf einer anderen Plattform ausgeführt werden. Beispiel:
S'Pos Das Attribut S'Pos ist für jeden diskreten Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Pos(Arg : S'Base) return universal_integer Diese Funktion ergibt die Ordnungszahl des Wertes Arg, als einen Wert vom Typ universal_integer. Beispiel: type Farben is (rot, grün, blau); Farben'Pos(rot) = 0 Farben'Pos(blau) = 2 Die Gegenfunktion hierzu ist S'Val, es gilt S'Val(S'Pos(x)) = x R.C'Position Liefert für eine Komponente C eines Verbundtyps R die Position der Komponente relativ zum Anfang des Verbundes, wobei diese Positionsdifferenz in Byte ausgegeben wird. Die erste Komponente befindet sich auf Position 0, alle anderen Komponenten des Verbundtyps R berechnen sich wie folgt: Position := R.C'Address - R'Address. Dieses Attribut liefert einen Wert des Typs universal_integer. S'Pred Das Attribut S'Pred ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Pred(Arg : S'Base) return S'Base Für einen Aufzählungstyp ergibt die Funktion den Wert, dessen Ordnungszahl um eins kleiner ist als die des Wertes von Arg; Constraint_Error wird ausgelöst, falls es keinen solchen Wert des Typs gibt. Beispiel:
Für einen ganzzahligen Typ ergibt die Funktion den Wert der Subtraktion von eins vom Wert von Arg. Beispiel: integer'Pred(5) = 4 Für einen Festpunkttyp ergibt die Funktion den Wert der Subtraktion von Small vom Wert von Arg. Für einen Gleitpunkttyp ergibt die Funktion die Maschinenzahl (wie in 3.5.7 definiert) unmittelbar unter dem Wert von Arg; Constraint_Error wird ausgelöst, falls es keine solche Maschinenzahl gibt. Die Gegenfunktion hierzu ist S'Succ. A'Range(N) Das Attribut A'Range(N) entspricht dem Bereich A'First(N) .. A'Last(N) eines Reihungstyps A, mit der Ausnahme daß das Präfix A nur einmal ausgewertet wird. Siehe auch A'First(N), A'Last(N) und A'Length(N). Beispiel:
A'Range Das Attribut A'Range entspricht dem Bereich A'First .. A'Last eines Reihungstyps A, mit der Ausnahme daß das Präfix A nur einmal ausgewertet wird. Siehe auch A'First, A'Last und A'Length. Beispiel:
S'Range Das Attribut S'Range entspricht dem Bereich S'First .. S'Last eines skalaren Untertyps S. Beispiel:
S'Class'Read Liest ein Objekt des Typs S'Class von einem Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Read eine Funktion mit der folgenden Spezifikation: procedure S'Class'Read( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : out T'Class) Der Aufruf verzweigt zu dem Unterprogramm S'Read, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Write. S'Read Liest ein Objekt des Typs S von einem Stream, wobei nur die Repräsentation dieses Objektes gelesen wird. Wenn es sich bei dem Objekt um ein unbegrenztes Objekt handelt, muß die Prozedur S'Input verwendet werden. S'Read ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Read use procedure_name; S'Read bezeichnet eine Prozedur mit der folgenden Spezifikation: procedure S'Read( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : out S) S'Remainder Für jeden Untertyp S eines Gleitpunkttyps T bezeichnet S'Remainder eine Funktion mit der folgenden Spezifikation: function S'Remainder (X, Y : T) return T Für ein Y ungleich null sei v der Wert X-n*Y, wobei n die Ganzzahl ist, die dem genauen Wert von X/Y am nächsten liegt; für |n-X/Y|=1/2 wird ein gerades n gewählt. Falls v eine Maschinenzahl vom Typ T ist ergibt die Funktion v; ansonsten ergibt sie null. Constraint_Error wird ausgelöst falls Y gleich null ist. Ein Ergebnis von null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. S'Round Das Attribut S'Round ist für jeden dezimalen Festpunkt-Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Round(X : universal_real) return S'Base Die Funktion ergibt den gerundeten Wert von X. Für ein X das genau zwischen zwei Werten des Typs S liegt wird von null hinweg gerundet. Beispiel:
S'Rounding Das Attribut S'Rounding ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Rounding (X : T) return T Die Funktion ergibt den ganzzahligen Wert der X am nächsten liegt. Falls X genau auf halbem Weg zwischen zwei Ganzzahlen liegt wird von null hinweg gerundet. Ein Ergebnis gleich null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Ceiling, S'Floor, S'Truncation und S'Unbiased_Rounding S'Safe_First Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt die untere Grenze des sicheren Bereichs des Typs T. Falls die Anlage G "Numerik" vom Übersetzer nicht berücksichtigt wird, ist der Wert dieses Attributs implementierungsbestimmt. Der Wert dieses Attributs ist vom Typ universal_real. S'Safe_Last Für jeden Untertyp S eines Gleitpunkttyps T: Ergibt die obere Grenze des sicheren Bereichs des Typs T. Falls die Anlage G "Numerik" vom Übersetzer nicht berücksichtigt wird, ist der Wert dieses Attributs implementierungsbestimmt. Der Wert dieses Attributs ist vom Typ universal_real. S'Scale Für jeden dezimalen Festpunkt-Untertyp S bezeichnet das Attribut S'Scale die Skala des Untertyps S, definiert als den Wert N, so daß S'Delta = 10.0**(-N). Die Skala zeigt die Position des Kommas im Vergleich zur am weitesten rechts liegenden signifikanten Stelle der Werte des Untertyps S. Der Wert dieses Attributs ist vom Typ universal_integer. S'Scaling Für jeden Untertyp S eines Gleitpunkttyps T bezeichnet S'Scaling eine Funktion mit der folgenden Spezifikation: function S'Scaling (X : T; Adjustment : universal_integer) return T Sei v der Wert X*T'Machine_Radix**Adjustment. Falls v eine Maschinenzahl vom Typ T ist, oder falls |v|>=T'Model_Small ergibt die Funktion v; ansonsten ergibt sie eine der Maschinenzahlen vom Typ T die v am nächsten liegen. Constraint_Error wird ausgelöst falls v sich außerhalb des Basisbereichs von S befindet. Ein Ergebnis gleich null hat das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. S'Signed_Zeros Für jeden Untertyp S eines Gleitpunkt-Typs T ergibt dieses Attribut den Wert "wahr" wenn die Hardwaredarstellung für den Typ T dazu in der Lage ist, Nullen mit sowohl positivem als auch negativem Vorzeichen darzustellen, welche von den vordefinierten Operationen vom Typ T erzeugt werden, wie in IEC 559:1989 spezifiziert; ansonsten ergibt es den Wert "falsch". Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Size Für einen Typ S bezeichnet S'Size die Größe (in Bit), wobei von dem minimalen Wert ausgegangen wird, der für die Repräsentation benötigt wird. Für ein Objekt dieses Typs kann durchaus ein größerer Wert ermittelt werden, wie es z. B. bei Verbundtypen der Fall ist, wenn eine Ausrichtung an Wortgrenzen vorgenommen wird. Falls S unbestimmt ist, ist die ermittelte Größe implementierungsabhängig. Der Wert dieses Attributs ist vom Typ universal_integer. X'Size Das Attribut X'Size bezeichnet die Größe der Darstellung des Objektes, angegeben in Bit. Es bezieht sich auf Objekte und nicht auf Typen. Der Wert dieses Attributs ist vom Typ universal_integer. Siehe auch S'Size. S'Storage_Pool Für jeden Zugriffs-Untertyp S bezeichnet das Attribut "Storage_Pool" den Speicherpool des Typs von S. Der Typ dieses Attributs ist Root_Storage_Pool'Class. S'Storage_Size Der Rückgabewert dieses Attributs entspricht einem Aufruf von Storage_Size(S'Storage_Pool) und liefert ein Maß der für den Pool reservierten Speichereinheiten. Der Wert entspricht der Gesamtzahl der Speichereinheiten, die für die Speicherbelegung aller Objekte des Typs S reserviert sind. Der Typ dieses Attributs ist universal_integer. T'Storage_Size Das Attribut "Storage_Size" liefert die Anzahl Speicherelemente, die für den Prozeß T reserviert sind. Anzahl ist vom Typ universal_integer. Falls der Prozeß T über einen Laufzeitstapel verfügt, so ist dessen Größe berücksichtigt. In manchen Laufzeitsysteme wird einem Prozeß noch weiterer Speicherplatz zugewiesen, in dem z. B. sogenannte "task control blocks" abgelegt werden. Ob solcher Speicherplatz ebenfalls durch das Attribut "Storage_Size" berücksichtigt ist, wird durch das Referenzhandbuch nicht spezifiziert. S'Succ Das Attribut S'Succ ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Succ(Arg : S'Base) return S'Base Für einen Aufzählungstyp ergibt die Funktion den Wert dessen Ordnungszahl um eins über der des Wertes von Arg liegt; Constraint_Error wird ausgelöst, falls es von diesem Typ keinen solchen Wert gibt. Beispiel:
Für einen ganzzahligen Typ ergibt die Funktion den Wert der Addition von eins zum Wert von Arg. Beispiel: integer'Succ(2) = 3 Für einen Festpunkttyp ergibt die Funktion den Wert der Addition von S'Small zum Wert von Arg. Für einen Gleitpunkt-Typ ergibt die Funktion die Maschinenzahl unmittelbar über dem Wert von Arg; Constraint_Error wird ausgelöst, falls es keine solche Maschinenzahl gibt. Die Gegenfunktion hierzu ist S'Pred. S'Tag Für jeden erweiterbaren Typ T liefert das Attribut S'Tag die Kennung des Typs T. Der Wert dieses Attributs ist vom Typ Tag, das im Paket Ada.Tags privat deklariert ist. Man kann diese Kennung z. B. dazu verwenden, Objekte erweiterbaren Typs dahingehend zu vergleichen, ob sie bezüglich ihrer Ableitungsstufe übereinstimmen. X'Tag Für ein Präfix X welches ein klassenweiter erweiterbarer Typ ist: X'Tag bezeichnet die Kennung von X. Der Wert dieses Attributs ist vom Typ Tag. T'Terminated Das Attribut "Terminated" ist vom Typ "Boolean" und liefert den Wert "wahr", wenn der Prozeß T beendet ist, andernfalls den Wert "falsch" (siehe Zustände von Prozessen). Beispiel:
S'Truncation Das Attribut S'Truncation ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Truncation (X : T) return T Die Funktion ergibt den Wert Ceiling(X) falls X negativ ist und ansonsten Floor(X), entspricht also einem Abschneiden der Nachkommastellen. Ein Ergebnis gleich null erhält das Vorzeichen von X falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Ceiling, S'Floor, S'Rounding und S'Unbiased_Rounding. S'Unbiased_Rounding Das Attribut S'Unbiased_Rounding ist für jeden Untertyp S eines Gleitpunkttyps T gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Unbiased_Rounding (X : T) return T Die Funktion ergibt den ganzzahligen Wert der X am nächsten liegt, wobei zur geraden Ganzzahl gerundet wird falls X genau auf halbem Weg zwischen zwei Ganzzahlen liegt. Ein Ergebnis gleich null erhält das Vorzeichen von X, falls S'Signed_Zeros "wahr" ist. Beispiel:
Siehe auch: S'Truncation und S'Rounding. X'Unchecked_Access Für ein Präfix X, das eine Alias-Kennzeichnung eines Objekts bezeichnet: Alle Regeln und die Semantik die auf X'Access zutreffen gelten auch für X'Unchecked_Access, mit der Ausnahme, daß für die Zwecke der Zugriffsregeln und Prüfungen X so erscheint, als wäre es unmittelbar innerhalb eines Bibliothekspakets deklariert. S'Val Das Attribut S'Val ist für jeden diskreten Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Val(Arg : universal_integer) return S'Base Diese Funktion ergibt einen Wert vom Typ S, dessen Ordnungszahl dem Wert von Arg gleicht. Beispiel:
Die Gegenfunktion hierzu ist S'Pos, es gilt S'Val(S'Pos(x)) = x X'Valid Für ein Präfix X, das ein skalares Objekt bezeichnet, ergibt das Attribut "Valid" nur dann "wahr", wenn das von X bezeichnete Objekt normal ist und eine gültige Darstellung hat. Der Wert dieses Attributs ist vom vordefinierten Typ Boolean. S'Value Das Attribut S'Value ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Value(Arg : String) return S'Base Diese Funktion ergibt den Zahlenwert eines Abbilds, das als Zeichenkette übergeben wurde, Leerzeichen an Anfang und Ende werden ignoriert. Beispiel:
Die Gegenfunktion hierzu ist S'Image, es gilt S'Value(S'Image(x)) = x P'Version Das Attribut "Version" ergibt eine Versions"nummer" für die Spezifikation einer Programmeinheit. Der Typ des Rückgabewerts ist vom Typ "String". Siehe auch das Attribut "Body_Version" für den Rumpf und Anlage E. Wird die Versionsnummer zu der Deklaration einer Programmeinheit ausgegeben, danach die Deklaration verändert, übersetzt und von neuem die Versionsnummer ausgegeben, so unterscheiden sich beide Versionsnummern. Allerdings ist nicht sichergestellt, daß an diesen Nummern abgelesen kann, welche der beiden Deklarationen die jüngere bzw. ältere ist. Dieses Attribut steht im Zusammenhang mit verteilten Systemen. Ein Ada-Programm, das über mehrere Partitionen verteilt ist, kann mit diesem Attribut feststellen, ob die Konfiguration so vorliegt, wie vorher festgelegt. Beispiel:
S'Wide_Image Das Attribut S'Wide_Image ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Wide_Image(Arg : S'Base) return Wide_String Diese Funktion ergibt ein Abbild des Wertes Arg in Form einer Zeichenkette, das heißt die Zeichenkette enthält eine lesbare Form des Zahlenwertes. (Siehe auch S'Image) Die Gegenfunktion hierzu ist S'Wide_Value, es gilt S'Wide_Value(S'Wide_Image(x)) = x S'Wide_Value Das Attribut S'Wide_Value ist für jeden skalaren Untertyp S gültig und bezeichnet eine Funktion mit der folgenden Spezifikation: function S'Wide_Value(Arg : Wide_String) return S'Base Diese Funktion ergibt den Zahlenwert eines Abbilds das als Wide_String übergeben wurde, Leerzeichen an Anfang und Ende werden ignoriert. (Siehe auch S'Value) Die Gegenfunktion hierzu ist S'Wide_Image, es gilt S'Wide_Value(S'Wide_Image(x)) = x S'Wide_Width Das Attribut S'Wide_Width ist für jeden skalaren Untertyp S gültig und bezeichnet die maximale Länge eines von S'Wide_Image zurückgegebenen Wide_String für alle Werte des Untertyps S. Der Wert ist vom Typ universal_integer. Für einen Untertyp mit leerem Bereich ist dieser Wert 0. (Siehe auch S'Width) S'Width Das Attribut S'Width ist für jeden skalaren Untertyp S gültig und bezeichnet die maximale Länge einer von S'Image zurückgegebenen Zeichenkette für alle Werte des Untertyps S. Der Wert ist vom Typ universal_integer. Für einen Untertyp mit leerem Bereich ist dieser Wert 0. Beispiel:
S'Class'Write Schreibt ein Objekt des Typs S'Class auf einen Stream. Für jeden Untertyp S'Class eines klassenweiten Typs T'Class bezeichnet S'Class'Write eine Prozedur mit der folgenden Spezifikation: procedure S'Class'Write( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in T'Class) Der Aufruf verzweigt zu dem Unterprogramm S'Write, das dem Typ T zugeordnet ist. Diese Funktion ist die Gegenfunktion zu S'Class'Read. S'Write Schreibt ein Objekt des Typs S auf einen Stream, wobei nur die Repräsentation dieses Objektes ausgegeben wird. Wenn es sich bei dem Objekt um ein unbegrenztes Objekt handelt, muß die Prozedur S'Output verwendet werden. S'Write ist für jeden Typ vordefiniert und kann auf Wunsch durch eine eigene Ausgaberoutine ersetzt werden: for subtype_name'Write use procedure_name; S'Write bezeichnet eine Prozedur mit der folgenden Spezifikation: procedure S'Write( Stream : access Ada.Streams.Root_Stream_Type'Class; Item : in S) |
||||||||||||||||||||||||||||||||||||||||||||||
|