Files
lace/1-base/lace/source/text/lace-text-forge.adb
2023-12-08 14:42:45 +11:00

472 lines
10 KiB
Ada

with
ada.Characters.latin_1,
ada.Directories,
ada.Direct_IO,
ada.Text_IO;
package body lace.Text.forge
is
--------
-- Files
--
function File_to_String (Filename : in forge.Filename) return String
is
use ada.Characters,
ada.Directories;
Length : constant Natural := Natural (Size (String (Filename)));
subtype sized_String is String (1 .. Length);
package my_IO is new ada.Direct_IO (sized_String);
use my_IO;
the_File : my_IO.File_type;
Pad : sized_String;
Result : sized_String;
i : Natural := 0;
begin
if Length = 0
then
return "";
end if;
open (the_File, in_File, String (Filename));
read (the_File, Pad);
close (the_File);
for Each of Pad
loop
if Each /= latin_1.CR
then
i := i + 1;
Result (i) := Each;
end if;
end loop;
return Result (1 .. i);
end File_to_String;
function File_to_Text (Filename : in forge.Filename) return Item
is
begin
return to_Text (File_to_String (Filename));
end File_to_Text;
procedure store (Filename : in forge.Filename; the_String : in String)
is
use ada.Text_IO;
File : File_type;
begin
create (File, out_File, String (Filename));
put (File, the_String);
close (File);
end store;
--------------
-- Stock Items
--
function to_Text_1 (From : in String) return Item_1
is
begin
return to_Text (From, capacity => 1);
end to_Text_1;
function to_Text_1 (From : in Text.item) return Item_1
is
begin
return to_Text (to_String (From), capacity => 1);
end to_Text_1;
function to_Text_2 (From : in String) return Item_2
is
begin
return to_Text (From, capacity => 2);
end to_Text_2;
function to_Text_2 (From : in Text.item) return Item_2
is
begin
return to_Text (to_String (From), capacity => 2);
end to_Text_2;
function to_Text_4 (From : in String) return Item_4
is
begin
return to_Text (From, capacity => 4);
end to_Text_4;
function to_Text_4 (From : in Text.item) return Item_4
is
begin
return to_Text (to_String (From), capacity => 4);
end to_Text_4;
function to_Text_8 (From : in String) return Item_8
is
begin
return to_Text (From, capacity => 8);
end to_Text_8;
function to_Text_8 (From : in Text.item) return Item_8
is
begin
return to_Text (to_String (From), capacity => 8);
end to_Text_8;
function to_Text_16 (From : in String) return Item_16
is
begin
return to_Text (From, capacity => 16);
end to_Text_16;
function to_Text_16 (From : in Text.item) return Item_16
is
begin
return to_Text (to_String (From), capacity => 16);
end to_Text_16;
function to_Text_32 (From : in String) return Item_32
is
begin
return to_Text (From, capacity => 32);
end to_Text_32;
function to_Text_32 (From : in Text.item) return Item_32
is
begin
return to_Text (to_String (From), capacity => 32);
end to_Text_32;
function to_Text_64 (From : in String) return Item_64
is
begin
return to_Text (From, capacity => 64);
end to_Text_64;
function to_Text_64 (From : in Text.item) return Item_64
is
begin
return to_Text (to_String (From), capacity => 64);
end to_Text_64;
function to_Text_128 (From : in String) return Item_128
is
begin
return to_Text (From, capacity => 128);
end to_Text_128;
function to_Text_128 (From : in Text.item) return Item_128
is
begin
return to_Text (to_String (From), capacity => 128);
end to_Text_128;
function to_Text_256 (From : in String) return Item_256
is
begin
return to_Text (From, capacity => 256);
end to_Text_256;
function to_Text_256 (From : in Text.item) return Item_256
is
begin
return to_Text (to_String (From), capacity => 256);
end to_Text_256;
function to_Text_512 (From : in String) return Item_512
is
begin
return to_Text (From, capacity => 512);
end to_Text_512;
function to_Text_512 (From : in Text.item) return Item_512
is
begin
return to_Text (to_String (From), capacity => 512);
end to_Text_512;
function to_Text_1k (From : in String) return Item_1k
is
begin
return to_Text (From, capacity => 1024);
end to_Text_1k;
function to_Text_1k (From : in Text.item) return Item_1k
is
begin
return to_Text (to_String (From), capacity => 1024);
end to_Text_1k;
function to_Text_2k (From : in String) return Item_2k
is
begin
return to_Text (From, capacity => 2 * 1024);
end to_Text_2k;
function to_Text_2k (From : in Text.item) return Item_2k
is
begin
return to_Text (to_String (From), capacity => 2 * 1024);
end to_Text_2k;
function to_Text_4k (From : in String) return Item_4k
is
begin
return to_Text (From, capacity => 4 * 1024);
end to_Text_4k;
function to_Text_4k (From : in Text.item) return Item_4k
is
begin
return to_Text (to_String (From), capacity => 4 * 1024);
end to_Text_4k;
function to_Text_8k (From : in String) return Item_8k
is
begin
return to_Text (From, capacity => 8 * 1024);
end to_Text_8k;
function to_Text_8k (From : in Text.item) return Item_8k
is
begin
return to_Text (to_String (From), capacity => 8 * 1024);
end to_Text_8k;
function to_Text_16k (From : in String) return Item_16k
is
begin
return to_Text (From, capacity => 16 * 1024);
end to_Text_16k;
function to_Text_16k (From : in Text.item) return Item_16k
is
begin
return to_Text (to_String (From), capacity => 16 * 1024);
end to_Text_16k;
function to_Text_32k (From : in String) return Item_32k
is
begin
return to_Text (From, capacity => 32 * 1024);
end to_Text_32k;
function to_Text_32k (From : in Text.item) return Item_32k
is
begin
return to_Text (to_String (From), capacity => 32 * 1024);
end to_Text_32k;
function to_Text_64k (From : in String) return Item_64k
is
begin
return to_Text (From, capacity => 64 * 1024);
end to_Text_64k;
function to_Text_64k (From : in Text.item) return Item_64k
is
begin
return to_Text (to_String (From), capacity => 64 * 1024);
end to_Text_64k;
function to_Text_128k (From : in String) return Item_128k
is
begin
return to_Text (From, capacity => 128 * 1024);
end to_Text_128k;
function to_Text_128k (From : in Text.item) return Item_128k
is
begin
return to_Text (to_String (From), capacity => 128 * 1024);
end to_Text_128k;
function to_Text_256k (From : in String) return Item_256k
is
begin
return to_Text (From, capacity => 256 * 1024);
end to_Text_256k;
function to_Text_256k (From : in Text.item) return Item_256k
is
begin
return to_Text (to_String (From), capacity => 256 * 1024);
end to_Text_256k;
function to_Text_512k (From : in String) return Item_512k
is
begin
return to_Text (From, capacity => 512 * 1024);
end to_Text_512k;
function to_Text_512k (From : in Text.item) return Item_512k
is
begin
return to_Text (to_String (From), capacity => 512 * 1024);
end to_Text_512k;
function to_Text_1m (From : in String) return Item_1m
is
begin
return to_Text (From, capacity => 1024 * 1024);
end to_Text_1m;
function to_Text_1m (From : in Text.item) return Item_1m
is
begin
return to_Text (to_String (From), capacity => 1024 * 1024);
end to_Text_1m;
function to_Text_2m (From : in String) return Item_2m
is
begin
return to_Text (From, capacity => 2 * 1024 * 1024);
end to_Text_2m;
function to_Text_2m (From : in Text.item) return Item_2m
is
begin
return to_Text (to_String (From), capacity => 2 * 1024 * 1024);
end to_Text_2m;
function to_Text_4m (From : in String) return Item_4m
is
begin
return to_Text (From, capacity => 4 * 1024 * 1024);
end to_Text_4m;
function to_Text_4m (From : in Text.item) return Item_4m
is
begin
return to_Text (to_String (From), capacity => 4 * 1024 * 1024);
end to_Text_4m;
function to_Text_8m (From : in String) return Item_8m
is
begin
return to_Text (From, capacity => 8 * 1024 * 1024);
end to_Text_8m;
function to_Text_8m (From : in Text.item) return Item_8m
is
begin
return to_Text (to_String (From), capacity => 8 * 1024 * 1024);
end to_Text_8m;
function to_Text_16m (From : in String) return Item_16m
is
begin
return to_Text (From, capacity => 16 * 1024 * 1024);
end to_Text_16m;
function to_Text_16m (From : in Text.item) return Item_16m
is
begin
return to_Text (to_String (From), capacity => 16 * 1024 * 1024);
end to_Text_16m;
function to_Text_32m (From : in String) return Item_32m
is
begin
return to_Text (From, capacity => 32 * 1024 * 1024);
end to_Text_32m;
function to_Text_32m (From : in Text.item) return Item_32m
is
begin
return to_Text (to_String (From), capacity => 32 * 1024 * 1024);
end to_Text_32m;
function to_Text_64m (From : in String) return Item_64m
is
begin
return to_Text (From, capacity => 64 * 1024 * 1024);
end to_Text_64m;
function to_Text_64m (From : in Text.item) return Item_64m
is
begin
return to_Text (to_String (From), capacity => 64 * 1024 * 1024);
end to_Text_64m;
function to_Text_128m (From : in String) return Item_128m
is
begin
return to_Text (From, capacity => 128 * 1024 * 1024);
end to_Text_128m;
function to_Text_128m (From : in Text.item) return Item_128m
is
begin
return to_Text (to_String (From), capacity => 128 * 1024 * 1024);
end to_Text_128m;
function to_Text_256m (From : in String) return Item_256m
is
begin
return to_Text (From, capacity => 256 * 1024 * 1024);
end to_Text_256m;
function to_Text_256m (From : in Text.item) return Item_256m
is
begin
return to_Text (to_String (From), capacity => 256 * 1024 * 1024);
end to_Text_256m;
function to_Text_512m (From : in String) return Item_512m
is
begin
return to_Text (From, capacity => 512 * 1024 * 1024);
end to_Text_512m;
function to_Text_512m (From : in Text.item) return Item_512m
is
begin
return to_Text (to_String (From), capacity => 512 * 1024 * 1024);
end to_Text_512m;
end lace.Text.forge;