Page 1 sur 1

[RESOLU] SDL-Wrapper une structure

Publié : mer. 09/mai/2007 11:10
par Progi1984
Voilà, j'ai un peu de mal à wrapper cette structure vers le purebasic :

Doc : http://fearyourself.developpez.com/tuto ... rwops/#LII

Code : Tout sélectionner

typedef struct SDL_RWops {
         int (*seek)(struct SDL_RWops *context, int offset, int whence);
         int (*read)(struct SDL_RWops *context, void *ptr, int size, int maxnum);
         int (*write)(struct SDL_RWops *context, const void *ptr, int size, int num);
         int (*close)(struct SDL_RWops *context);
 
         Uint32 type;
         union {
             struct {
                 int autoclose;
                 FILE *fp;
             } stdio;
             struct {
                 Uint8 *base;
                 Uint8 *here;
                 Uint8 *stop;
             } mem;
             struct {
                 void *data1;
             } unknown;
         } hidden;
 } SDL_RWops;

Publié : mer. 09/mai/2007 14:21
par Anonyme2
Je ne connais pratiquement rien en C, mais en ragardant la structure je propose ça, sachant que c'est peut-être faut :roll:

Code : Tout sélectionner

 Structure SDL_RWops
    *seek
    *Read
    *write
    *close
 
    StructureUnion
       autoclose.l
       *base  ; Uint8
       *data1 ; sans type
    EnstructureUnion
    StructureUnion 
       *fp    ; sur un file
       *here  ;Uint8
    EnstructureUnion
    *stop  ; Uint8
EndStructure
Ca serait bien qu'un codeurs nous donne la valeur sizeof() de SDL_RWops en C pour la comparer en PB

Publié : mer. 09/mai/2007 15:24
par erix14
Je verrai plutôt un truc comme ça :

Code : Tout sélectionner

Prototype PSeek(*This, offset, whence)
Prototype PRead(*This, *ptr, Size, maxnum)
Prototype PWrite(*This, *ptr, Size, Num)
Prototype PClose(*This)

Structure FILE
	_ptr.s
	_cnt.l
	_base.s
	_flag.l
	_file.l
	_charbuf.l
	_bufsiz.l
	_tmpfname.s
EndStructure
Structure stdio
	autoclose.l
	*fp.FILE
EndStructure
Structure mem
	*base.c
	*here.c
	*stop.c
EndStructure
Structure unknown
	*data1.l
EndStructure

Structure SDL_RWops
	Seek.PSeek
	Read.PRead
	Write.PWrite
	Close.PClose
	StructureUnion
		hidden1.stdio
		hidden2.mem
		hidden3.unknown
	EndStructureUnion
EndStructure 

Publié : mer. 09/mai/2007 15:30
par minirop
Denis a écrit :sachant que c'est peut-être faut :roll:
çà aussi c'est faux :p

voilà mon essai :

Code : Tout sélectionner

Structure SDL_RWops
	*seek
	*read
	*write
	*close
	
	type.l ; technique "&255"
	StructureUnion hidden
		Structure stdio
			autoclose.l
			fp.l
		EndStructure
		Structure stdio
			*base
			*here
			*stop
		EndStructure
		Structure unknown
			*data
		EndStructure
	EndStructureUnion
EndStructure
faut peut être déclarer read,seek,... avec des prototypes mais comme chacun à besoin de l'autre pour être déclaré, çà n'a pas de sens

Publié : mer. 09/mai/2007 15:31
par Anonyme2
Salut Erix14,
tu as peut-être raison, car il est dit que l'on crée une structure qui semble être différente en fonction de la fonction appelée. C'est ce que je ne comprenais pas bien dans sur le site donné en lien.

D'ailleurs, si Progi1984 arrive à faire marcher le truc, ça semble intéressant comme gestion des ressources.

Publié : mer. 09/mai/2007 15:57
par Progi1984
Pour informations, la structure d'Erix14 fonctionne nickel !

Publié : mer. 09/mai/2007 16:11
par Anonyme2
Donnes-nous une exemple qui marche :D

Publié : jeu. 10/mai/2007 7:41
par Progi1984
Dés que j'ai fini mon wrapper pour SDL, il vous sera fini un exemple !