Index

Package: Bindings

Description

package Gtkada.Bindings is
This is a unit purely internal to GtkAda, to ease binding and avoid code duplication. Do not use in your own applications, since the interface might change from release to release. See also Gtkada.Types

Packages

ICS (renames Strings)

package ICS renames Interfaces.C.Strings;

Gint_Arrays (new Gtkada.C.Unbounded_Arrays)

package Gint_Arrays is new Gtkada.C.Unbounded_Arrays
     (Glib.Gint, 0, Natural, Glib.Gint_Array);

Pspec_Arrays (new Gtkada.C.Unbounded_Arrays)

package Pspec_Arrays is new Gtkada.C.Unbounded_Arrays
     (Glib.Param_Spec, null, Natural, Glib.Param_Spec_Array);

Types

chars_ptr_array_access

type chars_ptr_array_access
     is access ICS.chars_ptr_array (Interfaces.C.size_t);

GClosure

type GClosure is new Glib.C_Proxy;

C_Marshaller

type C_Marshaller is access procedure
     (Closure         : GClosure;
      Return_Value    : Glib.Values.GValue;  --  Will contain returned value
      N_Params        : Glib.Guint;          --  Number of entries in Params
      Params          : Glib.Values.C_GValues;
      Invocation_Hint : System.Address;
      Marsh_Data      : System.Address);

Exception_Handler

type Exception_Handler is not null access procedure
      (Occurrence : Ada.Exceptions.Exception_Occurrence);

Subprograms & Entries

Generic_To_Address_Or_Null (generic)

generic type T is private;Null_T: T;with function "=" 
(T1, T2: T) return Boolean is <>;
function Generic_To_Address_Or_Null (Val: System.Address) return System.Address;
Return either a Null_Address or a pointer to Val, depending on whether Val is the null value for the type. In all cases, Val is supposed to be an access to T. In Ada2012, these could be replaced with expression functions instead.

Value_And_Free

function Value_And_Free 
(Str: Interfaces.C.Strings.chars_ptr) return String;
Returns the value stored in Str, and free the memory occupied by Str.

Value_Allowing_Null

function Value_Allowing_Null 
(Str: Interfaces.C.Strings.chars_ptr) return String;
Return the value stored in Str, and an empty string if Str is null.

String_Or_Null

function String_Or_Null 
(S: String) return ICS.chars_ptr;
Return Null_Ptr if S is the empty string, or a newly allocated string otherwise. This is intended mostly for the binding itself.

g_strfreev

procedure g_strfreev 
(Str_Array: chars_ptr_array_access);
Thin binding to C function of the same name. Frees a null-terminated array of strings, and the array itself. If called on a null value, simply return.

To_String_List

function To_String_List 
(C: ICS.chars_ptr_array) return GNAT.Strings.String_List;
Converts C into a String_List. Returned value must be freed by caller, as well as C. C is NULL terminated.

To_String_List_And_Free

function To_String_List_And_Free 
(C: chars_ptr_array_access) return GNAT.Strings.String_List;
Converts C into a String_List, and frees C. Returned value must be freed by caller.

To_String_List

function To_String_List 
(C: ICS.chars_ptr_array;
N: Glib.Gint) return GNAT.Strings.String_List;
Converts C into a String_List. N is the number of elements in C. Returned value must be freed by caller, as well as C.

From_String_List

function From_String_List 
(C: GNAT.Strings.String_List) return ICS.chars_ptr_array;
Converts C into a chars_ptr_array. Returned value must be freed by caller, as well as C.

To_Chars_Ptr

function To_Chars_Ptr 
(C: chars_ptr_array_access) return ICS.chars_ptr_array;
Return a bounded array that contains the same strings as C (so you shouldn't free C). 'Last applies to the result, whereas it doesn't to C.

To_Gint_Array_Zero_Terminated

function To_Gint_Array_Zero_Terminated 
(Arr: Gint_Arrays.Unbounded_Array_Access) return Glib.Gint_Array;
Converts Arr, stopping at the first 0 encountered

CClosure_New

function CClosure_New 
(Callback: System.Address;
User_Data: System.Address;
Destroy: System.Address) return GClosure;

Set_Marshal

procedure Set_Marshal 
(Closure: GClosure;
Marshaller: C_Marshaller);

Set_Meta_Marshal

procedure Set_Meta_Marshal 
(Closure: GClosure;
Marsh_Data: System.Address;
Marshaller: C_Marshaller);

Get_Data

function Get_Data 
(Closure: GClosure) return System.Address;

Get_Callback

function Get_Callback 
(C: GClosure) return System.Address;

Watch_Closure

procedure Watch_Closure 
(Object: System.Address;
Closure: GClosure);

Unchecked_Do_Signal_Connect

procedure Unchecked_Do_Signal_Connect 
(Object: not null access Glib.Object.GObject_Record'Class;
C_Name: Glib.Signal_Name;
Marshaller: C_Marshaller;
Handler: System.Address;
Destroy: System.Address := System.Null_Address;
After: Boolean := False;
Slot_Object: access Glib.Object.GObject_Record'Class := null);

Unchecked_Do_Signal_Connect

procedure Unchecked_Do_Signal_Connect 
(Object: Glib.Types.GType_Interface;
C_Name: Glib.Signal_Name;
Marshaller: C_Marshaller;
Handler: System.Address;
Destroy: System.Address := System.Null_Address;
After: Boolean := False;
Slot_Object: access Glib.Object.GObject_Record'Class := null);
Same as above, but this removes a number of check, like whether the signal exists, and whether the user has properly passed a procedure or function depending on the signal type. * C_Name must be NUL-terminated.

Set_Value

procedure Set_Value 
(Value: Glib.Values.GValue;
Val: System.Address);

Set_On_Exception

procedure Set_On_Exception 
(Handler: Exception_Handler);
See user documentation in Gtk.Handlers.Set_On_Exception

Process_Exception

procedure Process_Exception 
(E: Ada.Exceptions.Exception_Occurrence);
Process the exception through the handler set by Set_On_Exception. This procedure never raises an exception.