跳转到内容

Ada 编程/库/Ada.Strings.Wide_Bounded

来自维基教科书,自由的教科书

Ada. Time-tested, safe and secure.
Ada. 经得起时间考验,安全可靠。

此语言特性从 Ada 95 开始可用。

Ada.Strings.Wide_Bounded 是自 Ada 95 以来 预定义语言环境 的一个单元。

--                     Standard Ada library specification
--   Copyright (c) 2003-2018 Maxim Reznik <[email protected]>
--   Copyright (c) 2004-2016 AXE Consultants
--   Copyright (c) 2004, 2005, 2006 Ada-Europe
--   Copyright (c) 2000 The MITRE Corporation, Inc.
--   Copyright (c) 1992, 1993, 1994, 1995 Intermetrics, Inc.
--   SPDX-License-Identifier: BSD-3-Clause and LicenseRef-AdaReferenceManual
-- -------------------------------------------------------------------------

with Ada.Strings.Wide_Maps;

package Ada.Strings.Wide_Bounded is
   pragma Preelaborate (Wide_Bounded);

   generic
      Max   : Positive;    --  Maximum length of a Bounded_Wide_String
   package Generic_Bounded_Length is

      Max_Length : constant Positive := Max;

      type Bounded_Wide_String is private;

      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;

      --  Conversion, Concatenation, and Selection functions

      function To_Bounded_Wide_String (Source : in Wide_String;
                                       Drop   : in Truncation := Error)
                                      return Bounded_Wide_String;

      function To_Wide_String (Source : in Bounded_Wide_String)
                              return Wide_String;

      procedure Set_Bounded_Wide_String
        (Target :    out Bounded_Wide_String;
         Source : in     Wide_String;
         Drop   : in     Truncation := Error);

      function Append (Left, Right : in Bounded_Wide_String;
                       Drop        : in 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;

      function Append (Left  : in Wide_String;
                       Right : in Bounded_Wide_String;
                       Drop  : in 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;

      function Append (Left  : in Wide_Character;
                       Right : in Bounded_Wide_String;
                       Drop  : in Truncation := Error)
                      return Bounded_Wide_String;

      procedure Append (Source   : in out Bounded_Wide_String;
                        New_Item : in Bounded_Wide_String;
                        Drop     : in Truncation  := Error);

      procedure Append (Source   : in out Bounded_Wide_String;
                        New_Item : in Wide_String;
                        Drop     : in Truncation  := Error);

      procedure Append (Source   : in out Bounded_Wide_String;
                        New_Item : in Wide_Character;
                        Drop     : in Truncation  := Error);

      function "&" (Left, Right : in Bounded_Wide_String)
                   return Bounded_Wide_String;

      function "&" (Left : in Bounded_Wide_String; Right : in Wide_String)
                   return Bounded_Wide_String;

      function "&" (Left : in Wide_String; Right : in Bounded_Wide_String)
                   return Bounded_Wide_String;

      function "&" (Left : in Bounded_Wide_String; Right : in Wide_Character)
                   return Bounded_Wide_String;

      function "&" (Left : in Wide_Character; Right : in Bounded_Wide_String)
                   return Bounded_Wide_String;

      function Element (Source : in Bounded_Wide_String;
                        Index  : in Positive)
                       return Wide_Character;

      procedure Replace_Element (Source : in out Bounded_Wide_String;
                                 Index  : in Positive;
                                 By     : in Wide_Character);

      function Slice (Source : in Bounded_Wide_String;
                      Low    : in Positive;
                      High   : in Natural)
                     return Wide_String;

      function Bounded_Slice
        (Source : in Bounded_Wide_String;
         Low    : in Positive;
         High   : in Natural)
        return Bounded_Wide_String;

      procedure Bounded_Slice
        (Source : in     Bounded_Wide_String;
         Target :    out Bounded_Wide_String;
         Low    : in     Positive;
         High   : in     Natural);

      function "="  (Left, Right : in Bounded_Wide_String) return Boolean;
      function "="  (Left : in Bounded_Wide_String; Right : in Wide_String)
                    return Boolean;

      function "="  (Left : in Wide_String; Right : in Bounded_Wide_String)
                    return Boolean;

      function "<"  (Left, Right : in Bounded_Wide_String) return Boolean;

      function "<"  (Left : in Bounded_Wide_String; Right : in Wide_String)
                    return Boolean;

      function "<"  (Left : in Wide_String; Right : in Bounded_Wide_String)
                    return Boolean;

      function "<=" (Left, Right : in Bounded_Wide_String) return Boolean;

      function "<="  (Left : in Bounded_Wide_String; Right : in Wide_String)
                     return Boolean;

      function "<="  (Left : in Wide_String; Right : in Bounded_Wide_String)
                     return Boolean;

      function ">"  (Left, Right : in Bounded_Wide_String) return Boolean;

      function ">"  (Left : in Bounded_Wide_String; Right : in Wide_String)
                    return Boolean;

      function ">"  (Left : in Wide_String; Right : in Bounded_Wide_String)
                    return Boolean;

      function ">=" (Left, Right : in Bounded_Wide_String) return Boolean;

      function ">="  (Left : in Bounded_Wide_String; Right : in Wide_String)
                     return Boolean;

      function ">="  (Left : in Wide_String; Right : in Bounded_Wide_String)
                     return Boolean;

      --  Search subprograms

      function Index (Source  : in Bounded_Wide_String;
                      Pattern : in Wide_String;
                      From    : in Positive;
                      Going   : in Direction := Forward;
                      Mapping : in Wide_Maps.Wide_Character_Mapping
                        := Wide_Maps.Identity)
                     return Natural;

      function Index (Source  : in Bounded_Wide_String;
                      Pattern : in Wide_String;
                      From    : in Positive;
                      Going   : in Direction := Forward;
                      Mapping : in 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
                        := Wide_Maps.Identity)
                     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;

      function Index (Source  : in Bounded_Wide_String;
                      Set     : in Wide_Maps.Wide_Character_Set;
                      From    : in Positive;
                      Test    : in Membership := Inside;
                      Going   : in 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;

      function Index_Non_Blank (Source : in Bounded_Wide_String;
                                From   : in Positive;
                                Going  : in Direction := Forward)
                               return Natural;

      function Index_Non_Blank (Source : in Bounded_Wide_String;
                                Going  : in Direction := Forward)
                               return Natural;

      function Count (Source   : in Bounded_Wide_String;
                      Pattern  : in Wide_String;
                      Mapping  : in 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;

      function Count (Source   : in Bounded_Wide_String;
                      Set      : in 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;
                            First  : out Positive;
                            Last   : out Natural);

      --  Wide_String translation subprograms

      function Translate (Source  : in Bounded_Wide_String;
                          Mapping : in Wide_Maps.Wide_Character_Mapping)
                         return Bounded_Wide_String;

      procedure Translate (Source  : in out Bounded_Wide_String;
                           Mapping : in Wide_Maps.Wide_Character_Mapping);

      function Translate
        (Source  : in Bounded_Wide_String;
         Mapping : in 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);

      --  Wide_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;

      procedure Replace_Slice (Source   : in out Bounded_Wide_String;
                               Low      : in Positive;
                               High     : in Natural;
                               By       : in Wide_String;
                               Drop     : in 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;

      procedure Insert (Source   : in out Bounded_Wide_String;
                        Before   : in Positive;
                        New_Item : in Wide_String;
                        Drop     : in 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;

      procedure Overwrite (Source    : in out Bounded_Wide_String;
                           Position  : in Positive;
                           New_Item  : in Wide_String;
                           Drop      : in Truncation := Error);

      function Delete (Source  : in Bounded_Wide_String;
                       From    : in Positive;
                       Through : in Natural)
                      return Bounded_Wide_String;

      procedure Delete (Source  : in out Bounded_Wide_String;
                        From    : in Positive;
                        Through : in Natural);

      -- Wide_String selector subprograms

      function Trim (Source : in Bounded_Wide_String;
                     Side   : in Trim_End)
                    return Bounded_Wide_String;

      procedure Trim (Source : in out Bounded_Wide_String;
                      Side   : in 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;

      procedure Trim (Source : in out Bounded_Wide_String;
                      Left   : in Wide_Maps.Wide_Character_Set;
                      Right  : in 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;

      procedure Head (Source : in out Bounded_Wide_String;
                      Count  : in Natural;
                      Pad    : in Wide_Character  := Wide_Space;
                      Drop   : in 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;

      procedure Tail (Source : in out Bounded_Wide_String;
                      Count  : in Natural;
                      Pad    : in Wide_Character  := Wide_Space;
                      Drop   : in Truncation := Error);

      -- Wide_String constructor subprograms

      function "*" (Left  : in Natural;
                    Right : in Wide_Character)
                   return Bounded_Wide_String;

      function "*" (Left  : in Natural;
                    Right : in Wide_String)
                   return Bounded_Wide_String;

      function "*" (Left  : in Natural;
                    Right : in Bounded_Wide_String)
                   return Bounded_Wide_String;

      function Replicate (Count : in Natural;
                          Item  : in Wide_Character;
                          Drop  : in Truncation := Error)
                         return Bounded_Wide_String;

      function Replicate (Count : in Natural;
                          Item  : in Wide_String;
                          Drop  : in Truncation := Error)
                         return Bounded_Wide_String;

      function Replicate (Count : in Natural;
                          Item  : in Bounded_Wide_String;
                          Drop  : in Truncation := Error)
                         return Bounded_Wide_String;

   private

      type Bounded_Wide_String is null record;
      Null_Bounded_Wide_String : constant Bounded_Wide_String := (null record);

   end Generic_Bounded_Length;

end Ada.Strings.Wide_Bounded;



维基教科书

[编辑 | 编辑源代码]

外部示例

[编辑源代码]

Ada 参考手册

[编辑 | 编辑源代码]

开源实现

[编辑 | 编辑源代码]

FSF GNAT

drake

华夏公益教科书