1------------------------------------------------------------------------------ 2-- -- 3-- GNAT RUN-TIME COMPONENTS -- 4-- -- 5-- 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 -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- 10-- -- 11-- This specification is derived from the Ada Reference Manual for use with -- 12-- GNAT. The copyright notice above, and the license provisions that follow -- 13-- apply solely to the contents of the part following the private keyword. -- 14-- -- 15-- GNAT is free software; you can redistribute it and/or modify it under -- 16-- terms of the GNU General Public License as published by the Free Soft- -- 17-- ware Foundation; either version 3, or (at your option) any later ver- -- 18-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 19-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 20-- or FITNESS FOR A PARTICULAR PURPOSE. -- 21-- -- 22-- As a special exception under Section 7 of GPL version 3, you are granted -- 23-- additional permissions described in the GCC Runtime Library Exception, -- 24-- version 3.1, as published by the Free Software Foundation. -- 25-- -- 26-- You should have received a copy of the GNU General Public License and -- 27-- a copy of the GCC Runtime Library Exception along with this program; -- 28-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 29-- <http://www.gnu.org/licenses/>. -- 30-- -- 31-- GNAT was originally developed by the GNAT team at New York University. -- 32-- Extensive contributions were provided by Ada Core Technologies Inc. -- 33-- -- 34------------------------------------------------------------------------------ 35 36with Ada.Strings.Wide_Wide_Maps; 37with Ada.Strings.Wide_Wide_Superbounded; 38 39package Ada.Strings.Wide_Wide_Bounded is 40 pragma Preelaborate; 41 42 generic 43 Max : Positive; 44 -- Maximum length of a Bounded_Wide_Wide_String 45 46 package Generic_Bounded_Length is 47 48 Max_Length : constant Positive := Max; 49 50 type Bounded_Wide_Wide_String is private; 51 pragma Preelaborable_Initialization (Bounded_Wide_Wide_String); 52 53 Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String; 54 55 subtype Length_Range is Natural range 0 .. Max_Length; 56 57 function Length (Source : Bounded_Wide_Wide_String) return Length_Range; 58 59 -------------------------------------------------------- 60 -- Conversion, Concatenation, and Selection Functions -- 61 -------------------------------------------------------- 62 63 function To_Bounded_Wide_Wide_String 64 (Source : Wide_Wide_String; 65 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 66 67 function To_Wide_Wide_String 68 (Source : Bounded_Wide_Wide_String) return Wide_Wide_String; 69 70 procedure Set_Bounded_Wide_Wide_String 71 (Target : out Bounded_Wide_Wide_String; 72 Source : Wide_Wide_String; 73 Drop : Truncation := Error); 74 pragma Ada_05 (Set_Bounded_Wide_Wide_String); 75 76 function Append 77 (Left : Bounded_Wide_Wide_String; 78 Right : Bounded_Wide_Wide_String; 79 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 80 81 function Append 82 (Left : Bounded_Wide_Wide_String; 83 Right : Wide_Wide_String; 84 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 85 86 function Append 87 (Left : Wide_Wide_String; 88 Right : Bounded_Wide_Wide_String; 89 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 90 91 function Append 92 (Left : Bounded_Wide_Wide_String; 93 Right : Wide_Wide_Character; 94 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 95 96 function Append 97 (Left : Wide_Wide_Character; 98 Right : Bounded_Wide_Wide_String; 99 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 100 101 procedure Append 102 (Source : in out Bounded_Wide_Wide_String; 103 New_Item : Bounded_Wide_Wide_String; 104 Drop : Truncation := Error); 105 106 procedure Append 107 (Source : in out Bounded_Wide_Wide_String; 108 New_Item : Wide_Wide_String; 109 Drop : Truncation := Error); 110 111 procedure Append 112 (Source : in out Bounded_Wide_Wide_String; 113 New_Item : Wide_Wide_Character; 114 Drop : Truncation := Error); 115 116 function "&" 117 (Left : Bounded_Wide_Wide_String; 118 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String; 119 120 function "&" 121 (Left : Bounded_Wide_Wide_String; 122 Right : Wide_Wide_String) return Bounded_Wide_Wide_String; 123 124 function "&" 125 (Left : Wide_Wide_String; 126 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String; 127 128 function "&" 129 (Left : Bounded_Wide_Wide_String; 130 Right : Wide_Wide_Character) return Bounded_Wide_Wide_String; 131 132 function "&" 133 (Left : Wide_Wide_Character; 134 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String; 135 136 function Element 137 (Source : Bounded_Wide_Wide_String; 138 Index : Positive) return Wide_Wide_Character; 139 140 procedure Replace_Element 141 (Source : in out Bounded_Wide_Wide_String; 142 Index : Positive; 143 By : Wide_Wide_Character); 144 145 function Slice 146 (Source : Bounded_Wide_Wide_String; 147 Low : Positive; 148 High : Natural) return Wide_Wide_String; 149 150 function Bounded_Slice 151 (Source : Bounded_Wide_Wide_String; 152 Low : Positive; 153 High : Natural) return Bounded_Wide_Wide_String; 154 pragma Ada_05 (Bounded_Slice); 155 156 procedure Bounded_Slice 157 (Source : Bounded_Wide_Wide_String; 158 Target : out Bounded_Wide_Wide_String; 159 Low : Positive; 160 High : Natural); 161 pragma Ada_05 (Bounded_Slice); 162 163 function "=" 164 (Left : Bounded_Wide_Wide_String; 165 Right : Bounded_Wide_Wide_String) return Boolean; 166 167 function "=" 168 (Left : Bounded_Wide_Wide_String; 169 Right : Wide_Wide_String) return Boolean; 170 171 function "=" 172 (Left : Wide_Wide_String; 173 Right : Bounded_Wide_Wide_String) return Boolean; 174 175 function "<" 176 (Left : Bounded_Wide_Wide_String; 177 Right : Bounded_Wide_Wide_String) return Boolean; 178 179 function "<" 180 (Left : Bounded_Wide_Wide_String; 181 Right : Wide_Wide_String) return Boolean; 182 183 function "<" 184 (Left : Wide_Wide_String; 185 Right : Bounded_Wide_Wide_String) return Boolean; 186 187 function "<=" 188 (Left : Bounded_Wide_Wide_String; 189 Right : Bounded_Wide_Wide_String) return Boolean; 190 191 function "<=" 192 (Left : Bounded_Wide_Wide_String; 193 Right : Wide_Wide_String) return Boolean; 194 195 function "<=" 196 (Left : Wide_Wide_String; 197 Right : Bounded_Wide_Wide_String) return Boolean; 198 199 function ">" 200 (Left : Bounded_Wide_Wide_String; 201 Right : Bounded_Wide_Wide_String) return Boolean; 202 203 function ">" 204 (Left : Bounded_Wide_Wide_String; 205 Right : Wide_Wide_String) return Boolean; 206 207 function ">" 208 (Left : Wide_Wide_String; 209 Right : Bounded_Wide_Wide_String) return Boolean; 210 211 function ">=" 212 (Left : Bounded_Wide_Wide_String; 213 Right : Bounded_Wide_Wide_String) return Boolean; 214 215 function ">=" 216 (Left : Bounded_Wide_Wide_String; 217 Right : Wide_Wide_String) return Boolean; 218 219 function ">=" 220 (Left : Wide_Wide_String; 221 Right : Bounded_Wide_Wide_String) return Boolean; 222 223 ---------------------- 224 -- Search Functions -- 225 ---------------------- 226 227 function Index 228 (Source : Bounded_Wide_Wide_String; 229 Pattern : Wide_Wide_String; 230 Going : Direction := Forward; 231 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 232 Wide_Wide_Maps.Identity) 233 return Natural; 234 235 function Index 236 (Source : Bounded_Wide_Wide_String; 237 Pattern : Wide_Wide_String; 238 Going : Direction := Forward; 239 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 240 return Natural; 241 242 function Index 243 (Source : Bounded_Wide_Wide_String; 244 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 245 Test : Membership := Inside; 246 Going : Direction := Forward) return Natural; 247 248 function Index 249 (Source : Bounded_Wide_Wide_String; 250 Pattern : Wide_Wide_String; 251 From : Positive; 252 Going : Direction := Forward; 253 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 254 Wide_Wide_Maps.Identity) 255 return Natural; 256 pragma Ada_05 (Index); 257 258 function Index 259 (Source : Bounded_Wide_Wide_String; 260 Pattern : Wide_Wide_String; 261 From : Positive; 262 Going : Direction := Forward; 263 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 264 return Natural; 265 pragma Ada_05 (Index); 266 267 function Index 268 (Source : Bounded_Wide_Wide_String; 269 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 270 From : Positive; 271 Test : Membership := Inside; 272 Going : Direction := Forward) return Natural; 273 pragma Ada_05 (Index); 274 275 function Index_Non_Blank 276 (Source : Bounded_Wide_Wide_String; 277 Going : Direction := Forward) return Natural; 278 279 function Index_Non_Blank 280 (Source : Bounded_Wide_Wide_String; 281 From : Positive; 282 Going : Direction := Forward) return Natural; 283 pragma Ada_05 (Index_Non_Blank); 284 285 function Count 286 (Source : Bounded_Wide_Wide_String; 287 Pattern : Wide_Wide_String; 288 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 289 Wide_Wide_Maps.Identity) 290 return Natural; 291 292 function Count 293 (Source : Bounded_Wide_Wide_String; 294 Pattern : Wide_Wide_String; 295 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 296 return Natural; 297 298 function Count 299 (Source : Bounded_Wide_Wide_String; 300 Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; 301 302 procedure Find_Token 303 (Source : Bounded_Wide_Wide_String; 304 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 305 From : Positive; 306 Test : Membership; 307 First : out Positive; 308 Last : out Natural); 309 pragma Ada_2012 (Find_Token); 310 311 procedure Find_Token 312 (Source : Bounded_Wide_Wide_String; 313 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 314 Test : Membership; 315 First : out Positive; 316 Last : out Natural); 317 318 ------------------------------------ 319 -- String Translation Subprograms -- 320 ------------------------------------ 321 322 function Translate 323 (Source : Bounded_Wide_Wide_String; 324 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping) 325 return Bounded_Wide_Wide_String; 326 327 procedure Translate 328 (Source : in out Bounded_Wide_Wide_String; 329 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping); 330 331 function Translate 332 (Source : Bounded_Wide_Wide_String; 333 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 334 return Bounded_Wide_Wide_String; 335 336 procedure Translate 337 (Source : in out Bounded_Wide_Wide_String; 338 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function); 339 340 --------------------------------------- 341 -- String Transformation Subprograms -- 342 --------------------------------------- 343 344 function Replace_Slice 345 (Source : Bounded_Wide_Wide_String; 346 Low : Positive; 347 High : Natural; 348 By : Wide_Wide_String; 349 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 350 351 procedure Replace_Slice 352 (Source : in out Bounded_Wide_Wide_String; 353 Low : Positive; 354 High : Natural; 355 By : Wide_Wide_String; 356 Drop : Truncation := Error); 357 358 function Insert 359 (Source : Bounded_Wide_Wide_String; 360 Before : Positive; 361 New_Item : Wide_Wide_String; 362 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 363 364 procedure Insert 365 (Source : in out Bounded_Wide_Wide_String; 366 Before : Positive; 367 New_Item : Wide_Wide_String; 368 Drop : Truncation := Error); 369 370 function Overwrite 371 (Source : Bounded_Wide_Wide_String; 372 Position : Positive; 373 New_Item : Wide_Wide_String; 374 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 375 376 procedure Overwrite 377 (Source : in out Bounded_Wide_Wide_String; 378 Position : Positive; 379 New_Item : Wide_Wide_String; 380 Drop : Truncation := Error); 381 382 function Delete 383 (Source : Bounded_Wide_Wide_String; 384 From : Positive; 385 Through : Natural) return Bounded_Wide_Wide_String; 386 387 procedure Delete 388 (Source : in out Bounded_Wide_Wide_String; 389 From : Positive; 390 Through : Natural); 391 392 --------------------------------- 393 -- String Selector Subprograms -- 394 --------------------------------- 395 396 function Trim 397 (Source : Bounded_Wide_Wide_String; 398 Side : Trim_End) return Bounded_Wide_Wide_String; 399 400 procedure Trim 401 (Source : in out Bounded_Wide_Wide_String; 402 Side : Trim_End); 403 404 function Trim 405 (Source : Bounded_Wide_Wide_String; 406 Left : Wide_Wide_Maps.Wide_Wide_Character_Set; 407 Right : Wide_Wide_Maps.Wide_Wide_Character_Set) 408 return Bounded_Wide_Wide_String; 409 410 procedure Trim 411 (Source : in out Bounded_Wide_Wide_String; 412 Left : Wide_Wide_Maps.Wide_Wide_Character_Set; 413 Right : Wide_Wide_Maps.Wide_Wide_Character_Set); 414 415 function Head 416 (Source : Bounded_Wide_Wide_String; 417 Count : Natural; 418 Pad : Wide_Wide_Character := Wide_Wide_Space; 419 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 420 421 procedure Head 422 (Source : in out Bounded_Wide_Wide_String; 423 Count : Natural; 424 Pad : Wide_Wide_Character := Wide_Wide_Space; 425 Drop : Truncation := Error); 426 427 function Tail 428 (Source : Bounded_Wide_Wide_String; 429 Count : Natural; 430 Pad : Wide_Wide_Character := Wide_Wide_Space; 431 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 432 433 procedure Tail 434 (Source : in out Bounded_Wide_Wide_String; 435 Count : Natural; 436 Pad : Wide_Wide_Character := Wide_Wide_Space; 437 Drop : Truncation := Error); 438 439 ------------------------------------ 440 -- String Constructor Subprograms -- 441 ------------------------------------ 442 443 function "*" 444 (Left : Natural; 445 Right : Wide_Wide_Character) return Bounded_Wide_Wide_String; 446 447 function "*" 448 (Left : Natural; 449 Right : Wide_Wide_String) return Bounded_Wide_Wide_String; 450 451 function "*" 452 (Left : Natural; 453 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String; 454 455 function Replicate 456 (Count : Natural; 457 Item : Wide_Wide_Character; 458 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 459 460 function Replicate 461 (Count : Natural; 462 Item : Wide_Wide_String; 463 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 464 465 function Replicate 466 (Count : Natural; 467 Item : Bounded_Wide_Wide_String; 468 Drop : Truncation := Error) return Bounded_Wide_Wide_String; 469 470 private 471 -- Most of the implementation is in the separate non generic package 472 -- Ada.Strings.Wide_Wide_Superbounded. Type Bounded_Wide_Wide_String is 473 -- derived from type Wide_Wide_Superbounded.Super_String with the 474 -- maximum length constraint. In almost all cases, the routines in 475 -- Wide_Wide_Superbounded can be called with no requirement to pass the 476 -- maximum length explicitly, since there is at least one 477 -- Bounded_Wide_Wide_String argument from which the maximum length can 478 -- be obtained. For all such routines, the implementation in this 479 -- private part is simply renaming of the corresponding routine in the 480 -- super bouded package. 481 482 -- The five exceptions are the * and Replicate routines operating on 483 -- character values. For these cases, we have a routine in the body 484 -- that calls the superbounded routine passing the maximum length 485 -- explicitly as an extra parameter. 486 487 type Bounded_Wide_Wide_String is 488 new Wide_Wide_Superbounded.Super_String (Max_Length); 489 -- Deriving Bounded_Wide_Wide_String from 490 -- Wide_Wide_Superbounded.Super_String is the real trick, it ensures 491 -- that the type Bounded_Wide_Wide_String declared in the generic 492 -- instantiation is compatible with the Super_String type declared in 493 -- the Wide_Wide_Superbounded package. 494 495 Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String := 496 (Max_Length => Max_Length, 497 Current_Length => 0, 498 Data => 499 (1 .. Max_Length => 500 Wide_Wide_Superbounded.Wide_Wide_NUL)); 501 502 pragma Inline (To_Bounded_Wide_Wide_String); 503 504 procedure Set_Bounded_Wide_Wide_String 505 (Target : out Bounded_Wide_Wide_String; 506 Source : Wide_Wide_String; 507 Drop : Truncation := Error) 508 renames Set_Super_String; 509 510 function Length 511 (Source : Bounded_Wide_Wide_String) return Length_Range 512 renames Super_Length; 513 514 function To_Wide_Wide_String 515 (Source : Bounded_Wide_Wide_String) return Wide_Wide_String 516 renames Super_To_String; 517 518 function Append 519 (Left : Bounded_Wide_Wide_String; 520 Right : Bounded_Wide_Wide_String; 521 Drop : Truncation := Error) return Bounded_Wide_Wide_String 522 renames Super_Append; 523 524 function Append 525 (Left : Bounded_Wide_Wide_String; 526 Right : Wide_Wide_String; 527 Drop : Truncation := Error) return Bounded_Wide_Wide_String 528 renames Super_Append; 529 530 function Append 531 (Left : Wide_Wide_String; 532 Right : Bounded_Wide_Wide_String; 533 Drop : Truncation := Error) return Bounded_Wide_Wide_String 534 renames Super_Append; 535 536 function Append 537 (Left : Bounded_Wide_Wide_String; 538 Right : Wide_Wide_Character; 539 Drop : Truncation := Error) return Bounded_Wide_Wide_String 540 renames Super_Append; 541 542 function Append 543 (Left : Wide_Wide_Character; 544 Right : Bounded_Wide_Wide_String; 545 Drop : Truncation := Error) return Bounded_Wide_Wide_String 546 renames Super_Append; 547 548 procedure Append 549 (Source : in out Bounded_Wide_Wide_String; 550 New_Item : Bounded_Wide_Wide_String; 551 Drop : Truncation := Error) 552 renames Super_Append; 553 554 procedure Append 555 (Source : in out Bounded_Wide_Wide_String; 556 New_Item : Wide_Wide_String; 557 Drop : Truncation := Error) 558 renames Super_Append; 559 560 procedure Append 561 (Source : in out Bounded_Wide_Wide_String; 562 New_Item : Wide_Wide_Character; 563 Drop : Truncation := Error) 564 renames Super_Append; 565 566 function "&" 567 (Left : Bounded_Wide_Wide_String; 568 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String 569 renames Concat; 570 571 function "&" 572 (Left : Bounded_Wide_Wide_String; 573 Right : Wide_Wide_String) return Bounded_Wide_Wide_String 574 renames Concat; 575 576 function "&" 577 (Left : Wide_Wide_String; 578 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String 579 renames Concat; 580 581 function "&" 582 (Left : Bounded_Wide_Wide_String; 583 Right : Wide_Wide_Character) return Bounded_Wide_Wide_String 584 renames Concat; 585 586 function "&" 587 (Left : Wide_Wide_Character; 588 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String 589 renames Concat; 590 591 function Element 592 (Source : Bounded_Wide_Wide_String; 593 Index : Positive) return Wide_Wide_Character 594 renames Super_Element; 595 596 procedure Replace_Element 597 (Source : in out Bounded_Wide_Wide_String; 598 Index : Positive; 599 By : Wide_Wide_Character) 600 renames Super_Replace_Element; 601 602 function Slice 603 (Source : Bounded_Wide_Wide_String; 604 Low : Positive; 605 High : Natural) return Wide_Wide_String 606 renames Super_Slice; 607 608 function Bounded_Slice 609 (Source : Bounded_Wide_Wide_String; 610 Low : Positive; 611 High : Natural) return Bounded_Wide_Wide_String 612 renames Super_Slice; 613 614 procedure Bounded_Slice 615 (Source : Bounded_Wide_Wide_String; 616 Target : out Bounded_Wide_Wide_String; 617 Low : Positive; 618 High : Natural) 619 renames Super_Slice; 620 621 function "=" 622 (Left : Bounded_Wide_Wide_String; 623 Right : Bounded_Wide_Wide_String) return Boolean 624 renames Equal; 625 626 function "=" 627 (Left : Bounded_Wide_Wide_String; 628 Right : Wide_Wide_String) return Boolean 629 renames Equal; 630 631 function "=" 632 (Left : Wide_Wide_String; 633 Right : Bounded_Wide_Wide_String) return Boolean 634 renames Equal; 635 636 function "<" 637 (Left : Bounded_Wide_Wide_String; 638 Right : Bounded_Wide_Wide_String) return Boolean 639 renames Less; 640 641 function "<" 642 (Left : Bounded_Wide_Wide_String; 643 Right : Wide_Wide_String) return Boolean 644 renames Less; 645 646 function "<" 647 (Left : Wide_Wide_String; 648 Right : Bounded_Wide_Wide_String) return Boolean 649 renames Less; 650 651 function "<=" 652 (Left : Bounded_Wide_Wide_String; 653 Right : Bounded_Wide_Wide_String) return Boolean 654 renames Less_Or_Equal; 655 656 function "<=" 657 (Left : Bounded_Wide_Wide_String; 658 Right : Wide_Wide_String) return Boolean 659 renames Less_Or_Equal; 660 661 function "<=" 662 (Left : Wide_Wide_String; 663 Right : Bounded_Wide_Wide_String) return Boolean 664 renames Less_Or_Equal; 665 666 function ">" 667 (Left : Bounded_Wide_Wide_String; 668 Right : Bounded_Wide_Wide_String) return Boolean 669 renames Greater; 670 671 function ">" 672 (Left : Bounded_Wide_Wide_String; 673 Right : Wide_Wide_String) return Boolean 674 renames Greater; 675 676 function ">" 677 (Left : Wide_Wide_String; 678 Right : Bounded_Wide_Wide_String) return Boolean 679 renames Greater; 680 681 function ">=" 682 (Left : Bounded_Wide_Wide_String; 683 Right : Bounded_Wide_Wide_String) return Boolean 684 renames Greater_Or_Equal; 685 686 function ">=" 687 (Left : Bounded_Wide_Wide_String; 688 Right : Wide_Wide_String) return Boolean 689 renames Greater_Or_Equal; 690 691 function ">=" 692 (Left : Wide_Wide_String; 693 Right : Bounded_Wide_Wide_String) return Boolean 694 renames Greater_Or_Equal; 695 696 function Index 697 (Source : Bounded_Wide_Wide_String; 698 Pattern : Wide_Wide_String; 699 Going : Direction := Forward; 700 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 701 Wide_Wide_Maps.Identity) 702 return Natural 703 renames Super_Index; 704 705 function Index 706 (Source : Bounded_Wide_Wide_String; 707 Pattern : Wide_Wide_String; 708 Going : Direction := Forward; 709 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 710 return Natural 711 renames Super_Index; 712 713 function Index 714 (Source : Bounded_Wide_Wide_String; 715 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 716 Test : Membership := Inside; 717 Going : Direction := Forward) return Natural 718 renames Super_Index; 719 720 function Index 721 (Source : Bounded_Wide_Wide_String; 722 Pattern : Wide_Wide_String; 723 From : Positive; 724 Going : Direction := Forward; 725 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 726 Wide_Wide_Maps.Identity) 727 return Natural 728 renames Super_Index; 729 730 function Index 731 (Source : Bounded_Wide_Wide_String; 732 Pattern : Wide_Wide_String; 733 From : Positive; 734 Going : Direction := Forward; 735 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 736 return Natural 737 renames Super_Index; 738 739 function Index 740 (Source : Bounded_Wide_Wide_String; 741 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 742 From : Positive; 743 Test : Membership := Inside; 744 Going : Direction := Forward) return Natural 745 renames Super_Index; 746 747 function Index_Non_Blank 748 (Source : Bounded_Wide_Wide_String; 749 Going : Direction := Forward) return Natural 750 renames Super_Index_Non_Blank; 751 752 function Index_Non_Blank 753 (Source : Bounded_Wide_Wide_String; 754 From : Positive; 755 Going : Direction := Forward) return Natural 756 renames Super_Index_Non_Blank; 757 758 function Count 759 (Source : Bounded_Wide_Wide_String; 760 Pattern : Wide_Wide_String; 761 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping := 762 Wide_Wide_Maps.Identity) 763 return Natural 764 renames Super_Count; 765 766 function Count 767 (Source : Bounded_Wide_Wide_String; 768 Pattern : Wide_Wide_String; 769 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 770 return Natural 771 renames Super_Count; 772 773 function Count 774 (Source : Bounded_Wide_Wide_String; 775 Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural 776 renames Super_Count; 777 778 procedure Find_Token 779 (Source : Bounded_Wide_Wide_String; 780 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 781 From : Positive; 782 Test : Membership; 783 First : out Positive; 784 Last : out Natural) 785 renames Super_Find_Token; 786 787 procedure Find_Token 788 (Source : Bounded_Wide_Wide_String; 789 Set : Wide_Wide_Maps.Wide_Wide_Character_Set; 790 Test : Membership; 791 First : out Positive; 792 Last : out Natural) 793 renames Super_Find_Token; 794 795 function Translate 796 (Source : Bounded_Wide_Wide_String; 797 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping) 798 return Bounded_Wide_Wide_String 799 renames Super_Translate; 800 801 procedure Translate 802 (Source : in out Bounded_Wide_Wide_String; 803 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping) 804 renames Super_Translate; 805 806 function Translate 807 (Source : Bounded_Wide_Wide_String; 808 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 809 return Bounded_Wide_Wide_String 810 renames Super_Translate; 811 812 procedure Translate 813 (Source : in out Bounded_Wide_Wide_String; 814 Mapping : Wide_Wide_Maps.Wide_Wide_Character_Mapping_Function) 815 renames Super_Translate; 816 817 function Replace_Slice 818 (Source : Bounded_Wide_Wide_String; 819 Low : Positive; 820 High : Natural; 821 By : Wide_Wide_String; 822 Drop : Truncation := Error) return Bounded_Wide_Wide_String 823 renames Super_Replace_Slice; 824 825 procedure Replace_Slice 826 (Source : in out Bounded_Wide_Wide_String; 827 Low : Positive; 828 High : Natural; 829 By : Wide_Wide_String; 830 Drop : Truncation := Error) 831 renames Super_Replace_Slice; 832 833 function Insert 834 (Source : Bounded_Wide_Wide_String; 835 Before : Positive; 836 New_Item : Wide_Wide_String; 837 Drop : Truncation := Error) return Bounded_Wide_Wide_String 838 renames Super_Insert; 839 840 procedure Insert 841 (Source : in out Bounded_Wide_Wide_String; 842 Before : Positive; 843 New_Item : Wide_Wide_String; 844 Drop : Truncation := Error) 845 renames Super_Insert; 846 847 function Overwrite 848 (Source : Bounded_Wide_Wide_String; 849 Position : Positive; 850 New_Item : Wide_Wide_String; 851 Drop : Truncation := Error) return Bounded_Wide_Wide_String 852 renames Super_Overwrite; 853 854 procedure Overwrite 855 (Source : in out Bounded_Wide_Wide_String; 856 Position : Positive; 857 New_Item : Wide_Wide_String; 858 Drop : Truncation := Error) 859 renames Super_Overwrite; 860 861 function Delete 862 (Source : Bounded_Wide_Wide_String; 863 From : Positive; 864 Through : Natural) return Bounded_Wide_Wide_String 865 renames Super_Delete; 866 867 procedure Delete 868 (Source : in out Bounded_Wide_Wide_String; 869 From : Positive; 870 Through : Natural) 871 renames Super_Delete; 872 873 function Trim 874 (Source : Bounded_Wide_Wide_String; 875 Side : Trim_End) return Bounded_Wide_Wide_String 876 renames Super_Trim; 877 878 procedure Trim 879 (Source : in out Bounded_Wide_Wide_String; 880 Side : Trim_End) 881 renames Super_Trim; 882 883 function Trim 884 (Source : Bounded_Wide_Wide_String; 885 Left : Wide_Wide_Maps.Wide_Wide_Character_Set; 886 Right : Wide_Wide_Maps.Wide_Wide_Character_Set) 887 return Bounded_Wide_Wide_String 888 renames Super_Trim; 889 890 procedure Trim 891 (Source : in out Bounded_Wide_Wide_String; 892 Left : Wide_Wide_Maps.Wide_Wide_Character_Set; 893 Right : Wide_Wide_Maps.Wide_Wide_Character_Set) 894 renames Super_Trim; 895 896 function Head 897 (Source : Bounded_Wide_Wide_String; 898 Count : Natural; 899 Pad : Wide_Wide_Character := Wide_Wide_Space; 900 Drop : Truncation := Error) return Bounded_Wide_Wide_String 901 renames Super_Head; 902 903 procedure Head 904 (Source : in out Bounded_Wide_Wide_String; 905 Count : Natural; 906 Pad : Wide_Wide_Character := Wide_Wide_Space; 907 Drop : Truncation := Error) 908 renames Super_Head; 909 910 function Tail 911 (Source : Bounded_Wide_Wide_String; 912 Count : Natural; 913 Pad : Wide_Wide_Character := Wide_Wide_Space; 914 Drop : Truncation := Error) return Bounded_Wide_Wide_String 915 renames Super_Tail; 916 917 procedure Tail 918 (Source : in out Bounded_Wide_Wide_String; 919 Count : Natural; 920 Pad : Wide_Wide_Character := Wide_Wide_Space; 921 Drop : Truncation := Error) 922 renames Super_Tail; 923 924 function "*" 925 (Left : Natural; 926 Right : Bounded_Wide_Wide_String) return Bounded_Wide_Wide_String 927 renames Times; 928 929 function Replicate 930 (Count : Natural; 931 Item : Bounded_Wide_Wide_String; 932 Drop : Truncation := Error) return Bounded_Wide_Wide_String 933 renames Super_Replicate; 934 935 end Generic_Bounded_Length; 936 937end Ada.Strings.Wide_Wide_Bounded; 938