You've already forked gnatcoll-bindings
mirror of
https://github.com/AdaCore/gnatcoll-bindings.git
synced 2026-02-12 12:59:11 -08:00
New library providing a wrapper of the C++ ISO/IEC 14882:1998(E) string class. Issue: eng/toolchain/gnat#358 TN: Q505-002
1559 lines
40 KiB
Ada
1559 lines
40 KiB
Ada
------------------------------------------------------------------------------
|
|
-- G N A T C O L L --
|
|
-- --
|
|
-- Copyright (C) 2023, AdaCore --
|
|
-- --
|
|
-- This library is free software; you can redistribute it and/or modify it --
|
|
-- under terms of the GNU General Public License as published by the Free --
|
|
-- Software Foundation; either version 3, or (at your option) any later --
|
|
-- version. This library is distributed in the hope that it will be useful, --
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
|
|
-- TABILITY 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/>. --
|
|
-- --
|
|
------------------------------------------------------------------------------
|
|
|
|
with Interfaces.C.Extensions;
|
|
|
|
package body GNATCOLL.CPP.Strings is
|
|
use Interfaces.C;
|
|
use Interfaces.C.Extensions;
|
|
use Interfaces.C.Strings;
|
|
use System;
|
|
|
|
package External is
|
|
|
|
procedure Append_String
|
|
(Str : in out CPP_String;
|
|
Text : CPP_String);
|
|
pragma Import (C, Append_String,
|
|
"gnatcoll_cpp_append_string");
|
|
|
|
procedure Append_Substring
|
|
(Str : in out CPP_String;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t);
|
|
pragma Import (C, Append_Substring,
|
|
"gnatcoll_cpp_append_substring");
|
|
|
|
procedure Append_Text
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr);
|
|
pragma Import (C, Append_Text,
|
|
"gnatcoll_cpp_append_text");
|
|
|
|
procedure Append_Buffer
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr;
|
|
N : size_t);
|
|
pragma Import (C, Append_Buffer,
|
|
"gnatcoll_cpp_append_buffer");
|
|
|
|
procedure Append_Fill
|
|
(Str : in out CPP_String;
|
|
N : size_t;
|
|
C : Character);
|
|
pragma Import (C, Append_Fill,
|
|
"gnatcoll_cpp_append_fill");
|
|
|
|
procedure Assign_String
|
|
(Str : in out CPP_String;
|
|
Text : CPP_String);
|
|
pragma Import (C, Assign_String,
|
|
"gnatcoll_cpp_assign_string");
|
|
|
|
procedure Assign_Text
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr);
|
|
pragma Import (C, Assign_Text,
|
|
"gnatcoll_cpp_assign_text");
|
|
|
|
procedure Assign_Char
|
|
(Str : in out CPP_String;
|
|
C : Character);
|
|
pragma Import (C, Assign_Char,
|
|
"gnatcoll_cpp_assign_char");
|
|
|
|
function Capacity
|
|
(Str : CPP_String) return size_t;
|
|
pragma Import (C, Capacity,
|
|
"gnatcoll_cpp_capacity");
|
|
|
|
function Char_At
|
|
(Str : CPP_String; Pos : size_t) return Character;
|
|
pragma Import (C, Char_At,
|
|
"gnatcoll_cpp_char_at");
|
|
|
|
procedure Clear
|
|
(Str : in out CPP_String);
|
|
pragma Import (C, Clear,
|
|
"gnatcoll_cpp_clear");
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Right : CPP_String) return Integer;
|
|
pragma Import (C, Compare,
|
|
"gnatcoll_cpp_compare");
|
|
|
|
function Compare_With_Substring
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : CPP_String) return Integer;
|
|
pragma Import (C, Compare_With_Substring,
|
|
"gnatcoll_cpp_compare_with_substring");
|
|
|
|
function Compare_Substrings
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t) return Integer;
|
|
pragma Import (C, Compare_Substrings,
|
|
"gnatcoll_cpp_compare_substrings");
|
|
|
|
function Compare_With_Text
|
|
(Left : CPP_String;
|
|
Right : chars_ptr) return Integer;
|
|
pragma Import (C, Compare_With_Text,
|
|
"gnatcoll_cpp_compare_with_text");
|
|
|
|
function Compare_Substring_With_Text
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : chars_ptr) return Integer;
|
|
pragma Import (C, Compare_Substring_With_Text,
|
|
"gnatcoll_cpp_compare_substring_with_text");
|
|
|
|
function Compare_Substring_With_Buffer
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : chars_ptr;
|
|
N : size_t) return Integer;
|
|
pragma Import (C, Compare_Substring_With_Buffer,
|
|
"gnatcoll_cpp_compare_substring_with_buffer");
|
|
|
|
procedure Copy
|
|
(From_Str : CPP_String;
|
|
To_Str : chars_ptr;
|
|
Len : size_t;
|
|
Pos : size_t;
|
|
Num_Chars : access size_t);
|
|
pragma Import (C, Copy,
|
|
"gnatcoll_cpp_copy");
|
|
|
|
function C_Str
|
|
(Str : CPP_String) return chars_ptr;
|
|
pragma Import (C, C_Str,
|
|
"gnatcoll_cpp_c_str");
|
|
|
|
function Data
|
|
(Str : CPP_String) return chars_ptr;
|
|
pragma Import (C, Data,
|
|
"gnatcoll_cpp_data");
|
|
|
|
procedure Destroy
|
|
(Str : in out CPP_String);
|
|
pragma Import (C, Destroy,
|
|
"gnatcoll_cpp_destroy");
|
|
|
|
function Empty
|
|
(Str : CPP_String) return bool;
|
|
pragma Import (C, Empty,
|
|
"gnatcoll_cpp_empty");
|
|
|
|
procedure Erase_Sequence
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t);
|
|
pragma Import (C, Erase_Sequence,
|
|
"gnatcoll_cpp_erase_sequence");
|
|
|
|
function Find_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_String,
|
|
"gnatcoll_cpp_find_string");
|
|
|
|
function Find_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Text,
|
|
"gnatcoll_cpp_find_text");
|
|
|
|
function Find_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Find_Buffer,
|
|
"gnatcoll_cpp_find_buffer");
|
|
|
|
function Find_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Char,
|
|
"gnatcoll_cpp_find_char");
|
|
|
|
function Find_First_Not_Of_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Not_Of_String,
|
|
"gnatcoll_cpp_find_first_not_of_string");
|
|
|
|
function Find_First_Not_Of_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Not_Of_Text,
|
|
"gnatcoll_cpp_find_first_not_of_text");
|
|
|
|
function Find_First_Not_Of_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Find_First_Not_Of_Buffer,
|
|
"gnatcoll_cpp_find_first_not_of_buffer");
|
|
|
|
function Find_First_Not_Of_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Not_Of_Char,
|
|
"gnatcoll_cpp_find_first_not_of_char");
|
|
|
|
function Find_First_Of_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Of_String,
|
|
"gnatcoll_cpp_find_first_of_string");
|
|
|
|
function Find_First_Of_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Of_Text,
|
|
"gnatcoll_cpp_find_first_of_text");
|
|
|
|
function Find_First_Of_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Find_First_Of_Buffer,
|
|
"gnatcoll_cpp_find_first_of_buffer");
|
|
|
|
function Find_First_Of_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_First_Of_Char,
|
|
"gnatcoll_cpp_find_first_of_char");
|
|
|
|
function Find_Last_Not_Of_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Not_Of_String,
|
|
"gnatcoll_cpp_find_last_not_of_string");
|
|
|
|
function Find_Last_Not_Of_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Not_Of_Text,
|
|
"gnatcoll_cpp_find_last_not_of_text");
|
|
|
|
function Find_Last_Not_Of_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Not_Of_Buffer,
|
|
"gnatcoll_cpp_find_last_not_of_buffer");
|
|
|
|
function Find_Last_Not_Of_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Not_Of_Char,
|
|
"gnatcoll_cpp_find_last_not_of_char");
|
|
|
|
function Find_Last_Of_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Of_String,
|
|
"gnatcoll_cpp_find_last_of_string");
|
|
|
|
function Find_Last_Of_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Of_Text,
|
|
"gnatcoll_cpp_find_last_of_text");
|
|
|
|
function Find_Last_Of_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Of_Buffer,
|
|
"gnatcoll_cpp_find_last_of_buffer");
|
|
|
|
function Find_Last_Of_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Find_Last_Of_Char,
|
|
"gnatcoll_cpp_find_last_of_char");
|
|
|
|
procedure Init
|
|
(Str : in out CPP_String);
|
|
pragma Import (C, Init,
|
|
"gnatcoll_cpp_init");
|
|
|
|
procedure Init_With_Text
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr);
|
|
pragma Import (C, Init_With_Text,
|
|
"gnatcoll_cpp_init_with_text");
|
|
|
|
procedure Init_With_Fill
|
|
(Str : in out CPP_String;
|
|
N : size_t;
|
|
C : Character);
|
|
pragma Import (C, Init_With_Fill,
|
|
"gnatcoll_cpp_init_with_fill");
|
|
|
|
procedure Insert_String
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : CPP_String);
|
|
pragma Import (C, Insert_String,
|
|
"gnatcoll_cpp_insert_string");
|
|
|
|
procedure Insert_Substring
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t);
|
|
pragma Import (C, Insert_Substring,
|
|
"gnatcoll_cpp_insert_substring");
|
|
|
|
procedure Insert_Text
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : chars_ptr);
|
|
pragma Import (C, Insert_Text,
|
|
"gnatcoll_cpp_insert_text");
|
|
|
|
procedure Insert_Buffer
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : chars_ptr;
|
|
N : size_t);
|
|
pragma Import (C, Insert_Buffer,
|
|
"gnatcoll_cpp_insert_buffer");
|
|
|
|
procedure Insert_Fill
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
N : size_t;
|
|
C : Character);
|
|
pragma Import (C, Insert_Fill,
|
|
"gnatcoll_cpp_insert_fill");
|
|
|
|
function Length
|
|
(Str : CPP_String) return size_t;
|
|
pragma Import (C, Length,
|
|
"gnatcoll_cpp_length");
|
|
|
|
function Max_Size
|
|
(Str : CPP_String) return size_t;
|
|
pragma Import (C, Max_Size,
|
|
"gnatcoll_cpp_max_size");
|
|
|
|
function Npos return size_t;
|
|
pragma Import (C, Npos,
|
|
"gnatcoll_cpp_npos");
|
|
|
|
procedure Pop_Back
|
|
(Str : in out CPP_String);
|
|
pragma Import (C, Pop_Back,
|
|
"gnatcoll_cpp_pop_back");
|
|
|
|
procedure Push_Back
|
|
(Str : in out CPP_String;
|
|
C : Character);
|
|
pragma Import (C, Push_Back,
|
|
"gnatcoll_cpp_push_back");
|
|
|
|
procedure Replace_String
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : CPP_String);
|
|
pragma Import (C, Replace_String,
|
|
"gnatcoll_cpp_replace_string");
|
|
|
|
procedure Replace_Substring
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t);
|
|
pragma Import (C, Replace_Substring,
|
|
"gnatcoll_cpp_replace_substring");
|
|
|
|
procedure Replace_Text
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : chars_ptr);
|
|
pragma Import (C, Replace_Text,
|
|
"gnatcoll_cpp_replace_text");
|
|
|
|
procedure Replace_Buffer
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : chars_ptr;
|
|
N : size_t);
|
|
pragma Import (C, Replace_Buffer,
|
|
"gnatcoll_cpp_replace_buffer");
|
|
|
|
procedure Replace_Fill
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
N : size_t;
|
|
C : Character);
|
|
pragma Import (C, Replace_Fill,
|
|
"gnatcoll_cpp_replace_fill");
|
|
|
|
procedure Reserve
|
|
(Str : in out CPP_String;
|
|
N : size_t := 0);
|
|
pragma Import (C, Reserve,
|
|
"gnatcoll_cpp_reserve");
|
|
|
|
procedure Resize
|
|
(Str : in out CPP_String;
|
|
N : size_t);
|
|
pragma Import (C, Resize,
|
|
"gnatcoll_cpp_resize");
|
|
|
|
procedure Resize_And_Fill
|
|
(Str : in out CPP_String;
|
|
N : size_t;
|
|
C : Character);
|
|
pragma Import (C, Resize_And_Fill,
|
|
"gnatcoll_cpp_resize_with_fill");
|
|
|
|
function Reverse_Find_String
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Reverse_Find_String,
|
|
"gnatcoll_cpp_reverse_find_string");
|
|
|
|
function Reverse_Find_Text
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Reverse_Find_Text,
|
|
"gnatcoll_cpp_reverse_find_text");
|
|
|
|
function Reverse_Find_Buffer
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t;
|
|
pragma Import (C, Reverse_Find_Buffer,
|
|
"gnatcoll_cpp_reverse_find_buffer");
|
|
|
|
function Reverse_Find_Char
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t) return size_t;
|
|
pragma Import (C, Reverse_Find_Char,
|
|
"gnatcoll_cpp_reverse_find_char");
|
|
|
|
function Size
|
|
(Str : CPP_String) return size_t;
|
|
pragma Import (C, Size,
|
|
"gnatcoll_cpp_size");
|
|
|
|
procedure Substr
|
|
(Result : in out CPP_String;
|
|
Str : CPP_String;
|
|
Pos : size_t := 0;
|
|
Len : size_t := Npos);
|
|
pragma Import (C, Substr,
|
|
"gnatcoll_cpp_substr");
|
|
|
|
procedure Swap
|
|
(Str : in out CPP_String;
|
|
Text : in out CPP_String);
|
|
pragma Import (C, Swap,
|
|
"gnatcoll_cpp_swap_strings");
|
|
|
|
--------------------------
|
|
-- Relational_Operators --
|
|
--------------------------
|
|
|
|
function Eq_String
|
|
(Left : CPP_String; Right : CPP_String) return bool;
|
|
pragma Import (C, Eq_String,
|
|
"gnatcoll_cpp_eq_strings");
|
|
|
|
function Eq_Text_String
|
|
(Left : chars_ptr; Right : CPP_String) return bool;
|
|
pragma Import (C, Eq_Text_String,
|
|
"gnatcoll_cpp_eq_text_string");
|
|
|
|
function Eq_String_Text
|
|
(Left : CPP_String; Right : chars_ptr) return bool;
|
|
pragma Import (C, Eq_String_Text,
|
|
"gnatcoll_cpp_eq_string_text");
|
|
|
|
function Lt_String
|
|
(Left : CPP_String; Right : CPP_String) return bool;
|
|
pragma Import (C, Lt_String,
|
|
"gnatcoll_cpp_lt_strings");
|
|
|
|
function Lt_Text_String
|
|
(Left : chars_ptr; Right : CPP_String) return bool;
|
|
pragma Import (C, Lt_Text_String,
|
|
"gnatcoll_cpp_lt_text_string");
|
|
|
|
function Lt_String_Text
|
|
(Left : CPP_String; Right : chars_ptr) return bool;
|
|
pragma Import (C, Lt_String_Text,
|
|
"gnatcoll_cpp_lt_string_text");
|
|
|
|
function Le_String
|
|
(Left : CPP_String; Right : CPP_String) return bool;
|
|
pragma Import (C, Le_String,
|
|
"gnatcoll_cpp_le_strings");
|
|
|
|
function Le_Text_String
|
|
(Left : chars_ptr; Right : CPP_String) return bool;
|
|
pragma Import (C, Le_Text_String,
|
|
"gnatcoll_cpp_le_text_string");
|
|
|
|
function Le_String_Text
|
|
(Left : CPP_String; Right : chars_ptr) return bool;
|
|
pragma Import (C, Le_String_Text,
|
|
"gnatcoll_cpp_le_string_text");
|
|
|
|
function Gt_String
|
|
(Left : CPP_String; Right : CPP_String) return bool;
|
|
pragma Import (C, Gt_String,
|
|
"gnatcoll_cpp_gt_strings");
|
|
|
|
function Gt_Text_String
|
|
(Left : chars_ptr; Right : CPP_String) return bool;
|
|
pragma Import (C, Gt_Text_String,
|
|
"gnatcoll_cpp_gt_text_string");
|
|
|
|
function Gt_String_Text
|
|
(Left : CPP_String; Right : chars_ptr) return bool;
|
|
pragma Import (C, Gt_String_Text,
|
|
"gnatcoll_cpp_gt_string_text");
|
|
|
|
function Ge_String
|
|
(Left : CPP_String; Right : CPP_String) return bool;
|
|
pragma Import (C, Ge_String,
|
|
"gnatcoll_cpp_ge_strings");
|
|
|
|
function Ge_Text_String
|
|
(Left : chars_ptr; Right : CPP_String) return bool;
|
|
pragma Import (C, Ge_Text_String,
|
|
"gnatcoll_cpp_ge_text_string");
|
|
|
|
function Ge_String_Text
|
|
(Left : CPP_String; Right : chars_ptr) return bool;
|
|
pragma Import (C, Ge_String_Text,
|
|
"gnatcoll_cpp_ge_string_text");
|
|
end External;
|
|
|
|
procedure Check_Non_Null (Str : CPP_String);
|
|
-- Raise Constraint_Error if Str is not initialized.
|
|
|
|
------------
|
|
-- Append --
|
|
------------
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
Text : String)
|
|
is
|
|
C_Text : chars_ptr := New_String (Text);
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Append_Text (Str, C_Text);
|
|
Free (C_Text);
|
|
end Append;
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
Text : CPP_String)
|
|
is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Append_String (Str, Text);
|
|
end Append;
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Append_Substring (Str, Text, Subpos, Sublen);
|
|
end Append;
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Append_Text (Str, Text);
|
|
end Append;
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr;
|
|
N : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Append_Buffer (Str, Text, N);
|
|
end Append;
|
|
|
|
procedure Append
|
|
(Str : in out CPP_String;
|
|
N : size_t;
|
|
C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Append_Fill (Str, N, C);
|
|
end Append;
|
|
|
|
------------
|
|
-- Assign --
|
|
------------
|
|
|
|
procedure Assign
|
|
(Str : in out CPP_String; Text : CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Assign_String (Str, Text);
|
|
end Assign;
|
|
|
|
procedure Assign
|
|
(Str : in out CPP_String; Text : String)
|
|
is
|
|
C_Text : chars_ptr := New_String (Text);
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Assign (Str, C_Text);
|
|
Free (C_Text);
|
|
end Assign;
|
|
|
|
procedure Assign
|
|
(Str : in out CPP_String;
|
|
Text : chars_ptr) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Assign_Text (Str, Text);
|
|
end Assign;
|
|
|
|
procedure Assign
|
|
(Str : in out CPP_String; C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Assign_Char (Str, C);
|
|
end Assign;
|
|
|
|
--------------
|
|
-- Capacity --
|
|
--------------
|
|
|
|
function Capacity
|
|
(Str : CPP_String) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Capacity (Str);
|
|
end Capacity;
|
|
|
|
-------------
|
|
-- Char_At --
|
|
-------------
|
|
|
|
function Char_At (Str : CPP_String; Pos : size_t) return Character is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Char_At (Str, Pos);
|
|
end Char_At;
|
|
|
|
--------------------
|
|
-- Check_Non_Null --
|
|
--------------------
|
|
|
|
procedure Check_Non_Null (Str : CPP_String) is
|
|
begin
|
|
if Str.Wrapped_String_Address = Null_Address then
|
|
raise Constraint_Error;
|
|
end if;
|
|
end Check_Non_Null;
|
|
|
|
-----------
|
|
-- Clear --
|
|
-----------
|
|
|
|
procedure Clear (Str : in out CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Clear (Str);
|
|
end Clear;
|
|
|
|
-------------
|
|
-- Compare --
|
|
-------------
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Right : CPP_String) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Compare (Left, Right);
|
|
end Compare;
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : CPP_String) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Compare_With_Substring (Left, Pos, Len, Right);
|
|
end Compare;
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Compare_Substrings
|
|
(Left, Pos, Len, Right, Subpos, Sublen);
|
|
end Compare;
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Right : chars_ptr) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Compare_With_Text (Left, Right);
|
|
end Compare;
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : chars_ptr) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Compare_Substring_With_Text (Left, Pos, Len, Right);
|
|
end Compare;
|
|
|
|
function Compare
|
|
(Left : CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Right : chars_ptr;
|
|
N : size_t) return Integer is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Compare_Substring_With_Buffer (Left, Pos, Len, Right, N);
|
|
end Compare;
|
|
|
|
----------
|
|
-- Copy --
|
|
----------
|
|
|
|
procedure Copy
|
|
(From_Str : CPP_String;
|
|
To_Str : chars_ptr;
|
|
Len : size_t;
|
|
Pos : size_t;
|
|
Num_Chars : out size_t)
|
|
is
|
|
Result : aliased size_t;
|
|
begin
|
|
Check_Non_Null (From_Str);
|
|
External.Copy (From_Str, To_Str, Len, Pos, Result'Access);
|
|
Num_Chars := Result;
|
|
end Copy;
|
|
|
|
-----------
|
|
-- C_Str --
|
|
-----------
|
|
|
|
function C_Str
|
|
(Str : CPP_String) return chars_ptr is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.C_Str (Str);
|
|
end C_Str;
|
|
|
|
----------
|
|
-- Data --
|
|
----------
|
|
|
|
function Data
|
|
(Str : CPP_String) return chars_ptr is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Data (Str);
|
|
end Data;
|
|
|
|
function Data
|
|
(Str : CPP_String) return String is
|
|
begin
|
|
return Value (Data (Str));
|
|
end Data;
|
|
|
|
-----------
|
|
-- Empty --
|
|
-----------
|
|
|
|
function Empty (Str : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Empty (Str) /= False;
|
|
end Empty;
|
|
|
|
-----------
|
|
-- Erase --
|
|
-----------
|
|
|
|
procedure Erase
|
|
(Str : in out CPP_String;
|
|
Pos : size_t := 0;
|
|
Len : size_t := Npos) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Erase_Sequence (Str, Pos, Len);
|
|
end Erase;
|
|
|
|
----------
|
|
-- Find --
|
|
----------
|
|
|
|
function Find
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Find_String (Str, Text, Pos);
|
|
end Find;
|
|
|
|
function Find
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Text (Str, Text, Pos);
|
|
end Find;
|
|
|
|
function Find
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Buffer (Str, Text, Pos, N);
|
|
end Find;
|
|
|
|
function Find
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Char (Str, C, Pos);
|
|
end Find;
|
|
|
|
-----------------------
|
|
-- Find_First_Not_Of --
|
|
-----------------------
|
|
|
|
function Find_First_Not_Of
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Find_First_Not_Of_String (Str, Text, Pos);
|
|
end Find_First_Not_Of;
|
|
|
|
function Find_First_Not_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Not_Of_Text (Str, Text, Pos);
|
|
end Find_First_Not_Of;
|
|
|
|
function Find_First_Not_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Not_Of_Buffer (Str, Text, Pos, N);
|
|
end Find_First_Not_Of;
|
|
|
|
function Find_First_Not_Of
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Not_Of_Char (Str, C, Pos);
|
|
end Find_First_Not_Of;
|
|
|
|
-------------------
|
|
-- Find_First_Of --
|
|
-------------------
|
|
|
|
function Find_First_Of
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Find_First_Of_String (Str, Text, Pos);
|
|
end Find_First_Of;
|
|
|
|
function Find_First_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Of_Text (Str, Text, Pos);
|
|
end Find_First_Of;
|
|
|
|
function Find_First_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Of_Buffer (Str, Text, Pos, N);
|
|
end Find_First_Of;
|
|
|
|
function Find_First_Of
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := 0) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_First_Of_Char (Str, C, Pos);
|
|
end Find_First_Of;
|
|
|
|
----------------------
|
|
-- Find_Last_Not_Of --
|
|
----------------------
|
|
|
|
function Find_Last_Not_Of
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Find_Last_Not_Of_String (Str, Text, Pos);
|
|
end Find_Last_Not_Of;
|
|
|
|
function Find_Last_Not_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Not_Of_Text (Str, Text, Pos);
|
|
end Find_Last_Not_Of;
|
|
|
|
function Find_Last_Not_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Not_Of_Buffer (Str, Text, Pos, N);
|
|
end Find_Last_Not_Of;
|
|
|
|
function Find_Last_Not_Of
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Not_Of_Char (Str, C, Pos);
|
|
end Find_Last_Not_Of;
|
|
|
|
------------------
|
|
-- Find_Last_Of --
|
|
------------------
|
|
|
|
function Find_Last_Of
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Find_Last_Of_String (Str, Text, Pos);
|
|
end Find_Last_Of;
|
|
|
|
function Find_Last_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Of_Text (Str, Text, Pos);
|
|
end Find_Last_Of;
|
|
|
|
function Find_Last_Of
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Of_Buffer (Str, Text, Pos, N);
|
|
end Find_Last_Of;
|
|
|
|
function Find_Last_Of
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Find_Last_Of_Char (Str, C, Pos);
|
|
end Find_Last_Of;
|
|
|
|
----------
|
|
-- Free --
|
|
----------
|
|
|
|
procedure Free (Str : in out CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Destroy (Str);
|
|
Str.Wrapped_String_Address := Null_Address;
|
|
end Free;
|
|
|
|
------------
|
|
-- Insert --
|
|
------------
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : String)
|
|
is
|
|
C_Text : chars_ptr := New_String (Text);
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Insert_Text (Str, Pos, C_Text);
|
|
Free (C_Text);
|
|
end Insert;
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : CPP_String)
|
|
is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Insert_String (Str, Pos, Text);
|
|
end Insert;
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Insert_Substring (Str, Pos, Text, Subpos, Sublen);
|
|
end Insert;
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : chars_ptr) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Insert_Text (Str, Pos, Text);
|
|
end Insert;
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Text : chars_ptr;
|
|
N : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Insert_Buffer (Str, Pos, Text, N);
|
|
end Insert;
|
|
|
|
procedure Insert
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
N : size_t;
|
|
C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Insert_Fill (Str, Pos, N, C);
|
|
end Insert;
|
|
|
|
------------
|
|
-- Length --
|
|
------------
|
|
|
|
function Length
|
|
(Str : CPP_String) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Length (Str);
|
|
end Length;
|
|
|
|
--------------
|
|
-- Max_Size --
|
|
--------------
|
|
|
|
function Max_Size
|
|
(Str : CPP_String) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Max_Size (Str);
|
|
end Max_Size;
|
|
|
|
--------------------
|
|
-- New_CPP_String --
|
|
--------------------
|
|
|
|
function New_CPP_String return CPP_String is
|
|
Result : CPP_String;
|
|
begin
|
|
External.Init (Result);
|
|
return Result;
|
|
end New_CPP_String;
|
|
|
|
function New_CPP_String
|
|
(Text : chars_ptr) return CPP_String
|
|
is
|
|
Result : CPP_String;
|
|
begin
|
|
External.Init_With_Text (Result, Text);
|
|
return Result;
|
|
end New_CPP_String;
|
|
|
|
function New_CPP_String
|
|
(Text : String) return CPP_String
|
|
is
|
|
C_Text : chars_ptr := New_String (Text);
|
|
Result : CPP_String;
|
|
begin
|
|
Result := New_CPP_String (C_Text);
|
|
Free (C_Text);
|
|
|
|
return Result;
|
|
end New_CPP_String;
|
|
|
|
function New_CPP_String
|
|
(Text : CPP_String) return CPP_String
|
|
is
|
|
Contents : constant String := Data (Text);
|
|
begin
|
|
return New_CPP_String (Contents);
|
|
end New_CPP_String;
|
|
|
|
function New_CPP_String
|
|
(N : size_t; C : Character) return CPP_String
|
|
is
|
|
Result : CPP_String;
|
|
begin
|
|
External.Init_With_Fill (Result, N, C);
|
|
return Result;
|
|
end New_CPP_String;
|
|
|
|
----------
|
|
-- Npos --
|
|
----------
|
|
|
|
function Npos return size_t is
|
|
begin
|
|
return External.Npos;
|
|
end Npos;
|
|
|
|
--------------
|
|
-- Pop_Back --
|
|
--------------
|
|
|
|
procedure Pop_Back
|
|
(Str : in out CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Pop_Back (Str);
|
|
end Pop_Back;
|
|
|
|
---------------
|
|
-- Push_Back --
|
|
---------------
|
|
|
|
procedure Push_Back
|
|
(Str : in out CPP_String;
|
|
C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Push_Back (Str, C);
|
|
end Push_Back;
|
|
|
|
-------------
|
|
-- Replace --
|
|
-------------
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : String)
|
|
is
|
|
C_Text : chars_ptr := New_String (Text);
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Replace_Text (Str, Pos, Len, C_Text);
|
|
Free (C_Text);
|
|
end Replace;
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Replace_String (Str, Pos, Len, Text);
|
|
end Replace;
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : CPP_String;
|
|
Subpos : size_t;
|
|
Sublen : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Replace_Substring (Str, Pos, Len, Text, Subpos, Sublen);
|
|
end Replace;
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : chars_ptr) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Replace_Text (Str, Pos, Len, Text);
|
|
end Replace;
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
Text : chars_ptr;
|
|
N : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Replace_Buffer (Str, Pos, Len, Text, N);
|
|
end Replace;
|
|
|
|
procedure Replace
|
|
(Str : in out CPP_String;
|
|
Pos : size_t;
|
|
Len : size_t;
|
|
N : size_t;
|
|
C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Replace_Fill (Str, Pos, Len, N, C);
|
|
end Replace;
|
|
|
|
-------------
|
|
-- Reserve --
|
|
-------------
|
|
|
|
procedure Reserve (Str : in out CPP_String; N : size_t := 0) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Reserve (Str, N);
|
|
end Reserve;
|
|
|
|
------------
|
|
-- Resize --
|
|
------------
|
|
|
|
procedure Resize (Str : in out CPP_String; N : size_t) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Resize (Str, N);
|
|
end Resize;
|
|
|
|
------------
|
|
-- Resize --
|
|
------------
|
|
|
|
procedure Resize (Str : in out CPP_String; N : size_t; C : Character) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
External.Resize_And_Fill (Str, N, C);
|
|
end Resize;
|
|
|
|
------------------
|
|
-- Reverse_Find --
|
|
------------------
|
|
|
|
function Reverse_Find
|
|
(Str : CPP_String;
|
|
Text : CPP_String;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
return External.Reverse_Find_String (Str, Text, Pos);
|
|
end Reverse_Find;
|
|
|
|
function Reverse_Find
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Reverse_Find_Text (Str, Text, Pos);
|
|
end Reverse_Find;
|
|
|
|
function Reverse_Find
|
|
(Str : CPP_String;
|
|
Text : chars_ptr;
|
|
Pos : size_t;
|
|
N : size_t) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Reverse_Find_Buffer (Str, Text, Pos, N);
|
|
end Reverse_Find;
|
|
|
|
function Reverse_Find
|
|
(Str : CPP_String;
|
|
C : Character;
|
|
Pos : size_t := Npos) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Reverse_Find_Char (Str, C, Pos);
|
|
end Reverse_Find;
|
|
|
|
----------
|
|
-- Size --
|
|
----------
|
|
|
|
function Size
|
|
(Str : CPP_String) return size_t is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
return External.Size (Str);
|
|
end Size;
|
|
|
|
------------
|
|
-- Substr --
|
|
------------
|
|
|
|
function Substr
|
|
(Str : CPP_String;
|
|
Pos : size_t := 0;
|
|
Len : size_t := Npos) return CPP_String is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
|
|
return Result : CPP_String do
|
|
External.Substr (Result, Str, Pos, Len);
|
|
end return;
|
|
end Substr;
|
|
|
|
----------
|
|
-- Swap --
|
|
----------
|
|
|
|
procedure Swap
|
|
(Str : in out CPP_String;
|
|
Text : in out CPP_String) is
|
|
begin
|
|
Check_Non_Null (Str);
|
|
Check_Non_Null (Text);
|
|
External.Swap (Str, Text);
|
|
end Swap;
|
|
|
|
--------------------------
|
|
-- Relational_Operators --
|
|
--------------------------
|
|
|
|
function "=" (Left : CPP_String; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Eq_String (Left, Right) /= False;
|
|
end "=";
|
|
|
|
function "=" (Left : chars_ptr; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Right);
|
|
return External.Eq_Text_String (Left, Right) /= False;
|
|
end "=";
|
|
|
|
function "=" (Left : CPP_String; Right : chars_ptr) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Eq_String_Text (Left, Right) /= False;
|
|
end "=";
|
|
|
|
function "<" (Left : CPP_String; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Lt_String (Left, Right) /= False;
|
|
end "<";
|
|
|
|
function "<" (Left : chars_ptr; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Right);
|
|
return External.Lt_Text_String (Left, Right) /= False;
|
|
end "<";
|
|
|
|
function "<" (Left : CPP_String; Right : chars_ptr) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Lt_String_Text (Left, Right) /= False;
|
|
end "<";
|
|
|
|
function "<=" (Left : CPP_String; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Le_String (Left, Right) /= False;
|
|
end "<=";
|
|
|
|
function "<=" (Left : chars_ptr; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Right);
|
|
return External.Le_Text_String (Left, Right) /= False;
|
|
end "<=";
|
|
|
|
function "<=" (Left : CPP_String; Right : chars_ptr) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Le_String_Text (Left, Right) /= False;
|
|
end "<=";
|
|
|
|
function ">" (Left : CPP_String; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Gt_String (Left, Right) /= False;
|
|
end ">";
|
|
|
|
function ">" (Left : chars_ptr; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Right);
|
|
return External.Gt_Text_String (Left, Right) /= False;
|
|
end ">";
|
|
|
|
function ">" (Left : CPP_String; Right : chars_ptr) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Gt_String_Text (Left, Right) /= False;
|
|
end ">";
|
|
|
|
function ">=" (Left : CPP_String; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
Check_Non_Null (Right);
|
|
return External.Ge_String (Left, Right) /= False;
|
|
end ">=";
|
|
|
|
function ">=" (Left : chars_ptr; Right : CPP_String) return Boolean is
|
|
begin
|
|
Check_Non_Null (Right);
|
|
return External.Ge_Text_String (Left, Right) /= False;
|
|
end ">=";
|
|
|
|
function ">=" (Left : CPP_String; Right : chars_ptr) return Boolean is
|
|
begin
|
|
Check_Non_Null (Left);
|
|
return External.Ge_String_Text (Left, Right) /= False;
|
|
end ">=";
|
|
|
|
end GNATCOLL.CPP.Strings;
|