------------------------------------------------------------------------------ -- GtkAda - Ada95 binding for the Gimp Toolkit -- -- -- -- Copyright (C) 1998-2014, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, or (at your option) any later -- -- version. This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- -- -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- <http://www.gnu.org/licenses/>. -- -- -- ------------------------------------------------------------------------------ -- <description> -- -- This package provides GtkAda specific types and their associated functions. -- -- </description> with Interfaces.C.Strings; package Gtkada.Types is
pragma Preelaborate; Data_Error : exception;
subtype Chars_Ptr is Interfaces.C.Strings.chars_ptr;
subtype Chars_Ptr_Array is Interfaces.C.Strings.chars_ptr_array;
procedure g_free (Mem : Chars_Ptr);
-- Free a C string returned from Gtk Null_Ptr : Chars_Ptr renames Interfaces.C.Strings.Null_Ptr;
function Null_Array return Chars_Ptr_Array;
-- Return a null array. pragma Inline (Null_Array);
------------------------------------- -- Handling of arrays of Strings -- ------------------------------------- -- The following functions provide a very convenient way to create -- C arrays of null terminated strings in Ada. -- -- You can either create such a String on the fly, or declare a variable: -- -- Signals : Chars_Ptr_Array := "clicked" + "missed" + "new signal"; -- -- which corresponds to the C declaration: -- -- char *signals[] = @{"clicked", "missed", "new signal"@}; -- -- Note that you still need to manually call Free (Signals) if you want to -- release the memory dynamically allocated by the "+" functions. function "+" (S1, S2 : String) return Chars_Ptr_Array;
-- Create an array containing S1 and S2. -- Note that this function allocates memory to store S1 and S2 as null -- terminated Strings. The user is responsible for calling Free on the -- resulting array. function "+" (S1 : Chars_Ptr_Array; S2 : String) return Chars_Ptr_Array;
-- Append S2 to S1. -- Note that this function allocates memory to store S2 as a null -- terminated Strings. The user is responsible for calling Free on the -- resulting array. function "+" (S1 : Chars_Ptr_Array; S2 : Chars_Ptr) return Chars_Ptr_Array;
-- Append S2 to S1. -- Note that this function allocates memory to store S2 as a null -- terminated Strings. The user is responsible for calling Free on the -- resulting array. function "+" (S1 : Chars_Ptr; S2 : String) return Chars_Ptr_Array;
-- Create an array containing S1 and S2. -- Note that this function allocates memory to store S2 as a null -- terminated string. The user is responsible for calling Free on the -- resulting array. procedure Free (A : in out Chars_Ptr_Array);
-- Free all the strings in A. private pragma Import (C, g_free, "g_free");
end Gtkada.Types;