Arrange that we really _can_ compile all the puzzles into a single

binary if we choose: fix bugs in cube.c and sixteen.c that manifest
when compiled that way, and introduce list.c which provides a global
list of all the available puzzles.

[originally from svn r5169]
This commit is contained in:
Simon Tatham
2005-01-22 15:29:01 +00:00
parent cc54553226
commit a99de1be8f
4 changed files with 53 additions and 7 deletions

38
list.c Normal file
View File

@ -0,0 +1,38 @@
/*
* list.c: List of puzzles.
*/
#include "puzzles.h"
/*
* The available games can be most easily enumerated by searching
* for the line in each game source file saying "#define thegame
* <gamename>". Hence, the following piece of shell/Perl should
* regenerate this list automatically:
perl -ne '/^#define thegame (\S+)/ and $1 ne "nullgame" and print "extern const game $1;\n"' *.c
echo -e '\nconst game *gamelist[] = {'
perl -ne '/^#define thegame (\S+)/ and $1 ne "nullgame" and print " &$1,\n"' *.c
echo -e '};\n\nconst int gamecount = lenof(gamelist);'
*/
extern const game cube;
extern const game fifteen;
extern const game net;
extern const game netslide;
extern const game pattern;
extern const game rect;
extern const game sixteen;
const game *gamelist[] = {
&cube,
&fifteen,
&net,
&netslide,
&pattern,
&rect,
&sixteen,
};
const int gamecount = lenof(gamelist);