-- --
-- S p e c --
-- --
--- Copyright (C) 1992-1997 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2006, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
--- MA 02111-1307, USA. --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
------------------------------------------------------------------------------
with Ada.Strings.Wide_Maps;
+with Ada.Strings.Wide_Superbounded;
package Ada.Strings.Wide_Bounded is
-pragma Preelaborate (Wide_Bounded);
+ pragma Preelaborate;
generic
Max : Positive;
Max_Length : constant Positive := Max;
type Bounded_Wide_String is private;
+ pragma Preelaborable_Initialization (Bounded_Wide_String);
Null_Bounded_Wide_String : constant Bounded_Wide_String;
subtype Length_Range is Natural range 0 .. Max_Length;
- function Length (Source : in Bounded_Wide_String) return Length_Range;
+ function Length (Source : Bounded_Wide_String) return Length_Range;
--------------------------------------------------------
-- Conversion, Concatenation, and Selection Functions --
--------------------------------------------------------
function To_Bounded_Wide_String
- (Source : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function To_Wide_String
- (Source : in Bounded_Wide_String)
- return Wide_String;
+ (Source : Bounded_Wide_String) return Wide_String;
+
+ procedure Set_Bounded_Wide_String
+ (Target : out Bounded_Wide_String;
+ Source : Wide_String;
+ Drop : Truncation := Error);
+ pragma Ada_05 (Set_Bounded_Wide_String);
function Append
- (Left, Right : in Bounded_Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Append
- (Left : in Bounded_Wide_String;
- Right : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Append
- (Left : in Wide_String;
- Right : in Bounded_Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Append
- (Left : in Bounded_Wide_String;
- Right : in Wide_Character;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Wide_Character;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Append
- (Left : in Wide_Character;
- Right : in Bounded_Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Left : Wide_Character;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Append
(Source : in out Bounded_Wide_String;
- New_Item : in Bounded_Wide_String;
- Drop : in Truncation := Error);
+ New_Item : Bounded_Wide_String;
+ Drop : Truncation := Error);
procedure Append
(Source : in out Bounded_Wide_String;
- New_Item : in Wide_String;
- Drop : in Truncation := Error);
+ New_Item : Wide_String;
+ Drop : Truncation := Error);
procedure Append
(Source : in out Bounded_Wide_String;
- New_Item : in Wide_Character;
- Drop : in Truncation := Error);
+ New_Item : Wide_Character;
+ Drop : Truncation := Error);
function "&"
- (Left, Right : in Bounded_Wide_String)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Bounded_Wide_String;
function "&"
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Bounded_Wide_String;
function "&"
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Bounded_Wide_String;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Bounded_Wide_String;
function "&"
- (Left : in Bounded_Wide_String;
- Right : in Wide_Character)
- return Bounded_Wide_String;
+ (Left : Bounded_Wide_String;
+ Right : Wide_Character) return Bounded_Wide_String;
function "&"
- (Left : in Wide_Character;
- Right : in Bounded_Wide_String)
- return Bounded_Wide_String;
+ (Left : Wide_Character;
+ Right : Bounded_Wide_String) return Bounded_Wide_String;
function Element
- (Source : in Bounded_Wide_String;
- Index : in Positive)
- return Wide_Character;
+ (Source : Bounded_Wide_String;
+ Index : Positive) return Wide_Character;
procedure Replace_Element
(Source : in out Bounded_Wide_String;
- Index : in Positive;
- By : in Wide_Character);
+ Index : Positive;
+ By : Wide_Character);
function Slice
- (Source : in Bounded_Wide_String;
- Low : in Positive;
- High : in Natural)
- return Wide_String;
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural) return Wide_String;
+
+ function Bounded_Slice
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural) return Bounded_Wide_String;
+ pragma Ada_05 (Bounded_Slice);
+
+ procedure Bounded_Slice
+ (Source : Bounded_Wide_String;
+ Target : out Bounded_Wide_String;
+ Low : Positive;
+ High : Natural);
+ pragma Ada_05 (Bounded_Slice);
function "="
- (Left : in Bounded_Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function "="
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean;
function "="
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function "<"
- (Left : in Bounded_Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function "<"
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean;
function "<"
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function "<="
- (Left : in Bounded_Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function "<="
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean;
function "<="
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function ">"
- (Left : in Bounded_Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function ">"
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean;
function ">"
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function ">="
- (Left : in Bounded_Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
function ">="
- (Left : in Bounded_Wide_String;
- Right : in Wide_String)
- return Boolean;
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean;
function ">="
- (Left : in Wide_String;
- Right : in Bounded_Wide_String)
- return Boolean;
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean;
----------------------
-- Search Functions --
----------------------
function Index
- (Source : in Bounded_Wide_String;
- Pattern : in Wide_String;
- Going : in Direction := Forward;
- Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
function Index
- (Source : in Bounded_Wide_String;
- Pattern : in Wide_String;
- Going : in Direction := Forward;
- Mapping : in Wide_Maps.Wide_Character_Mapping_Function)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ Test : Membership := Inside;
+ Going : Direction := Forward) return Natural;
function Index
- (Source : in Bounded_Wide_String;
- Set : in Wide_Maps.Wide_Character_Set;
- Test : in Membership := Inside;
- Going : in Direction := Forward)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ From : Positive;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural;
+ pragma Ada_05 (Index);
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ From : Positive;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
+ pragma Ada_05 (Index);
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ From : Positive;
+ Test : Membership := Inside;
+ Going : Direction := Forward) return Natural;
+ pragma Ada_05 (Index);
+
+ function Index_Non_Blank
+ (Source : Bounded_Wide_String;
+ Going : Direction := Forward) return Natural;
function Index_Non_Blank
- (Source : in Bounded_Wide_String;
- Going : in Direction := Forward)
- return Natural;
+ (Source : Bounded_Wide_String;
+ From : Positive;
+ Going : Direction := Forward) return Natural;
+ pragma Ada_05 (Index_Non_Blank);
function Count
- (Source : in Bounded_Wide_String;
- Pattern : in Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural;
function Count
- (Source : in Bounded_Wide_String;
- Pattern : in Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping_Function)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural;
function Count
- (Source : in Bounded_Wide_String;
- Set : in Wide_Maps.Wide_Character_Set)
- return Natural;
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set) return Natural;
procedure Find_Token
- (Source : in Bounded_Wide_String;
- Set : in Wide_Maps.Wide_Character_Set;
- Test : in Membership;
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ Test : Membership;
First : out Positive;
Last : out Natural);
------------------------------------
- -- Wide_String Translation Subprograms --
+ -- String Translation Subprograms --
------------------------------------
function Translate
- (Source : in Bounded_Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping)
+ return Bounded_Wide_String;
procedure Translate
- (Source : in out Bounded_Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping);
+ (Source : in out Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping);
function Translate
- (Source : in Bounded_Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping_Function)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function)
+ return Bounded_Wide_String;
procedure Translate
(Source : in out Bounded_Wide_String;
- Mapping : in Wide_Maps.Wide_Character_Mapping_Function);
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function);
---------------------------------------
- -- Wide_String Transformation Subprograms --
+ -- String Transformation Subprograms --
---------------------------------------
function Replace_Slice
- (Source : in Bounded_Wide_String;
- Low : in Positive;
- High : in Natural;
- By : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural;
+ By : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Replace_Slice
(Source : in out Bounded_Wide_String;
- Low : in Positive;
- High : in Natural;
- By : in Wide_String;
- Drop : in Truncation := Error);
+ Low : Positive;
+ High : Natural;
+ By : Wide_String;
+ Drop : Truncation := Error);
function Insert
- (Source : in Bounded_Wide_String;
- Before : in Positive;
- New_Item : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Before : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Insert
(Source : in out Bounded_Wide_String;
- Before : in Positive;
- New_Item : in Wide_String;
- Drop : in Truncation := Error);
+ Before : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error);
function Overwrite
- (Source : in Bounded_Wide_String;
- Position : in Positive;
- New_Item : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Position : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Overwrite
(Source : in out Bounded_Wide_String;
- Position : in Positive;
- New_Item : in Wide_String;
- Drop : in Truncation := Error);
+ Position : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error);
function Delete
- (Source : in Bounded_Wide_String;
- From : in Positive;
- Through : in Natural)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ From : Positive;
+ Through : Natural) return Bounded_Wide_String;
procedure Delete
(Source : in out Bounded_Wide_String;
- From : in Positive;
- Through : in Natural);
+ From : Positive;
+ Through : Natural);
---------------------------------
- -- Wide_String Selector Subprograms --
+ -- String Selector Subprograms --
---------------------------------
function Trim
- (Source : in Bounded_Wide_String;
- Side : in Trim_End)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Side : Trim_End) return Bounded_Wide_String;
procedure Trim
(Source : in out Bounded_Wide_String;
- Side : in Trim_End);
+ Side : Trim_End);
function Trim
- (Source : in Bounded_Wide_String;
- Left : in Wide_Maps.Wide_Character_Set;
- Right : in Wide_Maps.Wide_Character_Set)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Left : Wide_Maps.Wide_Character_Set;
+ Right : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String;
procedure Trim
(Source : in out Bounded_Wide_String;
- Left : in Wide_Maps.Wide_Character_Set;
- Right : in Wide_Maps.Wide_Character_Set);
+ Left : Wide_Maps.Wide_Character_Set;
+ Right : Wide_Maps.Wide_Character_Set);
function Head
- (Source : in Bounded_Wide_String;
- Count : in Natural;
- Pad : in Wide_Character := Wide_Space;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Head
(Source : in out Bounded_Wide_String;
- Count : in Natural;
- Pad : in Wide_Character := Wide_Space;
- Drop : in Truncation := Error);
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error);
function Tail
- (Source : in Bounded_Wide_String;
- Count : in Natural;
- Pad : in Wide_Character := Wide_Space;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Source : Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error) return Bounded_Wide_String;
procedure Tail
(Source : in out Bounded_Wide_String;
- Count : in Natural;
- Pad : in Wide_Character := Wide_Space;
- Drop : in Truncation := Error);
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error);
------------------------------------
- -- Wide_String Constructor Subprograms --
+ -- String Constructor Subprograms --
------------------------------------
function "*"
- (Left : in Natural;
- Right : in Wide_Character)
- return Bounded_Wide_String;
+ (Left : Natural;
+ Right : Wide_Character) return Bounded_Wide_String;
function "*"
- (Left : in Natural;
- Right : in Wide_String)
- return Bounded_Wide_String;
+ (Left : Natural;
+ Right : Wide_String) return Bounded_Wide_String;
function "*"
- (Left : in Natural;
- Right : in Bounded_Wide_String)
- return Bounded_Wide_String;
+ (Left : Natural;
+ Right : Bounded_Wide_String) return Bounded_Wide_String;
function Replicate
- (Count : in Natural;
- Item : in Wide_Character;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Count : Natural;
+ Item : Wide_Character;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Replicate
- (Count : in Natural;
- Item : in Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Count : Natural;
+ Item : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
function Replicate
- (Count : in Natural;
- Item : in Bounded_Wide_String;
- Drop : in Truncation := Error)
- return Bounded_Wide_String;
+ (Count : Natural;
+ Item : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String;
private
- Wide_NUL : constant Wide_Character := Wide_Character'Val (0);
-
- type Bounded_Wide_String is record
- Length : Length_Range := 0;
- Data : Wide_String (1 .. Max_Length);
- end record;
+ -- Most of the implementation is in the separate non generic package
+ -- Ada.Strings.Wide_Superbounded. Type Bounded_Wide_String is derived
+ -- from type Wide_Superbounded.Super_String with the maximum length
+ -- constraint. In almost all cases, the routines in Wide_Superbounded
+ -- can be called with no requirement to pass the maximum length
+ -- explicitly, since there is at least one Bounded_Wide_String argument
+ -- from which the maximum length can be obtained. For all such
+ -- routines, the implementation in this private part is simply a
+ -- renaming of the corresponding routine in the super bouded package.
+
+ -- The five exceptions are the * and Replicate routines operating on
+ -- character values. For these cases, we have a routine in the body
+ -- that calls the superbounded routine passing the maximum length
+ -- explicitly as an extra parameter.
+
+ type Bounded_Wide_String is
+ new Wide_Superbounded.Super_String (Max_Length);
+ -- Deriving Bounded_Wide_String from Wide_Superbounded.Super_String is
+ -- the real trick, it ensures that the type Bounded_Wide_String
+ -- declared in the generic instantiation is compatible with the
+ -- Super_String type declared in the Wide_Superbounded package.
Null_Bounded_Wide_String : constant Bounded_Wide_String :=
- (Length => 0, Data => (1 .. Max_Length => Wide_NUL));
-
- -- Pragma Inline declarations (GNAT specific additions)
-
- pragma Inline ("=");
- pragma Inline ("<");
- pragma Inline ("<=");
- pragma Inline (">");
- pragma Inline (">=");
- pragma Inline ("&");
- pragma Inline (Count);
- pragma Inline (Element);
- pragma Inline (Find_Token);
- pragma Inline (Index);
- pragma Inline (Index_Non_Blank);
- pragma Inline (Length);
- pragma Inline (Replace_Element);
- pragma Inline (Slice);
+ (Max_Length => Max_Length,
+ Current_Length => 0,
+ Data =>
+ (1 .. Max_Length =>
+ Wide_Superbounded.Wide_NUL));
+
pragma Inline (To_Bounded_Wide_String);
- pragma Inline (To_Wide_String);
+
+ procedure Set_Bounded_Wide_String
+ (Target : out Bounded_Wide_String;
+ Source : Wide_String;
+ Drop : Truncation := Error)
+ renames Set_Super_String;
+
+ function Length
+ (Source : Bounded_Wide_String) return Length_Range
+ renames Super_Length;
+
+ function To_Wide_String
+ (Source : Bounded_Wide_String) return Wide_String
+ renames Super_To_String;
+
+ function Append
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Append;
+
+ function Append
+ (Left : Bounded_Wide_String;
+ Right : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Append;
+
+ function Append
+ (Left : Wide_String;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Append;
+
+ function Append
+ (Left : Bounded_Wide_String;
+ Right : Wide_Character;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Append;
+
+ function Append
+ (Left : Wide_Character;
+ Right : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Append;
+
+ procedure Append
+ (Source : in out Bounded_Wide_String;
+ New_Item : Bounded_Wide_String;
+ Drop : Truncation := Error)
+ renames Super_Append;
+
+ procedure Append
+ (Source : in out Bounded_Wide_String;
+ New_Item : Wide_String;
+ Drop : Truncation := Error)
+ renames Super_Append;
+
+ procedure Append
+ (Source : in out Bounded_Wide_String;
+ New_Item : Wide_Character;
+ Drop : Truncation := Error)
+ renames Super_Append;
+
+ function "&"
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Bounded_Wide_String
+ renames Concat;
+
+ function "&"
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Bounded_Wide_String
+ renames Concat;
+
+ function "&"
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Bounded_Wide_String
+ renames Concat;
+
+ function "&"
+ (Left : Bounded_Wide_String;
+ Right : Wide_Character) return Bounded_Wide_String
+ renames Concat;
+
+ function "&"
+ (Left : Wide_Character;
+ Right : Bounded_Wide_String) return Bounded_Wide_String
+ renames Concat;
+
+ function Element
+ (Source : Bounded_Wide_String;
+ Index : Positive) return Wide_Character
+ renames Super_Element;
+
+ procedure Replace_Element
+ (Source : in out Bounded_Wide_String;
+ Index : Positive;
+ By : Wide_Character)
+ renames Super_Replace_Element;
+
+ function Slice
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural) return Wide_String
+ renames Super_Slice;
+
+ function Bounded_Slice
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural) return Bounded_Wide_String
+ renames Super_Slice;
+
+ procedure Bounded_Slice
+ (Source : Bounded_Wide_String;
+ Target : out Bounded_Wide_String;
+ Low : Positive;
+ High : Natural)
+ renames Super_Slice;
+
+ function "="
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Equal;
+
+ function "="
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean
+ renames Equal;
+
+ function "="
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Equal;
+
+ function "<"
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Less;
+
+ function "<"
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean
+ renames Less;
+
+ function "<"
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Less;
+
+ function "<="
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Less_Or_Equal;
+
+ function "<="
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean
+ renames Less_Or_Equal;
+
+ function "<="
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Less_Or_Equal;
+
+ function ">"
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Greater;
+
+ function ">"
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean
+ renames Greater;
+
+ function ">"
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Greater;
+
+ function ">="
+ (Left : Bounded_Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Greater_Or_Equal;
+
+ function ">="
+ (Left : Bounded_Wide_String;
+ Right : Wide_String) return Boolean
+ renames Greater_Or_Equal;
+
+ function ">="
+ (Left : Wide_String;
+ Right : Bounded_Wide_String) return Boolean
+ renames Greater_Or_Equal;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural
+ renames Super_Index;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
+ renames Super_Index;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ Test : Membership := Inside;
+ Going : Direction := Forward) return Natural
+ renames Super_Index;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ From : Positive;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural
+ renames Super_Index;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ From : Positive;
+ Going : Direction := Forward;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
+ renames Super_Index;
+
+ function Index
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ From : Positive;
+ Test : Membership := Inside;
+ Going : Direction := Forward) return Natural
+ renames Super_Index;
+
+ function Index_Non_Blank
+ (Source : Bounded_Wide_String;
+ Going : Direction := Forward) return Natural
+ renames Super_Index_Non_Blank;
+
+ function Index_Non_Blank
+ (Source : Bounded_Wide_String;
+ From : Positive;
+ Going : Direction := Forward) return Natural
+ renames Super_Index_Non_Blank;
+
+ function Count
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping := Wide_Maps.Identity)
+ return Natural
+ renames Super_Count;
+
+ function Count
+ (Source : Bounded_Wide_String;
+ Pattern : Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function) return Natural
+ renames Super_Count;
+
+ function Count
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set) return Natural
+ renames Super_Count;
+
+ procedure Find_Token
+ (Source : Bounded_Wide_String;
+ Set : Wide_Maps.Wide_Character_Set;
+ Test : Membership;
+ First : out Positive;
+ Last : out Natural)
+ renames Super_Find_Token;
+
+ function Translate
+ (Source : Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping)
+ return Bounded_Wide_String
+ renames Super_Translate;
+
+ procedure Translate
+ (Source : in out Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping)
+ renames Super_Translate;
+
+ function Translate
+ (Source : Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function)
+ return Bounded_Wide_String
+ renames Super_Translate;
+
+ procedure Translate
+ (Source : in out Bounded_Wide_String;
+ Mapping : Wide_Maps.Wide_Character_Mapping_Function)
+ renames Super_Translate;
+
+ function Replace_Slice
+ (Source : Bounded_Wide_String;
+ Low : Positive;
+ High : Natural;
+ By : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Replace_Slice;
+
+ procedure Replace_Slice
+ (Source : in out Bounded_Wide_String;
+ Low : Positive;
+ High : Natural;
+ By : Wide_String;
+ Drop : Truncation := Error)
+ renames Super_Replace_Slice;
+
+ function Insert
+ (Source : Bounded_Wide_String;
+ Before : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Insert;
+
+ procedure Insert
+ (Source : in out Bounded_Wide_String;
+ Before : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error)
+ renames Super_Insert;
+
+ function Overwrite
+ (Source : Bounded_Wide_String;
+ Position : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Overwrite;
+
+ procedure Overwrite
+ (Source : in out Bounded_Wide_String;
+ Position : Positive;
+ New_Item : Wide_String;
+ Drop : Truncation := Error)
+ renames Super_Overwrite;
+
+ function Delete
+ (Source : Bounded_Wide_String;
+ From : Positive;
+ Through : Natural) return Bounded_Wide_String
+ renames Super_Delete;
+
+ procedure Delete
+ (Source : in out Bounded_Wide_String;
+ From : Positive;
+ Through : Natural)
+ renames Super_Delete;
+
+ function Trim
+ (Source : Bounded_Wide_String;
+ Side : Trim_End) return Bounded_Wide_String
+ renames Super_Trim;
+
+ procedure Trim
+ (Source : in out Bounded_Wide_String;
+ Side : Trim_End)
+ renames Super_Trim;
+
+ function Trim
+ (Source : Bounded_Wide_String;
+ Left : Wide_Maps.Wide_Character_Set;
+ Right : Wide_Maps.Wide_Character_Set) return Bounded_Wide_String
+ renames Super_Trim;
+
+ procedure Trim
+ (Source : in out Bounded_Wide_String;
+ Left : Wide_Maps.Wide_Character_Set;
+ Right : Wide_Maps.Wide_Character_Set)
+ renames Super_Trim;
+
+ function Head
+ (Source : Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Head;
+
+ procedure Head
+ (Source : in out Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error)
+ renames Super_Head;
+
+ function Tail
+ (Source : Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Tail;
+
+ procedure Tail
+ (Source : in out Bounded_Wide_String;
+ Count : Natural;
+ Pad : Wide_Character := Wide_Space;
+ Drop : Truncation := Error)
+ renames Super_Tail;
+
+ function "*"
+ (Left : Natural;
+ Right : Bounded_Wide_String) return Bounded_Wide_String
+ renames Times;
+
+ function Replicate
+ (Count : Natural;
+ Item : Bounded_Wide_String;
+ Drop : Truncation := Error) return Bounded_Wide_String
+ renames Super_Replicate;
end Generic_Bounded_Length;