1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
------------------------------------------------------------------------------
-- --
-- GNATPP COMPONENTS --
-- --
-- G N A T P P . S T R I N G S --
-- --
-- B o d y --
-- --
-- Copyright (C) 2004, ACT Europe --
-- --
-- GNATPP 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 2, or (at your option) any later ver- --
-- sion. GNATPP is distributed in the hope that it will be useful, but --
-- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABI- --
-- LITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with GNAT; see file COPYING. If not, --
-- write to the Free Software Foundation, 59 Temple Place - Suite 330, --
-- Boston, --
-- --
-- GNATPP is maintained by ACT Europe (http://www.act-europe.fr). --
-- --
------------------------------------------------------------------------------
with Table;
package body GNATPP.Strings is
package Chars is new Table.Table (
Table_Component_Type => Character,
Table_Index_Type => Integer,
Table_Low_Bound => 1,
Table_Initial => 10000,
Table_Increment => 1000,
Table_Name => "character container");
Table : Chars.Table_Ptr renames Chars.Table;
------------------
-- Enter_String --
------------------
function Enter_String (S : String) return String_Loc is
Len : constant Integer := S'Length;
F : Integer;
begin
if Len = 0 then
return Nil_String_Loc;
else
Chars.Increment_Last;
F := Chars.Last;
Chars.Set_Last (F + Len - 1);
Table (F .. F + Len - 1) := Chars.Table_Type (S);
return (F, F + Len - 1);
end if;
end Enter_String;
----------------
-- Get_String --
----------------
function Get_String (SL : String_Loc) return String is
begin
if SL = Nil_String_Loc then
return "";
else
return String (Table (SL.First .. SL.Last));
end if;
end Get_String;
----------
-- Init --
----------
procedure Init is
begin
Chars.Init;
end Init;
end GNATPP.Strings;
|