Section courante

A propos

Section administrative du site

SDL_ALLOCRW

SDL : Alloue la lecture ou l'écriture
  SDL/SDL_rwops.h

Syntaxe

SDL_RWops *SDL_AllocRW(void);

Retour

Valeur Description
NULL Cette valeur permet d'indiquer qu'une erreur s'est produite.
variable Ces valeurs permet d'indiquer que l'opération s'est correctement effectué. La valeur correspond à un pointeur de mémoire alloué.

Description

Cette fonction permet d'allouer un vide et en dépopulant la structure «SDL_RWops».

Exemple

Voici un exemple permettant d'allouer les opérations :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <SDL/SDL_error.h>
  5. #include <SDL/SDL_rwops.h>
  6.  
  7. static int monpositionnement(SDL_RWops *context, int offset, int whence) {
  8.    SDL_SetError("Impossible de positionner l'operation");
  9.    return(-1);
  10. }
  11.  
  12. static int malecture(SDL_RWops *context, void *ptr, int size, int maxnum) {
  13.    memset(ptr,0,size*maxnum);
  14.    return(maxnum);
  15. }
  16.  
  17. static int monecriture(SDL_RWops *context, const void *ptr, int size, int num) {
  18.    return(num);
  19. }
  20.  
  21. static int mafermeture(SDL_RWops *context) {
  22.    if(context->type != 0xffeeffee) {
  23.        SDL_SetError("Impossible d'effectuer une fermeture");
  24.        return(-1);
  25.    }
  26.    free((*context).hidden.unknown.data1);
  27.    SDL_FreeRW(context);
  28.    return(0);
  29. }
  30.  
  31. int main()
  32. {
  33.    SDL_RWops *c = SDL_AllocRW();
  34.     if(c==NULL) return(NULL);
  35.     (*c).seek = monpositionnement;
  36.     (*c).read = malecture;
  37.     (*c).write= monecriture;
  38.     (*c).close= mafermeture;
  39.     (*c).type =0xffeeffee;
  40.     (*c).hidden.unknown.data1 = malloc(256);
  41.     return 0;
  42. }

N.B.: Ce programme est compilé avec l'option «-lSDLmain -lSDL» de l'IDE du programme Code::Blocks 10.05 situé dans «Project > Build options... > Debug > Linker settings > Other linker options:» ou en ligne de commande «gcc -lSDLmain -lSDL sdl_sample main.c». Sinon, la fonction « SDL_AllocRW» retournera un «undefined reference to 'aa_autoinit'» lors de la liaison du programme. De plus, une bibliothèque de développement comme «libsdl1.2-dev» devrait être installé.

Voir également

Langage de programmation - C pour Linux - Référence procédures et fonctions- SDL_FreeRW

Dernière mise à jour : Dimanche, le 22 mars 2015