Gestire un Puntatore con le funzioni esterne del API di Glib

Da Gambas-it.org - Wikipedia.
Versione del 28 ott 2015 alle 16:31 di Vuott (Discussione | contributi) (Creata pagina con "Con alcune risorse della libreria di '''Glib-2.0''' è possibile creare e dereferenziare una variabile di tipo ''Puntatore'' che punta ad una variabile di tipo Intero (''Integ...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Con alcune risorse della libreria di Glib-2.0 è possibile creare e dereferenziare una variabile di tipo Puntatore che punta ad una variabile di tipo Intero (Integer), nonché modificare il valore contenuto da una varibile di tipo Intero puntata da un Puntatore.

E' necessario avere installata e richiamare nel programma Gambas la libreria: libglib-2.0.so


Mostriamo un esempio pratico:

Library "libglib-2.0"

' void g_atomic_int_set (volatile gint *atomic, gint newval)
' Sets the value of atomic to newval.
Private Extern g_atomic_int_set(atomic As Pointer, newval As Integer)

' gint g_atomic_int_get (const volatile gint *atomic)
' Gets the current value of atomic.
Private Extern g_atomic_int_get(atomic As Pointer) As Integer


Public Sub Main()
 
 Dim p As Pointer
 Dim i As Integer
 
  p = Alloc(SizeOf(gb.Integer))
  
' Modifichiamo il valore contenuto dalla variabile di tipo Intero puntata dal "Puntatore":
  g_atomic_int_set(p, 99999)
   
' Dereferenziamo il "Puntatore" con la funzione di Glib:
  i = g_atomic_int_get(p)
   
  Print i
   
  
' Per verifica, dereferenziamo il "Puntatore" con la funzione propria di Gambas:
  Print Int@(p)
   
  Free(p)
  
End



Riferimenti