Date: Mon, 3 May 2004 03:15:01 +0100
From: David Symmonds
Subject: SDL Typedef Structs
Hi, Thanks for the SDL libraries, I have been using them for about a year
now and they are really brilliant. One thing that I have just found whilst
using them through C++ (and needing forward declarations) is that when you
typedef structs you sometimes use
typedef struct Name
{
...
}Name;
e.g. SDL_Surface
and other times use
typedef struct
{
...
}Name;
e.g. SDL_Rect
The first type works fine, when I define a header file I can just put
'struct Name;' at the top and use the Name throughout. However, the second
type is harder to use in a header, and I haven't found a way yet, other than
to include 'SDL.h' in the header file (undesirable). Would there be any harm
in changing the definition of SDL_Rect and such like to the second form?
--- a/include/SDL_audio.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_audio.h Sun Jul 18 22:57:40 2004 +0000
@@ -45,7 +45,7 @@
#endif
/* The calculated values in this structure are calculated by SDL_OpenAudio() */
-typedef struct {
+typedef struct SDL_AudioSpec {
int freq; /* DSP frequency -- samples per second */
Uint16 format; /* Audio data format */
Uint8 channels; /* Number of channels: 1 mono, 2 stereo */
--- a/include/SDL_cdrom.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_cdrom.h Sun Jul 18 22:57:40 2004 +0000
@@ -62,7 +62,7 @@
/* Given a status, returns true if there's a disk in the drive */
#define CD_INDRIVE(status) ((int)status > 0)
-typedef struct {
+typedef struct SDL_CDtrack {
Uint8 id; /* Track number */
Uint8 type; /* Data or audio track */
Uint16 unused;
--- a/include/SDL_events.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_events.h Sun Jul 18 22:57:40 2004 +0000
@@ -106,14 +106,14 @@
#define SDL_ALLEVENTS 0xFFFFFFFF
/* Application visibility event structure */
-typedef struct {
+typedef struct SDL_ActiveEvent {
Uint8 type; /* SDL_ACTIVEEVENT */
Uint8 gain; /* Whether given states were gained or lost (1/0) */
Uint8 state; /* A mask of the focus states */
} SDL_ActiveEvent;
/* Keyboard event structure */
-typedef struct {
+typedef struct SDL_KeyboardEvent {
Uint8 type; /* SDL_KEYDOWN or SDL_KEYUP */
Uint8 which; /* The keyboard device index */
Uint8 state; /* SDL_PRESSED or SDL_RELEASED */
@@ -121,7 +121,7 @@
} SDL_KeyboardEvent;
/* Mouse motion event structure */
-typedef struct {
+typedef struct SDL_MouseMotionEvent {
Uint8 type; /* SDL_MOUSEMOTION */
Uint8 which; /* The mouse device index */
Uint8 state; /* The current button state */
@@ -131,7 +131,7 @@
} SDL_MouseMotionEvent;
/* Mouse button event structure */
-typedef struct {
+typedef struct SDL_MouseButtonEvent {
Uint8 type; /* SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */
Uint8 which; /* The mouse device index */
Uint8 button; /* The mouse button index */
@@ -140,7 +140,7 @@
} SDL_MouseButtonEvent;
/* Joystick axis motion event structure */
-typedef struct {
+typedef struct SDL_JoyAxisEvent {
Uint8 type; /* SDL_JOYAXISMOTION */
Uint8 which; /* The joystick device index */
Uint8 axis; /* The joystick axis index */
@@ -148,7 +148,7 @@
} SDL_JoyAxisEvent;
/* Joystick trackball motion event structure */
-typedef struct {
+typedef struct SDL_JoyBallEvent {
Uint8 type; /* SDL_JOYBALLMOTION */
Uint8 which; /* The joystick device index */
Uint8 ball; /* The joystick trackball index */
@@ -157,7 +157,7 @@
} SDL_JoyBallEvent;
/* Joystick hat position change event structure */
-typedef struct {
+typedef struct SDL_JoyHatEvent {
Uint8 type; /* SDL_JOYHATMOTION */
Uint8 which; /* The joystick device index */
Uint8 hat; /* The joystick hat index */
@@ -170,7 +170,7 @@
} SDL_JoyHatEvent;
/* Joystick button event structure */
-typedef struct {
+typedef struct SDL_JoyButtonEvent {
Uint8 type; /* SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
Uint8 which; /* The joystick device index */
Uint8 button; /* The joystick button index */
@@ -181,24 +181,24 @@
When you get this event, you are responsible for setting a new video
mode with the new width and height.
*/
-typedef struct {
+typedef struct SDL_ResizeEvent {
Uint8 type; /* SDL_VIDEORESIZE */
int w; /* New width */
int h; /* New height */
} SDL_ResizeEvent;
/* The "screen redraw" event */
-typedef struct {
+typedef struct SDL_ExposeEvent {
Uint8 type; /* SDL_VIDEOEXPOSE */
} SDL_ExposeEvent;
/* The "quit requested" event */
-typedef struct {
+typedef struct SDL_QuitEvent {
Uint8 type; /* SDL_QUIT */
} SDL_QuitEvent;
/* A user-defined event type */
-typedef struct {
+typedef struct SDL_UserEvent {
Uint8 type; /* SDL_USEREVENT through SDL_NUMEVENTS-1 */
int code; /* User defined event code */
void *data1; /* User defined data pointer */
@@ -208,7 +208,7 @@
/* If you want to use this event, you should include SDL_syswm.h */
struct SDL_SysWMmsg;
typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-typedef struct {
+typedef struct SDL_SysWMEvent {
Uint8 type;
SDL_SysWMmsg *msg;
} SDL_SysWMEvent;
--- a/include/SDL_keyboard.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_keyboard.h Sun Jul 18 22:57:40 2004 +0000
@@ -55,7 +55,7 @@
An international character..
}
*/
-typedef struct {
+typedef struct SDL_keysym {
Uint8 scancode; /* hardware specific scancode */
SDLKey sym; /* SDL virtual keysym */
SDLMod mod; /* current key modifiers */
--- a/include/SDL_mouse.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_mouse.h Sun Jul 18 22:57:40 2004 +0000
@@ -40,7 +40,7 @@
#endif
typedef struct WMcursor WMcursor; /* Implementation dependent */
-typedef struct {
+typedef struct SDL_Cursor {
SDL_Rect area; /* The area of the mouse cursor */
Sint16 hot_x, hot_y; /* The "tip" of the cursor */
Uint8 *data; /* B/W cursor data */
--- a/include/SDL_syswm.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_syswm.h Sun Jul 18 22:57:40 2004 +0000
@@ -74,7 +74,7 @@
When this structure is returned, it holds information about which
low level system it is using, and will be one of SDL_SYSWM_TYPE.
*/
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version;
SDL_SYSWM_TYPE subsystem;
union {
@@ -106,7 +106,7 @@
};
/* The windows custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version ;
GR_WINDOW_ID window ; /* The display window */
} SDL_SysWMinfo;
@@ -125,7 +125,7 @@
};
/* The windows custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version;
HWND window; /* The Win32 display window */
HGLRC hglrc; /* The OpenGL context, if any */
@@ -141,7 +141,7 @@
};
/* The RISCOS custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version;
int wimpVersion; /* Wimp version running under */
int taskHandle; /* The RISCOS task handle */
@@ -159,7 +159,7 @@
};
/* The QNX custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version;
int data;
} SDL_SysWMinfo;
@@ -173,7 +173,7 @@
};
/* The generic custom window manager information structure */
-typedef struct {
+typedef struct SDL_SysWMinfo {
SDL_version version;
int data;
} SDL_SysWMinfo;
--- a/include/SDL_version.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_version.h Sun Jul 18 22:57:40 2004 +0000
@@ -44,7 +44,7 @@
#define SDL_MINOR_VERSION 2
#define SDL_PATCHLEVEL 8
-typedef struct {
+typedef struct SDL_version {
Uint8 major;
Uint8 minor;
Uint8 patch;
--- a/include/SDL_video.h Sun Jul 18 19:46:38 2004 +0000
+++ b/include/SDL_video.h Sun Jul 18 22:57:40 2004 +0000
@@ -47,12 +47,12 @@
#define SDL_ALPHA_TRANSPARENT 0
/* Useful data types */
-typedef struct {
+typedef struct SDL_Rect {
Sint16 x, y;
Uint16 w, h;
} SDL_Rect;
-typedef struct {
+typedef struct SDL_Color {
Uint8 r;
Uint8 g;
Uint8 b;
@@ -60,7 +60,7 @@
} SDL_Color;
#define SDL_Colour SDL_Color
-typedef struct {
+typedef struct SDL_Palette {
int ncolors;
SDL_Color *colors;
} SDL_Palette;
@@ -154,7 +154,7 @@
/* Useful for determining the video hardware capabilities */
-typedef struct {
+typedef struct SDL_VideoInfo {
Uint32 hw_available :1; /* Flag: Can you create hardware surfaces? */
Uint32 wm_available :1; /* Flag: Can you talk to a window manager? */
Uint32 UnusedBits1 :6;
--- a/src/SDL_error_c.h Sun Jul 18 19:46:38 2004 +0000
+++ b/src/SDL_error_c.h Sun Jul 18 22:57:40 2004 +0000
@@ -35,7 +35,7 @@
#define ERR_MAX_STRLEN 128
#define ERR_MAX_ARGS 5
-typedef struct {
+typedef struct SDL_error {
/* This is a numeric value corresponding to the current error */
int error;