--------------------------------------------------------------------
--
-- chelper.ads -- Provides additional C data types not in Interfaces.C.
-- Also provides for the type Interfaces.C.Strings those
-- operations available for manipulating Ada strings in
-- Ada.Strings.Fixed.
--
-- Copyright (c) 1995-1997 Terry J. Westley
--
-- See the file "license.htm" for information on usage and
-- redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
--
--------------------------------------------------------------------
with Ada.Strings.Maps;
with Interfaces.C.Strings;
package CHelper is
package C renames Interfaces.C;
type Int_Ptr is access all C.Int; -- int *
type Int_Ptr_Ptr is access all Int_Ptr; -- int **
type Long_Ptr is access all C.Long; -- long *
type Double_Ptr is access all C.Double; -- double *
function To_C (Str : in String) return C.Strings.Chars_Ptr
renames C.Strings.New_String;
function "&" (Left, Right : in C.Strings.Chars_Ptr) return String;
function "&" (
Left : in C.Strings.Chars_Ptr;
Right : String) return String;
function "&" (
Left : String;
Right : in C.Strings.Chars_Ptr) return String;
function Length (Source : C.Strings.Chars_Ptr) return Natural;
function Value (Item : in C.Strings.Chars_Ptr) return String;
pragma Inline (Value);
--------------------------------------------------------
-- Conversion, Concatenation, and Selection Functions --
--------------------------------------------------------
procedure Append
(Source : in out C.Strings.Chars_Ptr;
New_Item : in C.Strings.Chars_Ptr);
procedure Append
(Source : in out C.Strings.Chars_Ptr;
New_Item : in String);
procedure Append
(Source : in out C.Strings.Chars_Ptr;
New_Item : in Character);
function Element
(Source : in C.Strings.Chars_Ptr;
Index : in Positive)
return Character;
procedure Replace_Element
(Source : in out C.Strings.Chars_Ptr;
Index : in Positive;
By : Character);
function Slice
(Source : in C.Strings.Chars_Ptr;
Low : in Positive;
High : in Natural)
return String;
function "=" (Left, Right : in C.Strings.Chars_Ptr) return Boolean;
function "="
(Left : in C.Strings.Chars_Ptr;
Right : in String)
return Boolean;
function "="
(Left : in String;
Right : in C.Strings.Chars_Ptr)
return Boolean;
function "<" (Left, Right : in C.Strings.Chars_Ptr) return Boolean;
function "<"
(Left : in C.Strings.Chars_Ptr;
Right : in String)
return Boolean;
function "<"
(Left : in String;
Right : in C.Strings.Chars_Ptr)
return Boolean;
function "<=" (Left, Right : in C.Strings.Chars_Ptr) return Boolean;
function "<="
(Left : in C.Strings.Chars_Ptr;
Right : in String)
return Boolean;
function "<="
(Left : in String;
Right : in C.Strings.Chars_Ptr)
return Boolean;
function ">" (Left, Right : in C.Strings.Chars_Ptr) return Boolean;
function ">"
(Left : in C.Strings.Chars_Ptr;
Right : in String)
return Boolean;
function ">"
(Left : in String;
Right : in C.Strings.Chars_Ptr)
return Boolean;
function ">=" (Left, Right : in C.Strings.Chars_Ptr) return Boolean;
function ">="
(Left : in C.Strings.Chars_Ptr;
Right : in String)
return Boolean;
function ">="
(Left : in String;
Right : in C.Strings.Chars_Ptr)
return Boolean;
------------------------
-- Search Subprograms --
------------------------
function Index
(Source : in C.Strings.Chars_Ptr;
Pattern : in String;
Going : in Ada.Strings.Direction := Ada.Strings.Forward;
Mapping : in Ada.Strings.Maps.Character_Mapping :=
Ada.Strings.Maps.Identity)
return Natural;
function Index
(Source : in C.Strings.Chars_Ptr;
Pattern : in String;
Going : in Ada.Strings.Direction := Ada.Strings.Forward;
Mapping : in Ada.Strings.Maps.Character_Mapping_Function)
return Natural;
function Index
(Source : in C.Strings.Chars_Ptr;
Set : in Ada.Strings.Maps.Character_Set;
Test : in Ada.Strings.Membership := Ada.Strings.Inside;
Going : in Ada.Strings.Direction := Ada.Strings.Forward)
return Natural;
function Index_Non_Blank
(Source : in C.Strings.Chars_Ptr;
Going : in Ada.Strings.Direction := Ada.Strings.Forward)
return Natural;
function Count
(Source : in C.Strings.Chars_Ptr;
Pattern : in String;
Mapping : in Ada.Strings.Maps.Character_Mapping := Ada.Strings.Maps.Identity)
return Natural;
function Count
(Source : in C.Strings.Chars_Ptr;
Pattern : in String;
Mapping : in Ada.Strings.Maps.Character_Mapping_Function)
return Natural;
function Count
(Source : in C.Strings.Chars_Ptr;
Set : in Ada.Strings.Maps.Character_Set)
return Natural;
procedure Find_Token
(Source : in C.Strings.Chars_Ptr;
Set : in Ada.Strings.Maps.Character_Set;
Test : in Ada.Strings.Membership;
First : out Positive;
Last : out Natural);
------------------------------------
-- String Translation Subprograms --
------------------------------------
function Translate
(Source : in C.Strings.Chars_Ptr;
Mapping : in Ada.Strings.Maps.Character_Mapping)
return C.Strings.Chars_Ptr;
procedure Translate
(Source : in out C.Strings.Chars_Ptr;
Mapping : Ada.Strings.Maps.Character_Mapping);
function Translate
(Source : in C.Strings.Chars_Ptr;
Mapping : in Ada.Strings.Maps.Character_Mapping_Function)
return C.Strings.Chars_Ptr;
procedure Translate
(Source : in out C.Strings.Chars_Ptr;
Mapping : in Ada.Strings.Maps.Character_Mapping_Function);
---------------------------------------
-- String Transformation Subprograms --
---------------------------------------
function Replace_Slice
(Source : in C.Strings.Chars_Ptr;
Low : in Positive;
High : in Natural;
By : in String)
return C.Strings.Chars_Ptr;
procedure Replace_Slice
(Source : in out C.Strings.Chars_Ptr;
Low : in Positive;
High : in Natural;
By : in String);
function Insert
(Source : in C.Strings.Chars_Ptr;
Before : in Positive;
New_Item : in String)
return C.Strings.Chars_Ptr;
procedure Insert
(Source : in out C.Strings.Chars_Ptr;
Before : in Positive;
New_Item : in String);
function Overwrite
(Source : in C.Strings.Chars_Ptr;
Position : in Positive;
New_Item : in String)
return C.Strings.Chars_Ptr;
procedure Overwrite
(Source : in out C.Strings.Chars_Ptr;
Position : in Positive;
New_Item : in String);
function Delete
(Source : in C.Strings.Chars_Ptr;
From : in Positive;
Through : in Natural)
return C.Strings.Chars_Ptr;
procedure Delete
(Source : in out C.Strings.Chars_Ptr;
From : in Positive;
Through : in Natural);
function Trim
(Source : in C.Strings.Chars_Ptr;
Side : in Ada.Strings.Trim_End)
return C.Strings.Chars_Ptr;
procedure Trim
(Source : in out C.Strings.Chars_Ptr;
Side : in Ada.Strings.Trim_End);
function Trim
(Source : in C.Strings.Chars_Ptr;
Left : in Ada.Strings.Maps.Character_Set;
Right : in Ada.Strings.Maps.Character_Set)
return C.Strings.Chars_Ptr;
procedure Trim
(Source : in out C.Strings.Chars_Ptr;
Left : in Ada.Strings.Maps.Character_Set;
Right : in Ada.Strings.Maps.Character_Set);
function Head
(Source : in C.Strings.Chars_Ptr;
Count : in Natural;
Pad : in Character := Ada.Strings.Space)
return C.Strings.Chars_Ptr;
procedure Head
(Source : in out C.Strings.Chars_Ptr;
Count : in Natural;
Pad : in Character := Ada.Strings.Space);
function Tail
(Source : in C.Strings.Chars_Ptr;
Count : in Natural;
Pad : in Character := Ada.Strings.Space)
return C.Strings.Chars_Ptr;
procedure Tail
(Source : in out C.Strings.Chars_Ptr;
Count : in Natural;
Pad : in Character := Ada.Strings.Space);
function "*"
(Left : in Natural;
Right : in Character)
return C.Strings.Chars_Ptr;
function "*"
(Left : in Natural;
Right : in String)
return C.Strings.Chars_Ptr;
function "*"
(Left : in Natural;
Right : in C.Strings.Chars_Ptr)
return C.Strings.Chars_Ptr;
end CHelper;