wikiheaders: Defines directly following a non-struct typedef are documented.

The idea is that if you have a `typedef Uint32 MyFlags` that has a bunch of
defines that are meant to be bitflags, you can pack them into the same wiki
page automatically.

This only works with `typedef`s that are _not_ struct/union/enums, and it
only pulls in `#define` lines that immediately follow the typedef line.
Even a blank line or a comment will signal to stop including lines for
this page!
This commit is contained in:
Ryan C. Gordon 2024-04-25 02:58:53 -04:00
parent 47ff4addd4
commit 2fb024ab8e
No known key found for this signature in database
GPG key ID: FA148B892AB48044
3 changed files with 15 additions and 6 deletions

View file

@ -858,6 +858,21 @@ while (my $d = readdir(DH)) {
} }
next; next;
} }
# We assume any `#define`s directly after the typedef are related to it: probably bitflags for an integer typedef. Even a blank line will signify an end!
my $lastpos = tell(FH);
my $additional_decl = '';
while (<FH>) {
chomp;
if (not /\A\s*\#define\s+/) {
seek(FH, $lastpos, 0); # re-read this line again next time.
last;
}
$additional_decl .= "$_\n";
push @decllines, $_;
$lastpos = tell(FH);
}
$decl .= "\n$additional_decl" if ($additional_decl ne '');
} else { } else {
die("Unexpected symtype $symtype"); die("Unexpected symtype $symtype");
} }

View file

@ -47,13 +47,8 @@
* \sa SDL_KeyCode * \sa SDL_KeyCode
*/ */
typedef Sint32 SDL_Keycode; typedef Sint32 SDL_Keycode;
#define SDLK_SCANCODE_MASK (1<<30) #define SDLK_SCANCODE_MASK (1<<30)
#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) #define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK)
/**
* A subset of possible virtual key values.
*/
#define SDLK_UNKNOWN 0 #define SDLK_UNKNOWN 0
#define SDLK_RETURN '\r' #define SDLK_RETURN '\r'
#define SDLK_ESCAPE '\x1B' #define SDLK_ESCAPE '\x1B'

View file

@ -131,7 +131,6 @@ typedef struct SDL_Window SDL_Window;
* \sa SDL_GetWindowFlags * \sa SDL_GetWindowFlags
*/ */
typedef Uint32 SDL_WindowFlags; typedef Uint32 SDL_WindowFlags;
#define SDL_WINDOW_FULLSCREEN 0x00000001U /**< window is in fullscreen mode */ #define SDL_WINDOW_FULLSCREEN 0x00000001U /**< window is in fullscreen mode */
#define SDL_WINDOW_OPENGL 0x00000002U /**< window usable with OpenGL context */ #define SDL_WINDOW_OPENGL 0x00000002U /**< window usable with OpenGL context */
#define SDL_WINDOW_OCCLUDED 0x00000004U /**< window is occluded */ #define SDL_WINDOW_OCCLUDED 0x00000004U /**< window is occluded */