|
11.1.3.4 Zeichenkettenbehandlung bei begrenzter Zeichenkettenlänge
Das Paket Ada.Strings.Bounded ist ein generisches Paket, das den Typ Bounded_String
und dazugehörige Funktionen definiert. Die maximale Länge eines
Objekts eines Bounded_String-Typs wird während der Instantiierung
festgelegt. Die Unterprogramme für Zeichenketten mit fester Länge
gelten in ähnlicher Form auch für Zeichenketten mit begrenzter
Länge. Einige dieser Unterprogramme haben ein anderes Verhalten,
um der größeren Flexibilität nachzukommen. Zusätzlich
existieren noch einige Konstruktions- und Auswahloperationen.
Werte verschiedener Bounded_String-Typen können einander nicht zugewiesen
und auch nicht miteinander verglichen werden.
Im Paket vereinbarte Typen und Objekte
1) Max_Length - ist eine Konstante und enthält die maximale Länge
für Zeichenketten, die mit dem Bounded_String-Typ
bearbeitet werden können.
2) Null_Bounded_String - Eine leerer Zeichenkette des Bounded_String-Typs.
3) Bounded_String - ist Typ für Zeichenketten mit begrenzter Länge.
4) Length_Range - ist ein Untertyp von NATURAL mit dem Bereich, der die
maximale Größe von 0 .. Max_Length angibt.
Die Vergleichsoperatoren "=", "<", "<=",
">", ">=" haben die gleiche Wirkung wie die
Funktionen für String-Typen. Bounded_String-Zeichenketten können
auch mit String-Zeichenketten verglichen werden.
Die Unterprogramme zum Suchen (Index, Count, Find_Token), zum Übersetzen
(Translate), zum Umformen (Replace_Slice, Insert, Overwrite, Delete) und
zur Auswahl (Trim, Head, Tail) haben die gleiche Wirkung wie die gleichnamigen
Unterprogramme für String-Typen. Alle Funktionen, bei denen die Möglichkeit
besteht, daß die Zeichenkette die maximale Länge des Bounded_String-Typs
überschreitet, haben einen Parameter (Typ Truncation) zur Festlegung,
ob die Zeichenkette abgeschnitten werden soll, oder ob die Ausnahme Length_Error
ausgelöst werden soll.
Für die Funktion "*" existieren jetzt drei Versionen, zum
Vervielfältigen von Character, String und Bounded_String. Wenn die
Zeichenkette durch die Vervielfältigung zu lang wird, wird immer
die Ausnahme Length_Error ausgelöst.
Die zusätzliche Funktion Replicate (auch für Character, String
und Bounded_String) ist eine Variante der Funktion "*" und hat
zusätzlich den Parameter Drop : in Truncation := Error, wodurch ein
Abschneiden der zu lang gewordenen Zeichenkette möglich wird.
Zusätzliche Funktionen für Bounded_String:
function Length (Source : in Bounded_String) return Length_Range;
|
Liefert die Länge der Zeichenkette "Source".
function To_Bounded_String(Source : in String;
Drop : in Truncation := Error)
return Bounded_String;
|
Liefert die Bounded_String-Version der Zeichenkette "Source".
function To_String (Source : in Bounded_String) return String;
|
Liefert die String-Version der Bounded_String-Zeichenkette "Source".
function Append (Left : in ...; Right : in ...;
Drop : in Truncation := Error) return Bounded_String;
|
Die Funktion Append liefert eine aus den Zeichen/Zeichenketten in "Left"
und "Right" zusammengesetzte Bounded_String-Zeichenkette. Die Parameter
"Left" und "Right" können jeweils vom Typ Character, String
oder Bounded_String sein, wobei mindestens einer der Parameter vom Typ
Bounded_String sein muß.
procedure Append (Source : in out Bounded_String; New_Item : in ...;
Drop : in Truncation := Error);
|
Die Prozedur Append erweitert die Bounded_String-Zeichenkette in "Source"
um das Zeichen/die Zeichenkette in "New_Item". Der Parameter "New_Item"
kann vom Typ Character, String oder Bounded_String sein.
function "&" (Left : in ...; Right : in ...) return Bounded_String;
|
Die Funktion "&" liefert eine aus den Zeichen/Zeichenketten
in "Left" und "Right" zusammengesetzte Bounded_String-Zeichenkette.
Die Parameter "Left" und "Right" können jeweils vom Typ
Character, String oder Bounded_String sein, wobei mindestens einer der
Parameter vom Typ Bounded_String sein muß. Wenn die Zeichenkette
zu lang wird, wird immer die Ausnahme Length_Error ausgelöst.
function Element (Source : in Bounded_String; Index : in Positive) return
Character;
|
Liefert das Zeichen an Position "Index" der Zeichenkette "Source".
Wenn "Index" größer als die Länge der Zeichenkette
ist, wird die Ausnahme Index_Error ausgelöst.
procedure Replace_Element (Source : in out Bounded_String; Index : in
Positive; By : in Character);
|
Ersetzt das Zeichen an Position "Index" der Zeichenkette "Source"
durch das Zeichen "By". Wenn "Index" größer als die
Länge der Zeichenkette ist, wird die Ausnahme Index_Error ausgelöst.
function Slice (Source : in Bounded_String; Low : in Positive; High :
in Natural) return String;
|
Liefert den Ausschnitt von "Low" bis "High" aus der Zeichenkette
"Source". Wenn "Low" größer als die Länge von
"Source" ist, wird die Ausnahme Index_Error ausgelöst.
Spezifikation
des Paketes "Ada.Strings.Bounded"
|