aboutsummaryrefslogtreecommitdiff
path: root/src/fltk-filenames.adb
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-01-21 21:04:54 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2025-01-21 21:04:54 +1300
commitb4438b2fbe895694be98e6e8426103deefc51448 (patch)
tree760d86cd7c06420a91dad102cc9546aee73146fc /src/fltk-filenames.adb
parenta4703a65b015140cd4a7a985db66264875ade734 (diff)
Split public API and private implementation files into different directories
Diffstat (limited to 'src/fltk-filenames.adb')
-rw-r--r--src/fltk-filenames.adb492
1 files changed, 0 insertions, 492 deletions
diff --git a/src/fltk-filenames.adb b/src/fltk-filenames.adb
deleted file mode 100644
index 7674323..0000000
--- a/src/fltk-filenames.adb
+++ /dev/null
@@ -1,492 +0,0 @@
-
-
--- Programmed by Jedidiah Barber
--- Released into the public domain
-
-
-with
-
- Ada.Assertions,
- Interfaces.C.Strings;
-
-use type
-
- Interfaces.C.int,
- Interfaces.C.Strings.chars_ptr;
-
-
-package body FLTK.Filenames is
-
-
- package Chk renames Ada.Assertions;
-
-
-
-
- ------------------------
- -- Constants From C --
- ------------------------
-
- error_bsize : constant Interfaces.C.int;
- pragma Import (C, error_bsize, "error_bsize");
-
-
-
-
- ------------------------
- -- Functions From C --
- ------------------------
-
- procedure free_filename_file_list
- (L : in Storage.Integer_Address;
- N : in Interfaces.C.int);
- pragma Import (C, free_filename_file_list, "free_filename_file_list");
- pragma Inline (free_filename_file_list);
-
- function filename_dname
- (L : in Storage.Integer_Address;
- N : in Interfaces.C.int)
- return Interfaces.C.Strings.chars_ptr;
- pragma Import (C, filename_dname, "filename_dname");
- pragma Inline (filename_dname);
-
-
-
-
- procedure filename_decode_uri
- (URI : in Interfaces.C.char_array);
- pragma Import (C, filename_decode_uri, "filename_decode_uri");
- pragma Inline (filename_decode_uri);
-
- function filename_absolute
- (To : in Interfaces.C.char_array;
- Len : in Interfaces.C.int;
- From : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_absolute, "filename_absolute");
- pragma Inline (filename_absolute);
-
- function filename_expand
- (To : in Interfaces.C.char_array;
- Len : in Interfaces.C.int;
- From : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_expand, "filename_expand");
- pragma Inline (filename_expand);
-
- function filename_ext
- (Buf : in Interfaces.C.char_array)
- return Interfaces.C.Strings.chars_ptr;
- pragma Import (C, filename_ext, "filename_ext");
- pragma Inline (filename_ext);
-
- function filename_isdir
- (Name : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_isdir, "filename_isdir");
- pragma Inline (filename_isdir);
-
- function filename_list
- (D : in Interfaces.C.char_array;
- L : out Storage.Integer_Address;
- F : in Storage.Integer_Address)
- return Interfaces.C.int;
- pragma Import (C, filename_list, "filename_list");
- pragma Inline (filename_list);
-
- function filename_match
- (Name, Pattern : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_match, "filename_match");
- pragma Inline (filename_match);
-
- function filename_name
- (Name : in Interfaces.C.char_array)
- return Interfaces.C.Strings.chars_ptr;
- pragma Import (C, filename_name, "filename_name");
- pragma Inline (filename_name);
-
- function filename_relative
- (To : in Interfaces.C.char_array;
- Len : in Interfaces.C.int;
- From : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_relative, "filename_relative");
- pragma Inline (filename_relative);
-
- function filename_setext
- (To : in Interfaces.C.char_array;
- Len : in Interfaces.C.int;
- Ext : in Interfaces.C.char_array)
- return Interfaces.C.Strings.chars_ptr;
- pragma Import (C, filename_setext, "filename_setext");
- pragma Inline (filename_setext);
-
- function filename_open_uri
- (U, M : in Interfaces.C.char_array;
- Len : in Interfaces.C.int)
- return Interfaces.C.int;
- pragma Import (C, filename_open_uri, "filename_open_uri");
- pragma Inline (filename_open_uri);
-
-
-
-
- function filename_alphasort
- (A, B : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_alphasort, "filename_alphasort");
-
- function filename_casealphasort
- (A, B : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_casealphasort, "filename_casealphasort");
-
- function filename_numericsort
- (A, B : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_numericsort, "filename_numericsort");
-
- function filename_casenumericsort
- (A, B : in Interfaces.C.char_array)
- return Interfaces.C.int;
- pragma Import (C, filename_casenumericsort, "filename_casenumericsort");
-
-
-
-
- ------------------------------
- -- Comparison Subprograms --
- ------------------------------
-
- function Alpha_Sort
- (A, B : in String)
- return Comparison
- is
- Result : Interfaces.C.int :=
- filename_alphasort (Interfaces.C.To_C (A), Interfaces.C.To_C (B));
- begin
- pragma Assert
- (Result in Comparison'Pos (Comparison'First) .. Comparison'Pos (Comparison'Last));
- return Comparison'Val (Result);
- exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
- end Alpha_Sort;
-
-
- function Case_Alpha_Sort
- (A, B : in String)
- return Comparison
- is
- Result : Interfaces.C.int :=
- filename_casealphasort (Interfaces.C.To_C (A), Interfaces.C.To_C (B));
- begin
- pragma Assert
- (Result in Comparison'Pos (Comparison'First) .. Comparison'Pos (Comparison'Last));
- return Comparison'Val (Result);
- exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
- end Case_Alpha_Sort;
-
-
- function Numeric_Sort
- (A, B : in String)
- return Comparison
- is
- Result : Interfaces.C.int :=
- filename_numericsort (Interfaces.C.To_C (A), Interfaces.C.To_C (B));
- begin
- pragma Assert
- (Result in Comparison'Pos (Comparison'First) .. Comparison'Pos (Comparison'Last));
- return Comparison'Val (Result);
- exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
- end Numeric_Sort;
-
-
- function Case_Numeric_Sort
- (A, B : in String)
- return Comparison
- is
- Result : Interfaces.C.int :=
- filename_casenumericsort (Interfaces.C.To_C (A), Interfaces.C.To_C (B));
- begin
- pragma Assert
- (Result in Comparison'Pos (Comparison'First) .. Comparison'Pos (Comparison'Last));
- return Comparison'Val (Result);
- exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
- end Case_Numeric_Sort;
-
-
-
-
- ---------------------------
- -- Listing Subprograms --
- ---------------------------
-
- procedure Finalize
- (This : in out File_List) is
- begin
- if This.Void_Ptr /= Null_Pointer and This.Needs_Dealloc then
- free_filename_file_list (This.Void_Ptr, This.Entries);
- This.Void_Ptr := Null_Pointer;
- end if;
- end Finalize;
-
-
- function Length
- (This : in File_List)
- return Natural is
- begin
- return Natural (This.Entries);
- end Length;
-
-
- function Item
- (This : in File_List;
- Index : in Positive)
- return Path_String is
- begin
- return Interfaces.C.Strings.Value
- (filename_dname (This.Void_Ptr, Interfaces.C.int (Index) - 1));
- end Item;
-
-
-
-
- --------------------
- -- Filename API --
- --------------------
-
- function Decode_URI
- (URI : in Path_String)
- return Path_String
- is
- C_Ptr : Interfaces.C.char_array := Interfaces.C.To_C (URI);
- begin
- filename_decode_uri (C_Ptr);
- return Interfaces.C.To_Ada (C_Ptr);
- end Decode_URI;
-
-
- procedure Open_URI
- (URI : in Path_String)
- is
- Message : Interfaces.C.char_array (1 .. Interfaces.C.size_t (error_bsize)) :=
- (others => Interfaces.C.char'Val (0));
- Result : Interfaces.C.int := filename_open_uri
- (Interfaces.C.To_C (URI),
- Message,
- error_bsize);
- begin
- if Result = 0 then
- raise Open_URI_Error with "Error: " & Interfaces.C.To_Ada (Message);
- else
- pragma Assert (Result = 1);
- end if;
- exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
- end Open_URI;
-
-
-
-
- function Absolute
- (Name : in Path_String)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_absolute
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- return Interfaces.C.To_Ada (Result);
- end Absolute;
-
-
- function Absolute
- (Name : in Path_String;
- Changed : out Boolean)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_absolute
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- Changed := Code /= 0;
- return Interfaces.C.To_Ada (Result);
- end Absolute;
-
-
- function Relative
- (Name : in Path_String)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_relative
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- return Interfaces.C.To_Ada (Result);
- end Relative;
-
-
- function Relative
- (Name : in Path_String;
- Changed : out Boolean)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_relative
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- Changed := Code /= 0;
- return Interfaces.C.To_Ada (Result);
- end Relative;
-
-
- function Expand
- (Name : in Path_String)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_expand
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- return Interfaces.C.To_Ada (Result);
- end Expand;
-
-
- function Expand
- (Name : in Path_String;
- Changed : out Boolean)
- return Path_String
- is
- Result : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Code : Interfaces.C.int := filename_expand
- (Result,
- Interfaces.C.int (Max_Path_Length),
- Interfaces.C.To_C (Name));
- begin
- Changed := Code /= 0;
- return Interfaces.C.To_Ada (Result);
- end Expand;
-
-
-
-
- function Base_Name
- (Name : in Path_String)
- return Path_String
- is
- Data : Interfaces.C.char_array := Interfaces.C.To_C (Name);
- begin
- return Interfaces.C.Strings.Value (filename_name (Data));
- end Base_Name;
-
-
- function Extension
- (Name : in Path_String)
- return Path_String
- is
- Data : Interfaces.C.char_array := Interfaces.C.To_C (Name);
- Result : Interfaces.C.Strings.chars_ptr := filename_ext (Data);
- begin
- if Result = Interfaces.C.Strings.Null_Ptr then
- return "";
- else
- return Interfaces.C.Strings.Value (Result);
- end if;
- end Extension;
-
-
- function Set_Extension
- (Name : in Path_String;
- Suffix : in String)
- return Path_String
- is
- Data : Interfaces.C.char_array (1 .. Interfaces.C.size_t (Max_Path_Length)) :=
- (others => Interfaces.C.char'Val (0));
- Result : Interfaces.C.Strings.chars_ptr;
- begin
- Data (1 .. Name'Length) := Interfaces.C.To_C (Name);
- Result := filename_setext
- (Data,
- Data'Length,
- Interfaces.C.To_C (Suffix));
- return Interfaces.C.Strings.Value (Result);
- end Set_Extension;
-
-
-
-
- function Is_Directory
- (Name : in Path_String)
- return Boolean is
- begin
- return filename_isdir (Interfaces.C.To_C (Name)) /= 0;
- end Is_Directory;
-
-
- Current_Sort : Compare_Function;
-
- function Compare_Hook
- (DA, DB : in Storage.Integer_Address)
- return Interfaces.C.int;
-
- pragma Convention (C, Compare_Hook);
-
- function Compare_Hook
- (DA, DB : in Storage.Integer_Address)
- return Interfaces.C.int
- is
- Result : Comparison := Current_Sort
- (Interfaces.C.Strings.Value (filename_dname (DA, 0)),
- Interfaces.C.Strings.Value (filename_dname (DB, 0)));
- begin
- return Comparison'Pos (Result) - 1;
- end Compare_Hook;
-
- function Get_Listing
- (Name : in Path_String;
- Sort : in not null Compare_Function := Numeric_Sort'Access)
- return File_List is
- begin
- Current_Sort := Sort;
- return This : File_List do
- This.Entries := filename_list
- (Interfaces.C.To_C (Name),
- This.Void_Ptr,
- Storage.To_Integer (Compare_Hook'Address));
- end return;
- end Get_Listing;
-
-
-
-
- function Match
- (Input, Pattern : in String)
- return Boolean is
- begin
- return filename_match (Interfaces.C.To_C (Input), Interfaces.C.To_C (Pattern)) /= 0;
- end Match;
-
-
-end FLTK.Filenames;
-
-