From ae42198c26977a26c6e1c01d04ae73e652ef98e9 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 18 Jul 2004 22:57:40 +0000 Subject: [PATCH] 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? --- include/SDL_audio.h | 2 +- include/SDL_cdrom.h | 2 +- include/SDL_events.h | 26 +++++++++++++------------- include/SDL_keyboard.h | 2 +- include/SDL_mouse.h | 2 +- include/SDL_syswm.h | 12 ++++++------ include/SDL_version.h | 2 +- include/SDL_video.h | 8 ++++---- src/SDL_error_c.h | 2 +- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/include/SDL_audio.h b/include/SDL_audio.h index fa934763f..41873e24c 100644 --- a/include/SDL_audio.h +++ b/include/SDL_audio.h @@ -45,7 +45,7 @@ extern "C" { #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 */ diff --git a/include/SDL_cdrom.h b/include/SDL_cdrom.h index ceb3b0c37..bd415e78e 100644 --- a/include/SDL_cdrom.h +++ b/include/SDL_cdrom.h @@ -62,7 +62,7 @@ typedef enum { /* 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; diff --git a/include/SDL_events.h b/include/SDL_events.h index e3f5301b3..880a37540 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -106,14 +106,14 @@ enum { #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 @@ typedef struct { } 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 @@ typedef struct { } 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 @@ typedef struct { } 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 @@ typedef struct { } 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 @@ typedef struct { } 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 @@ typedef struct { } 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 @@ typedef struct { 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 @@ typedef struct { /* 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; diff --git a/include/SDL_keyboard.h b/include/SDL_keyboard.h index b45080ed3..263d198ac 100644 --- a/include/SDL_keyboard.h +++ b/include/SDL_keyboard.h @@ -55,7 +55,7 @@ extern "C" { An international character.. } */ -typedef struct { +typedef struct SDL_keysym { Uint8 scancode; /* hardware specific scancode */ SDLKey sym; /* SDL virtual keysym */ SDLMod mod; /* current key modifiers */ diff --git a/include/SDL_mouse.h b/include/SDL_mouse.h index 0ab31e3c0..3ab745bb6 100644 --- a/include/SDL_mouse.h +++ b/include/SDL_mouse.h @@ -40,7 +40,7 @@ extern "C" { #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 */ diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index 41c7c4e45..4db13d4c5 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -74,7 +74,7 @@ struct SDL_SysWMmsg { 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 @@ struct SDL_SysWMmsg { }; /* 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 @@ struct SDL_SysWMmsg { }; /* 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 @@ struct SDL_SysWMmsg { }; /* 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 @@ struct SDL_SysWMmsg { }; /* The QNX custom window manager information structure */ -typedef struct { +typedef struct SDL_SysWMinfo { SDL_version version; int data; } SDL_SysWMinfo; @@ -173,7 +173,7 @@ struct SDL_SysWMmsg { }; /* The generic custom window manager information structure */ -typedef struct { +typedef struct SDL_SysWMinfo { SDL_version version; int data; } SDL_SysWMinfo; diff --git a/include/SDL_version.h b/include/SDL_version.h index 41469835d..0b1d16d95 100644 --- a/include/SDL_version.h +++ b/include/SDL_version.h @@ -44,7 +44,7 @@ extern "C" { #define SDL_MINOR_VERSION 2 #define SDL_PATCHLEVEL 8 -typedef struct { +typedef struct SDL_version { Uint8 major; Uint8 minor; Uint8 patch; diff --git a/include/SDL_video.h b/include/SDL_video.h index 3c18aa41c..d820e27e4 100644 --- a/include/SDL_video.h +++ b/include/SDL_video.h @@ -47,12 +47,12 @@ extern "C" { #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 @@ typedef struct { } SDL_Color; #define SDL_Colour SDL_Color -typedef struct { +typedef struct SDL_Palette { int ncolors; SDL_Color *colors; } SDL_Palette; @@ -154,7 +154,7 @@ typedef struct SDL_Surface { /* 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; diff --git a/src/SDL_error_c.h b/src/SDL_error_c.h index b08613683..ef4eb89fa 100644 --- a/src/SDL_error_c.h +++ b/src/SDL_error_c.h @@ -35,7 +35,7 @@ static char rcsid = #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;