GB_STREAM_DESC
struct GB_STREAM;
typedef
struct {
int (*
open)(struct GB_STREAM *stream, const char *path, int mode, void *data);
int (*
close)(struct GB_STREAM *stream);
int (*
read)(struct GB_STREAM *stream, char *buffer, long len);
int (*
write)(struct GB_STREAM *stream, char *buffer, long len);
int (*
seek)(struct GB_STREAM *stream, long long pos, int whence);
int (*
tell)(struct GB_STREAM *stream, long long *pos);
int (*
flush)(struct GB_STREAM *stream);
int (*
eof)(struct GB_STREAM *stream);
int (*
lof)(struct GB_STREAM *stream, long long *len);
int (*
handle)(struct GB_STREAM *stream);
}
GB_STREAM_DESC;
Ceci décrit une table de pointeurs de fonctions qui doit pointer vers les fonctions d’implémentation d’un flux.
Chaque flux possède un pointeur vers une telle structure. Voir
GB_STREAM pour plus de détails.
Fonction
|
Ce qui doit être fait
|
Ce qui doit être retourné
|
open
|
Ouvre le flux.
Cette fonction n’est jamais appelée directement par l’interpréteur, vous devez ouvrir le fichier vous-même, en instanciant l’objet Gambas Stream, et en renseignant la structure GB_STREAM de manière appropriée.
|
TRUE signifie le flux ne peut pas être ouvert, et FALSE signifie tout est OK.
|
close
|
Ferme le flux.
|
FALSE .
|
read
|
Lit len octets depuis le flux, et remplit le tampon avec eux.
|
TRUE signale une erreur, et FALSE signifie tout est OK.
Le code errno est employé par l’interpréteur pour choisir le message d’ erreur.
|
write
|
Ecrit les len octets situés dans le tampon _ vers le flux.
|
TRUE signale une erreur, et FALSE signifie tout est OK.
Le code errno est employé par l’interpréteur pour choisir le message d’ erreur.
|
seek
|
Saut à l’intérieur d’un flux.
-
pos est la position dans le flux.
-
whence est l’une des constantes suivante :
-
SEEK_SET , indique que pos est une position absolue.
-
SEEK_CUR , indique pos est un décalage depuis la position courante.
-
SEEK_END , indique pos est un décalage depuis la fin du flux.
|
TRUE si le saut est impossible, FALSE signifie tout est OK.
|
tell
|
Retourne dans pos la position courante à l’intérieur du flux.
|
TRUE si le saut est impossible, FALSE signifie tout est OK.
|
flush
|
Vide le flux.
|
TRUE s’il y a eu une erreur, FALSE signifie tout est OK.
Si le vidage n’a pas de sens pour votre flux, alors vous devez retourner FALSE .
|
eof
|
Test la fin de flux.
|
TRUE si la fin de flux est atteinte, FALSE sinon.
|
lof
|
Retourne dans len la longueur du flux.
Si ça n’a pas de sens pour votre flux, et si la fonction handle retourne un descripteur de fichier du système, vous pouvez vous faire retourner par l’interpréteur le nombre maximum d’octets qui peut être lu sur le flux , en mettant 0 dans len.
|
FALSE .
|
handle
|
Retourne le descripteur de fichier sous-jacent du système.
|
Le descripteur de fichier sous-jacent du système.
|
Voir aussi