struct pointing to another struct?

I

inhahe

say i have this definition:

1 typedef struct SDL_Surface {
2 Uint32 flags; /* Read-only */
3 SDL_PixelFormat *format; /* Read-only */
4 int w, h; /* Read-only */
5 Uint16 pitch; /* Read-only */
6 void *pixels; /* Read-write */
7 SDL_Rect clip_rect; /* Read-only */
8 int refcount; /* Read-mostly */
9
10 /* This structure also contains private fields not shown here
*/
11 } SDL_Surface;

notice two pointers, format and pixels.
say format has this definition.


1 typedef struct {
2 SDL_Palette *palette;
3 Uint8 BitsPerPixel;
4 Uint8 BytesPerPixel;
5 Uint8 Rloss, Gloss, Bloss, Aloss;
6 Uint8 Rshift, Gshift, Bshift, Ashift;
7 Uint32 Rmask, Gmask, Bmask, Amask;
8 Uint32 colorkey;
9 Uint8 alpha;
10 } SDL_PixelFormat;

so say i want to create a mock sdl handle and pass it to some library
function that requires an sdl handle. (would it even work? would i
need to use an SDL_SWSURFACE?)

so i make the pixelformat data using struct.pack, and make the surface
data using struct.pack, but how do i link the surface data to the
pixelformat data? if i just use id() it'll give me the memory address
of the "box" for the string and not the string data itself. thanks.
 
P

Peter Otten

inhahe said:
say i have this definition:

1 typedef struct SDL_Surface {
2 Uint32 flags; /* Read-only */
3 SDL_PixelFormat *format; /* Read-only */
4 int w, h; /* Read-only */
5 Uint16 pitch; /* Read-only */
6 void *pixels; /* Read-write */
7 SDL_Rect clip_rect; /* Read-only */
8 int refcount; /* Read-mostly */
9
10 /* This structure also contains private fields not shown here
*/
11 } SDL_Surface;

notice two pointers, format and pixels.
say format has this definition.


1 typedef struct {
2 SDL_Palette *palette;
3 Uint8 BitsPerPixel;
4 Uint8 BytesPerPixel;
5 Uint8 Rloss, Gloss, Bloss, Aloss;
6 Uint8 Rshift, Gshift, Bshift, Ashift;
7 Uint32 Rmask, Gmask, Bmask, Amask;
8 Uint32 colorkey;
9 Uint8 alpha;
10 } SDL_PixelFormat;

so say i want to create a mock sdl handle and pass it to some library
function that requires an sdl handle. (would it even work? would i
need to use an SDL_SWSURFACE?)

so i make the pixelformat data using struct.pack, and make the surface
data using struct.pack, but how do i link the surface data to the
pixelformat data? if i just use id() it'll give me the memory address
of the "box" for the string and not the string data itself. thanks.

I think you are looking at the wrong module; you need ctypes, not struct.

http://docs.python.org/library/ctypes.html

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top