Browse Source

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!
Ryan C. Gordon 1 year ago
parent
commit
2fb024ab8e
3 changed files with 15 additions and 6 deletions
  1. 15 0
      build-scripts/wikiheaders.pl
  2. 0 5
      include/SDL3/SDL_keycode.h
  3. 0 1
      include/SDL3/SDL_video.h

+ 15 - 0
build-scripts/wikiheaders.pl

@@ -858,6 +858,21 @@ while (my $d = readdir(DH)) {
                 }
                 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 {
             die("Unexpected symtype $symtype");
         }

+ 0 - 5
include/SDL3/SDL_keycode.h

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

+ 0 - 1
include/SDL3/SDL_video.h

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