Modificare il valore di una variabile Integer puntata da un Puntatore e sua dereferenziazione con le funzioni esterne del API di SDL2

Da Gambas-it.org - Wikipedia.

Utilizzando un paio di funzioni esterne del API della libreria SDL2 è possibile modificare il valore contenuto da una varibile di tipo Intero (Integer) puntata da un Puntatore, nonché dereferenziare tale Puntatore per ottenere il valore contenuto da quella variabile Intero.

E' necessario utilizzare la seguente libreria condivisa: "libSDL2-2.0.so.0.3000.0 ".

Mostriamo di seguito un semplice esempio pratico:

Library "libSDL2-2.0:0.3000.0"

' int SDL_AtomicGet(SDL_atomic_t* a)
' Gets the value of an atomic variable.
Private Extern SDL_AtomicGet(a As Pointer) As Integer

' int SDL_AtomicSet(SDL_atomic_t* a, int v)
' Sets an atomic variable to a value.
Private Extern SDL_AtomicSet(a As Pointer, v As Integer) As Integer


Public Sub Main()

 Dim i, orig, n As Integer
 Dim p As Pointer

 i = 1111

' Creiamo un "Puntatore" alla variabile di tipo "Intero":
 p = VarPtr(i)
  
' Modifichiamo il valore della variabile "Intero" puntata dal "Puntatore".
' La funzione "SDL_AtomicSet()" ritorna il valore originario della variabile "Intero":
 orig = SDL_AtomicSet(p, 2222)
 Print "Valore originario: "; orig
  
' Dereferenziamo il "Puntatore" per ottenere il valore ora contenuto dalla variabile di tipo "Intero":
 n = SDL_AtomicGet(p)

 Print "Valore nuovo: "; n
   
End


Riferimenti