added an incomplete and experimental file package
This commit is contained in:
		@ -7,13 +7,15 @@ with Slim_Stream;
 | 
			
		||||
with Wide_Stream;
 | 
			
		||||
with Ada.Text_IO;
 | 
			
		||||
with Ada.Unchecked_Deallocation;
 | 
			
		||||
with H2.Sysapi;
 | 
			
		||||
 | 
			
		||||
with Interfaces.C;
 | 
			
		||||
 | 
			
		||||
procedure scheme is
 | 
			
		||||
	--package Stream renames Wide_Stream;
 | 
			
		||||
	--package Scheme renames H2.Wide.Scheme;
 | 
			
		||||
 | 
			
		||||
	package Stream renames Slim_Stream;
 | 
			
		||||
	package Scheme renames H2.Slim.Scheme;
 | 
			
		||||
	package Stream renames Wide_Stream;
 | 
			
		||||
	package Scheme renames H2.Wide.Scheme;
 | 
			
		||||
	--package Stream renames Slim_Stream;
 | 
			
		||||
	--package Scheme renames H2.Slim.Scheme;
 | 
			
		||||
	
 | 
			
		||||
	Pool: aliased Storage.Global_Pool;
 | 
			
		||||
	SI: Scheme.Interpreter_Record;
 | 
			
		||||
@ -27,7 +29,7 @@ procedure scheme is
 | 
			
		||||
	--String_Stream: Stream.String_Input_Stream_Record := (Len => String'Length, Str => String, Pos => 0);
 | 
			
		||||
 | 
			
		||||
	--File_Name: aliased S.Object_Character_Array := "test.adb";
 | 
			
		||||
	File_Name: aliased constant Scheme.Object_Character_Array := "test.scm";
 | 
			
		||||
	File_Name: aliased constant Scheme.Object_Character_Array := "시험.scm";
 | 
			
		||||
	--File_Stream: Stream.File_Stream_Record (File_Name'Unchecked_Access);
 | 
			
		||||
	--File_Stream: Stream.File_Stream_Record := (Name => File_Name'Unchecked_Access);
 | 
			
		||||
	File_Stream: Stream.File_Stream_Record;
 | 
			
		||||
@ -35,10 +37,41 @@ procedure scheme is
 | 
			
		||||
   --procedure h2init;
 | 
			
		||||
   --pragma Import (C, h2init, "h2init");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
	--h2init;
 | 
			
		||||
 | 
			
		||||
declare
 | 
			
		||||
	package Sysapi is new H2.Sysapi (
 | 
			
		||||
		H2.Slim.Character,
 | 
			
		||||
		H2.Wide.Character,
 | 
			
		||||
		H2.Slim.String,
 | 
			
		||||
		H2.Wide.String,
 | 
			
		||||
		H2.Wide.Utf8.To_Unicode_String,
 | 
			
		||||
		H2.Wide.Utf8.From_Unicode_String);
 | 
			
		||||
 | 
			
		||||
	F: Sysapi.File_Pointer;
 | 
			
		||||
	M: Sysapi.Mode_Record;
 | 
			
		||||
	LG: Sysapi.Flag_Record;
 | 
			
		||||
begin
 | 
			
		||||
	Sysapi.File.Open (F, H2.Slim.String'("/etc/passwd"), LG, M);
 | 
			
		||||
	Sysapi.File.Close (F);
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
declare
 | 
			
		||||
 | 
			
		||||
	LC_ALL : constant Interfaces.C.int := 0;
 | 
			
		||||
	procedure setlocale (
 | 
			
		||||
		category : Interfaces.C.int;
 | 
			
		||||
		locale : Interfaces.C.char_array);
 | 
			
		||||
	pragma Import (C, setlocale);
 | 
			
		||||
	Empty : aliased Interfaces.C.char_array := (0 => Interfaces.C.nul);
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
	setlocale (LC_ALL, Empty);
 | 
			
		||||
end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	Scheme.Open (SI, 2_000_000, Pool'Unchecked_Access);
 | 
			
		||||
	--Scheme.Open (SI, null);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ with H2.Pool;
 | 
			
		||||
with Ada.Unchecked_Conversion;
 | 
			
		||||
 | 
			
		||||
with Ada.Text_IO; -- for debugging
 | 
			
		||||
with Ada.Exceptions;
 | 
			
		||||
 | 
			
		||||
package body Wide_Stream is
 | 
			
		||||
 | 
			
		||||
@ -54,9 +55,9 @@ Ada.Text_IO.Put_Line ("****** CLOSE WIDE STRING STREAM ******");
 | 
			
		||||
 | 
			
		||||
	procedure Open (Stream: in out File_Stream_Record) is
 | 
			
		||||
	begin
 | 
			
		||||
Ada.Text_IO.Put_Line (">>>>> OPEN WIDE FILE STREAM <<<<< " & Standard.String(Utf8.Unicode_To_Utf8(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
Ada.Text_IO.Put_Line (">>>>> OPEN WIDE FILE STREAM <<<<< " & Standard.String(Utf8.From_Unicode_String(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
		--Ada.Wide_Text_IO.Open (Stream.Handle, Ada.Wide_Text_IO.In_File, Ada.Characters.Conversions.To_String(Standard.Wide_String(Stream.Name.all)));
 | 
			
		||||
		Ada.Wide_Text_IO.Open (Stream.Handle, Ada.Wide_Text_IO.In_File, Standard.String(Utf8.Unicode_To_Utf8(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
		Ada.Wide_Text_IO.Open (Stream.Handle, Ada.Wide_Text_IO.In_File, Standard.String(Utf8.From_Unicode_String(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
	end Open;
 | 
			
		||||
 | 
			
		||||
	procedure Close (Stream: in out File_Stream_Record) is
 | 
			
		||||
@ -64,7 +65,17 @@ Ada.Text_IO.Put_Line (">>>>> OPEN WIDE FILE STREAM <<<<< " & Standard.String(Utf
 | 
			
		||||
		function To_Wide_String is new Ada.Unchecked_Conversion (S.Object_Character_Array, Wide_String);
 | 
			
		||||
	begin
 | 
			
		||||
--Ada.Wide_Text_IO.Put_Line (">>>>> CLOSE File STREAM <<<<< " & Standard.Wide_String(Stream.Name.all));
 | 
			
		||||
Ada.Text_IO.Put_Line (">>>>> CLOSE WIDE FILE STREAM <<<<< " & Standard.String(Utf8.Unicode_To_Utf8(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
Ada.Text_IO.Put_Line (">>>>> CLOSE WIDE FILE STREAM <<<<< " & Standard.String(Utf8.From_Unicode_String(Utf8.Unicode_String(Stream.Name.all))));
 | 
			
		||||
begin
 | 
			
		||||
	ada.wide_text_io.put_line (">> " & Standard.Wide_String(Utf8.To_Unicode_String(Utf8.From_Unicode_String(Utf8.Unicode_String(Stream.Name.all)))));
 | 
			
		||||
exception
 | 
			
		||||
	when Ex: others =>
 | 
			
		||||
		ada.text_io.put_line ("fuck - " & Ada.Exceptions.Exception_Name(Ex) & Ada.Exceptions.Exception_Information(Ex));
 | 
			
		||||
end;
 | 
			
		||||
ada.text_io.put_line (">>");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Ada.Wide_Text_IO.Close (Stream.Handle);
 | 
			
		||||
	end Close;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user