SDL_RWread

Nom

SDL_RWread -- Une macro d'aide pour simplifier la lecture à partir d'une structure SDL_RWops

Synopsis

   1 #include "SDL.h"
   2 
   3 #define SDL_RWread(ctx, ptr, size, n)   (ctx)->read(ctx, ptr, size, n)

Description

SDL_RWread est une macro d'aide qui appelle la fonction pointée par un membre de lecture de la structure SDL_RWops. Elle prend les 4 mêmes paramètres que le pointeur de fonction:

  1. Un pointeur vers une structure SDL_RWops
  2. Un pointeur vers la zone mémoire où il faut lire des données
  3. La taille de chaque bloc mémoire à lire
  4. Le nombre maximum de blocs mémoire à lire (elle peut en lire moins)

Valeur de retour

Elle retourne le nombre de blocs lus, ou -1 si la lecture a échoué.

Note: Ce n'est pas une fonction. C'est une macro C qui appelle la fonction qui existe dans le membre 'read' d'une structure SDL_RWops.

Bogue: Depuis SDL 1.2.9, cette fonction renvoie des valeurs incompatibles, qui dépendent du type du flot sous-jacent. Lire ce mail pour plus de détails, ou ici (en anglais):

"Reading from memory was not consistant with how reading from files worked. A file of 55 bytes stored into 'ptr' by using 6 sets of 10 bytes would copy 55 bytes into 'ptr' and SDL_RWread would return 5. But the same act done on mem RWop would result in 50 bytes copied and 5 returned."

Ce bogue n'est pas résolu.

Exemple

   1 #include <stdio.h>
   2 #include "SDL_rwops.h"
   3 int main()
   4 {
   5   int blocks;
   6   char buf[256];
   7   SDL_RWops *rw=SDL_RWFromFile("file.bin","rb");
   8   if(rw==NULL)
   9   {
  10     fprintf(stderr,"Impossible d'ouvrir file.bin\n");
  11     return(1);
  12   }
  13 
  14   blocks=SDL_RWread(rw,buf,16,256/16);
  15   SDL_RWclose(rw);
  16   if(blocks<0)
  17   {
  18     fprintf(stderr,"Impossible de lire à partir de file.bin\n");
  19     return(2);
  20   }
  21 
  22   fprintf(stderr,"%d blocs de 16 bytes ont été lus\n",blocks);
  23   return(0);
  24 }

Voir aussi

SDL_RWseek, SDL_RWwrite, SDL_RWclose, SDL_RWFromFile

SDLDoc-fr/SDL_RWread (last edited 2009-02-14 13:55:52 by JohnnyJazeix)