out
Intéressons-nous à la fonction waitpid:
lib C
fun waitpid(pid : Int32, status_ptr : Int32*, options : Int32) : Int32
end
D'après la documentation de la fonction:
Les informations de statut du processus fils sont stockées dans l'objet vers lequel status_ptr pointe, à moins que status_ptr soit un pointeur nul.
Nous pouvons utiliser cette fonction ainsi:
pid = ...
options = ...
status_ptr = uninitialized Int32
C.waitpid(pid, pointerof(status_ptr), options)
De cette manière on passe un pointeur status_ptr à la fonction pour qu'elle remplisse sa valeur.
Il y a une manière plus simple d'écrire ce qui précéde en utilisant un paramètre out:
pid = ...
options = ...
C.waitpid(pid, out status_ptr, options)
Le compilateur va automatiquement déclarer une variable status_ptr de type Int32, parce-que l'argument est un Int32*.
Cela fonctionnera pour tout type, tant que l'argument est un pointeur de ce type (et, bien sûr, tant que la fonction remplit la valeur vers laquelle pointe le pointeur).