diff gcc/ada/libgnat/a-stzbou.ads @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/ada/libgnat/a-stzbou.ads	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,937 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT RUN-TIME COMPONENTS                         --
+--                                                                          --
+--        A D A . S T R I N G S . W I D E _ W I D E _ B O U N D E D         --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 1992-2017, 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 --
+-- apply solely to the  contents of the part following the private keyword. --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Strings.Wide_Wide_Maps;
+with Ada.Strings.Wide_Wide_Superbounded;
+
+package Ada.Strings.Wide_Wide_Bounded is
+   pragma Preelaborate;
+
+   generic
+      Max : Positive;
+      --  Maximum length of a Bounded_Wide_Wide_String
+
+   package Generic_Bounded_Length is
+
+      Max_Length : constant Positive := Max;
+
+      type Bounded_Wide_Wide_String is private;
+      pragma Preelaborable_Initialization (Bounded_Wide_Wide_String);
+
+      Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String;
+
+      subtype Length_Range is Natural range 0 .. Max_Length;
+
+      function Length (Source : Bounded_Wide_Wide_String) return Length_Range;
+
+      --------------------------------------------------------
+      -- Conversion, Concatenation, and Selection Functions --
+      --------------------------------------------------------
+
+      function To_Bounded_Wide_Wide_String
+        (Source : Wide_Wide_String;
+         Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function To_Wide_Wide_String
+        (Source : Bounded_Wide_Wide_String) return Wide_Wide_String;
+
+      procedure Set_Bounded_Wide_Wide_String
+        (Target : out Bounded_Wide_Wide_String;
+         Source : Wide_Wide_String;
+         Drop   : Truncation := Error);
+      pragma Ada_05 (Set_Bounded_Wide_Wide_String);
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation  := Error) return Bounded_Wide_Wide_String;
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function Append
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_Character;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function Append
+        (Left  : Wide_Wide_Character;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Bounded_Wide_Wide_String;
+         Drop     : Truncation  := Error);
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation  := Error);
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Wide_Wide_Character;
+         Drop     : Truncation  := Error);
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function "&"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_Character) return Bounded_Wide_Wide_String;
+
+      function "&"
+        (Left  : Wide_Wide_Character;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function Element
+        (Source : Bounded_Wide_Wide_String;
+         Index  : Positive) return Wide_Wide_Character;
+
+      procedure Replace_Element
+        (Source : in out Bounded_Wide_Wide_String;
+         Index  : Positive;
+         By     : Wide_Wide_Character);
+
+      function Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural) return Wide_Wide_String;
+
+      function Bounded_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural) return Bounded_Wide_Wide_String;
+      pragma Ada_05 (Bounded_Slice);
+
+      procedure Bounded_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Target : out Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural);
+      pragma Ada_05 (Bounded_Slice);
+
+      function "="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function "="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean;
+
+      function "="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function "<"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function "<"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean;
+
+      function "<"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function "<="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function "<="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean;
+
+      function "<="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function ">"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function ">"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean;
+
+      function ">"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function ">="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      function ">="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean;
+
+      function ">="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean;
+
+      ----------------------
+      -- Search Functions --
+      ----------------------
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural;
+
+      function Index
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Test   : Membership := Inside;
+         Going  : Direction  := Forward) return Natural;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         From    : Positive;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural;
+      pragma Ada_05 (Index);
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         From    : Positive;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural;
+      pragma Ada_05 (Index);
+
+      function Index
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         From   : Positive;
+         Test   : Membership := Inside;
+         Going  : Direction := Forward) return Natural;
+      pragma Ada_05 (Index);
+
+      function Index_Non_Blank
+        (Source : Bounded_Wide_Wide_String;
+         Going  : Direction := Forward) return Natural;
+
+      function Index_Non_Blank
+        (Source : Bounded_Wide_Wide_String;
+         From   : Positive;
+         Going  : Direction := Forward) return Natural;
+      pragma Ada_05 (Index_Non_Blank);
+
+      function Count
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural;
+
+      function Count
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural;
+
+      function Count
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural;
+
+      procedure Find_Token
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         From   : Positive;
+         Test   : Membership;
+         First  : out Positive;
+         Last   : out Natural);
+      pragma Ada_2012 (Find_Token);
+
+      procedure Find_Token
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Test   : Membership;
+         First  : out Positive;
+         Last   : out Natural);
+
+      ------------------------------------
+      -- String Translation Subprograms --
+      ------------------------------------
+
+      function Translate
+        (Source  : Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
+         return Bounded_Wide_Wide_String;
+
+      procedure Translate
+        (Source  : in out Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping);
+
+      function Translate
+        (Source  : Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Bounded_Wide_Wide_String;
+
+      procedure Translate
+        (Source  : in out Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function);
+
+      ---------------------------------------
+      -- String Transformation Subprograms --
+      ---------------------------------------
+
+      function Replace_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural;
+         By     : Wide_Wide_String;
+         Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      procedure Replace_Slice
+        (Source   : in out Bounded_Wide_Wide_String;
+         Low      : Positive;
+         High     : Natural;
+         By       : Wide_Wide_String;
+         Drop     : Truncation := Error);
+
+      function Insert
+        (Source   : Bounded_Wide_Wide_String;
+         Before   : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      procedure Insert
+        (Source   : in out Bounded_Wide_Wide_String;
+         Before   : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error);
+
+      function Overwrite
+        (Source   : Bounded_Wide_Wide_String;
+         Position : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      procedure Overwrite
+        (Source    : in out Bounded_Wide_Wide_String;
+         Position  : Positive;
+         New_Item  : Wide_Wide_String;
+         Drop      : Truncation := Error);
+
+      function Delete
+        (Source  : Bounded_Wide_Wide_String;
+         From    : Positive;
+         Through : Natural) return Bounded_Wide_Wide_String;
+
+      procedure Delete
+        (Source  : in out Bounded_Wide_Wide_String;
+         From    : Positive;
+         Through : Natural);
+
+      ---------------------------------
+      -- String Selector Subprograms --
+      ---------------------------------
+
+      function Trim
+        (Source : Bounded_Wide_Wide_String;
+         Side   : Trim_End) return Bounded_Wide_Wide_String;
+
+      procedure Trim
+        (Source : in out Bounded_Wide_Wide_String;
+         Side   : Trim_End);
+
+      function Trim
+        (Source : Bounded_Wide_Wide_String;
+          Left  : Wide_Wide_Maps.Wide_Wide_Character_Set;
+          Right : Wide_Wide_Maps.Wide_Wide_Character_Set)
+          return Bounded_Wide_Wide_String;
+
+      procedure Trim
+        (Source : in out Bounded_Wide_Wide_String;
+         Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Right  : Wide_Wide_Maps.Wide_Wide_Character_Set);
+
+      function Head
+        (Source : Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      procedure Head
+        (Source : in out Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character  := Wide_Wide_Space;
+         Drop   : Truncation := Error);
+
+      function Tail
+        (Source : Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation     := Error) return Bounded_Wide_Wide_String;
+
+      procedure Tail
+        (Source : in out Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation     := Error);
+
+      ------------------------------------
+      -- String Constructor Subprograms --
+      ------------------------------------
+
+      function "*"
+        (Left  : Natural;
+         Right : Wide_Wide_Character) return Bounded_Wide_Wide_String;
+
+      function "*"
+        (Left  : Natural;
+         Right : Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function "*"
+        (Left  : Natural;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String;
+
+      function Replicate
+        (Count : Natural;
+         Item  : Wide_Wide_Character;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function Replicate
+        (Count : Natural;
+         Item  : Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+      function Replicate
+        (Count : Natural;
+         Item  : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String;
+
+   private
+      --  Most of the implementation is in the separate non generic package
+      --  Ada.Strings.Wide_Wide_Superbounded. Type Bounded_Wide_Wide_String is
+      --  derived from type Wide_Wide_Superbounded.Super_String with the
+      --  maximum length constraint. In almost all cases, the routines in
+      --  Wide_Wide_Superbounded can be called with no requirement to pass the
+      --  maximum length explicitly, since there is at least one
+      --  Bounded_Wide_Wide_String argument from which the maximum length can
+      --  be obtained. For all such routines, the implementation in this
+      --  private part is simply 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_Wide_String is
+        new Wide_Wide_Superbounded.Super_String (Max_Length);
+      --  Deriving Bounded_Wide_Wide_String from
+      --  Wide_Wide_Superbounded.Super_String is the real trick, it ensures
+      --  that the type Bounded_Wide_Wide_String declared in the generic
+      --  instantiation is compatible with the Super_String type declared in
+      --  the Wide_Wide_Superbounded package.
+
+      Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String :=
+                                   (Max_Length         => Max_Length,
+                                    Current_Length     => 0,
+                                    Data               =>
+                                      (1 .. Max_Length =>
+                                        Wide_Wide_Superbounded.Wide_Wide_NUL));
+
+      pragma Inline (To_Bounded_Wide_Wide_String);
+
+      procedure Set_Bounded_Wide_Wide_String
+        (Target : out Bounded_Wide_Wide_String;
+         Source : Wide_Wide_String;
+         Drop   : Truncation := Error)
+         renames Set_Super_String;
+
+      function Length
+        (Source : Bounded_Wide_Wide_String) return Length_Range
+         renames Super_Length;
+
+      function To_Wide_Wide_String
+        (Source : Bounded_Wide_Wide_String) return Wide_Wide_String
+         renames Super_To_String;
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation  := Error) return Bounded_Wide_Wide_String
+         renames Super_Append;
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Append;
+
+      function Append
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Append;
+
+      function Append
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_Character;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Append;
+
+      function Append
+        (Left  : Wide_Wide_Character;
+         Right : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Append;
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Bounded_Wide_Wide_String;
+         Drop     : Truncation  := Error)
+         renames Super_Append;
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation  := Error)
+         renames Super_Append;
+
+      procedure Append
+        (Source   : in out Bounded_Wide_Wide_String;
+         New_Item : Wide_Wide_Character;
+         Drop     : Truncation  := Error)
+         renames Super_Append;
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
+         renames Concat;
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Bounded_Wide_Wide_String
+         renames Concat;
+
+      function "&"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
+         renames Concat;
+
+      function "&"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_Character) return Bounded_Wide_Wide_String
+         renames Concat;
+
+      function "&"
+        (Left  : Wide_Wide_Character;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
+         renames Concat;
+
+      function Element
+        (Source : Bounded_Wide_Wide_String;
+         Index  : Positive) return Wide_Wide_Character
+         renames Super_Element;
+
+      procedure Replace_Element
+        (Source : in out Bounded_Wide_Wide_String;
+         Index  : Positive;
+         By     : Wide_Wide_Character)
+         renames Super_Replace_Element;
+
+      function Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural) return Wide_Wide_String
+         renames Super_Slice;
+
+      function Bounded_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural) return Bounded_Wide_Wide_String
+         renames Super_Slice;
+
+      procedure Bounded_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Target : out Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural)
+         renames Super_Slice;
+
+      overriding function "="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Equal;
+
+      function "="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean
+         renames Equal;
+
+      function "="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Equal;
+
+      function "<"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Less;
+
+      function "<"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean
+         renames Less;
+
+      function "<"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Less;
+
+      function "<="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Less_Or_Equal;
+
+      function "<="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean
+         renames Less_Or_Equal;
+
+      function "<="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Less_Or_Equal;
+
+      function ">"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Greater;
+
+      function ">"
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean
+         renames Greater;
+
+      function ">"
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Greater;
+
+      function ">="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Greater_Or_Equal;
+
+      function ">="
+        (Left  : Bounded_Wide_Wide_String;
+         Right : Wide_Wide_String) return Boolean
+         renames Greater_Or_Equal;
+
+      function ">="
+        (Left  : Wide_Wide_String;
+         Right : Bounded_Wide_Wide_String) return Boolean
+         renames Greater_Or_Equal;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural
+         renames Super_Index;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural
+         renames Super_Index;
+
+      function Index
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Test   : Membership := Inside;
+         Going  : Direction  := Forward) return Natural
+         renames Super_Index;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         From    : Positive;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural
+         renames Super_Index;
+
+      function Index
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         From    : Positive;
+         Going   : Direction := Forward;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural
+      renames Super_Index;
+
+      function Index
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         From   : Positive;
+         Test   : Membership := Inside;
+         Going  : Direction := Forward) return Natural
+      renames Super_Index;
+
+      function Index_Non_Blank
+        (Source : Bounded_Wide_Wide_String;
+         Going  : Direction := Forward) return Natural
+         renames Super_Index_Non_Blank;
+
+      function Index_Non_Blank
+        (Source : Bounded_Wide_Wide_String;
+         From   : Positive;
+         Going  : Direction := Forward) return Natural
+         renames Super_Index_Non_Blank;
+
+      function Count
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping :=
+                     Wide_Wide_Maps.Identity)
+         return Natural
+         renames Super_Count;
+
+      function Count
+        (Source  : Bounded_Wide_Wide_String;
+         Pattern : Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Natural
+         renames Super_Count;
+
+      function Count
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural
+         renames Super_Count;
+
+      procedure Find_Token
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         From   : Positive;
+         Test   : Membership;
+         First  : out Positive;
+         Last   : out Natural)
+         renames Super_Find_Token;
+
+      procedure Find_Token
+        (Source : Bounded_Wide_Wide_String;
+         Set    : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Test   : Membership;
+         First  : out Positive;
+         Last   : out Natural)
+         renames Super_Find_Token;
+
+      function Translate
+        (Source  : Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
+         return Bounded_Wide_Wide_String
+         renames Super_Translate;
+
+      procedure Translate
+        (Source   : in out Bounded_Wide_Wide_String;
+         Mapping  : Wide_Wide_Maps.Wide_Wide_Character_Mapping)
+         renames Super_Translate;
+
+      function Translate
+        (Source  : Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         return Bounded_Wide_Wide_String
+         renames Super_Translate;
+
+      procedure Translate
+        (Source  : in out Bounded_Wide_Wide_String;
+         Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function)
+         renames Super_Translate;
+
+      function Replace_Slice
+        (Source : Bounded_Wide_Wide_String;
+         Low    : Positive;
+         High   : Natural;
+         By     : Wide_Wide_String;
+         Drop   : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Replace_Slice;
+
+      procedure Replace_Slice
+        (Source   : in out Bounded_Wide_Wide_String;
+         Low      : Positive;
+         High     : Natural;
+         By       : Wide_Wide_String;
+         Drop     : Truncation := Error)
+         renames Super_Replace_Slice;
+
+      function Insert
+        (Source   : Bounded_Wide_Wide_String;
+         Before   : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Insert;
+
+      procedure Insert
+        (Source   : in out Bounded_Wide_Wide_String;
+         Before   : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error)
+         renames Super_Insert;
+
+      function Overwrite
+        (Source   : Bounded_Wide_Wide_String;
+         Position : Positive;
+         New_Item : Wide_Wide_String;
+         Drop     : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Overwrite;
+
+      procedure Overwrite
+        (Source    : in out Bounded_Wide_Wide_String;
+         Position  : Positive;
+         New_Item  : Wide_Wide_String;
+         Drop      : Truncation := Error)
+         renames Super_Overwrite;
+
+      function Delete
+        (Source  : Bounded_Wide_Wide_String;
+         From    : Positive;
+         Through : Natural) return Bounded_Wide_Wide_String
+         renames Super_Delete;
+
+      procedure Delete
+        (Source  : in out Bounded_Wide_Wide_String;
+         From    : Positive;
+         Through : Natural)
+         renames Super_Delete;
+
+      function Trim
+        (Source : Bounded_Wide_Wide_String;
+         Side   : Trim_End) return Bounded_Wide_Wide_String
+         renames Super_Trim;
+
+      procedure Trim
+        (Source : in out Bounded_Wide_Wide_String;
+         Side   : Trim_End)
+         renames Super_Trim;
+
+      function Trim
+        (Source : Bounded_Wide_Wide_String;
+         Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
+         return Bounded_Wide_Wide_String
+         renames Super_Trim;
+
+      procedure Trim
+        (Source : in out Bounded_Wide_Wide_String;
+         Left   : Wide_Wide_Maps.Wide_Wide_Character_Set;
+         Right  : Wide_Wide_Maps.Wide_Wide_Character_Set)
+         renames Super_Trim;
+
+      function Head
+        (Source : Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
+         renames Super_Head;
+
+      procedure Head
+        (Source : in out Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation     := Error)
+         renames Super_Head;
+
+      function Tail
+        (Source : Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation     := Error) return Bounded_Wide_Wide_String
+         renames Super_Tail;
+
+      procedure Tail
+        (Source : in out Bounded_Wide_Wide_String;
+         Count  : Natural;
+         Pad    : Wide_Wide_Character := Wide_Wide_Space;
+         Drop   : Truncation := Error)
+         renames Super_Tail;
+
+      function "*"
+        (Left  : Natural;
+         Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String
+         renames Times;
+
+      function Replicate
+        (Count : Natural;
+         Item  : Bounded_Wide_Wide_String;
+         Drop  : Truncation := Error) return Bounded_Wide_Wide_String
+         renames Super_Replicate;
+
+   end Generic_Bounded_Length;
+
+end Ada.Strings.Wide_Wide_Bounded;