Source:Global.h

Below is the full text to include/global.h from NetHack 3.4.3. To link to a particular line, write [[global.h#line123 ]], for example. 1.   /*	SCCS Id: @(#)global.h	3.4	2003/08/31	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.

5.   #ifndef GLOBAL_H 6.   #define GLOBAL_H 7.    8.    #include   9. 10.   11.   /* #define BETA	*/	/* if a beta-test copy	[MRS] */ 12.   13.   /*  14.    * Files expected to exist in the playground directory. 15.   */  16.    17.   #define RECORD	      "record"	/* file containing list of topscorers */ 18.  #define HELP	      "help"	/* file containing command descriptions */ 19.  #define SHELP	      "hh"	/* abbreviated form of the same */ 20.  #define DEBUGHELP     "wizhelp" /* file containing debug mode cmds */ 21.  #define RUMORFILE     "rumors"	/* file with fortune cookies */ 22.  #define ORACLEFILE    "oracles" /* file with oracular information */ 23.  #define DATAFILE      "data"	/* file giving the meaning of symbols used */ 24.  #define CMDHELPFILE   "cmdhelp" /* file telling what commands do */ 25.  #define HISTORY       "history" /* file giving nethack's history */ 26.  #define LICENSE       "license" /* file with license information */ 27.  #define OPTIONFILE    "opthelp" /* file explaining runtime options */ 28.  #define OPTIONS_USED  "options" /* compile-time options, for #version */ 29.   30.   #define LEV_EXT ".lev"		/* extension for special level files */ 31.   32.    33.   /* Assorted definitions that may depend on selections in config.h. */ 34.   35.   /*  36.    * for DUMB preprocessor and compiler, e.g., cpp and pcc supplied 37.   * with Microport SysV/AT, which have small symbol tables; 38.   * DUMB if needed is defined in CFLAGS 39.   */  40.   #ifdef DUMB 41.  #ifdef BITFIELDS 42.  #undef BITFIELDS 43.  #endif 44.  #ifndef STUPID 45.  #define STUPID 46.  #endif 47.  #endif	/* DUMB */ 48.   49.   /*  50.    * type xchar: small integers in the range 0 - 127, usually coordinates 51.   * although they are nonnegative they must not be declared unsigned 52.   * since otherwise comparisons with signed quantities are done incorrectly 53.   */  54.   typedef schar	xchar; 55.  #ifndef SKIP_BOOLEAN 56.  typedef xchar	boolean;		/* 0 or 1 */ 57.  #endif 58.   59.   #ifndef TRUE		/* defined in some systems' native include files */ 60.  #define TRUE	((boolean)1) 61.  #define FALSE	((boolean)0) 62.  #endif 63.   64.   #ifndef STRNCMPI 65.  # ifndef __SASC_60		/* SAS/C already shifts to stricmp */ 66.  #  define strcmpi(a,b) strncmpi((a),(b),-1) 67.  # endif 68.  #endif 69.   70.   /* comment out to test effects of each #define -- these will probably 71.   * disappear eventually 72.   */  73.   #ifdef INTERNAL_COMP 74.  # define RLECOMP	/* run-length compression of levl array - JLee */ 75.  # define ZEROCOMP	/* zero-run compression of everything - Olaf Seibert */ 76.  #endif 77.   78.   /* #define SPECIALIZATION */	/* do "specialized" version of new topology */ 79.   80.    81.   #ifdef BITFIELDS 82.  #define Bitfield(x,n)	unsigned x:n 83.  #else 84.  #define Bitfield(x,n)	uchar x  85. #endif 86.   87.   #ifdef UNWIDENED_PROTOTYPES 88.  # define CHAR_P char 89.  # define SCHAR_P schar 90.  # define UCHAR_P uchar 91.  # define XCHAR_P xchar 92.  # define SHORT_P short 93.  #ifndef SKIP_BOOLEAN 94.  # define BOOLEAN_P boolean 95.  #endif 96.  # define ALIGNTYP_P aligntyp 97.  #else 98.  # ifdef WIDENED_PROTOTYPES 99.  #  define CHAR_P int 100. #  define SCHAR_P int 101. #  define UCHAR_P int 102. #  define XCHAR_P int 103. #  define SHORT_P int 104. #  define BOOLEAN_P int 105. #  define ALIGNTYP_P int 106. # endif 107. #endif 108. #if defined(ULTRIX_PROTO) && !defined(__STDC__) 109. /* The ultrix 2.0 and 2.1 compilers (on Ultrix 4.0 and 4.2 respectively) can't  110. * handle "struct obj *" constructs in prototypes. Their bugs are different, 111.  * but both seem to work if we put "void*" in the prototype instead. This 112.  * gives us minimal prototype checking but avoids the compiler bugs. 113.  *  114.   * OBJ_P and MONST_P should _only_ be used for declaring function pointers. 115.  */  116.  #define OBJ_P void* 117. #define MONST_P void* 118. #else 119. #define OBJ_P struct obj* 120. #define MONST_P struct monst* 121. #endif 122.  123.  #define SIZE(x) (int)(sizeof(x) / sizeof(x[0])) 124.  125.   126.  /* A limit for some NetHack int variables. It need not, and for comparable 127.  * scoring should not, depend on the actual limit on integers for a  128. * particular machine, although it is set to the minimum required maximum 129.  * signed integer for C (2^15 -1). 130.  */  131.  #define LARGEST_INT	32767 132.  133.   134.  #ifdef REDO 135. #define Getchar pgetchar 136. #endif 137.  138.   139.  #include "coord.h"  140. /* 141.   * Automatic inclusions for the subsidiary files. 142.  * Please don't change the order. It does matter. 143.  */  144.   145.  #ifdef VMS 146. #include "vmsconf.h"  147. #endif 148.  149.  #ifdef UNIX 150. #include "unixconf.h"  151. #endif 152.  153.  #ifdef OS2 154. #include "os2conf.h"  155. #endif 156.  157.  #ifdef MSDOS 158. #include "pcconf.h"  159. #endif 160.  161.  #ifdef TOS 162. #include "tosconf.h"  163. #endif 164.  165.  #ifdef AMIGA 166. #include "amiconf.h"  167. #endif 168.  169.  #ifdef MAC 170. #include "macconf.h"  171. #endif 172.  173.  #ifdef __BEOS__ 174. #include "beconf.h"  175. #endif 176.  177.  #ifdef WIN32 178. #ifdef WIN_CE 179. #include "wceconf.h"  180. #else 181. #include "ntconf.h"  182. #endif 183. #endif 184.  185.  /* Displayable name of this port; don't redefine if defined in *conf.h */ 186. #ifndef PORT_ID 187. # ifdef AMIGA 188. #  define PORT_ID	"Amiga" 189. # endif 190. # ifdef MAC 191. #  define PORT_ID	"Mac" 192. # endif 193. # ifdef MSDOS 194. #  ifdef PC9800 195. #  define PORT_ID	"PC-9800" 196. #  else 197. #  define PORT_ID	"PC" 198. #  endif 199. #  ifdef DJGPP 200. #  define PORT_SUB_ID	"djgpp" 201. #  else 202. #   ifdef OVERLAY 203. #  define PORT_SUB_ID	"overlaid" 204. #   else 205. #  define PORT_SUB_ID	"non-overlaid" 206. #   endif 207. #  endif 208. # endif 209. # ifdef OS2 210. #  define PORT_ID	"OS/2" 211. # endif 212. # ifdef TOS 213. #  define PORT_ID	"ST" 214. # endif 215. # ifdef UNIX 216. #  define PORT_ID	"Unix" 217. # endif 218. # ifdef VMS 219. #  define PORT_ID	"VMS" 220. # endif 221. # ifdef WIN32 222. #  define PORT_ID	"Windows" 223. #  ifndef PORT_SUB_ID 224. #   ifdef MSWIN_GRAPHICS 225. #    define PORT_SUB_ID	"graphical" 226. #   else 227. #    define PORT_SUB_ID	"tty" 228. #   endif 229. #  endif 230. # endif 231. #endif 232.  233.  #if defined(MICRO) 234. #if !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS) 235. #define SHORT_FILENAMES		/* filenames are 8.3 */ 236. #endif 237. #endif 238.  239.  #ifdef VMS 240. /* vms_exit (sys/vms/vmsmisc.c) expects the non-VMS EXIT_xxx values below. 241.  * these definitions allow all systems to be treated uniformly, provided 242.  * main routines do not terminate with return, whose value is not 243.  * so massaged. 244.  */  245.  # ifdef EXIT_SUCCESS 246. #  undef EXIT_SUCCESS 247. # endif 248. # ifdef EXIT_FAILURE 249. #  undef EXIT_FAILURE 250. # endif 251. #endif 252.  253.  #ifndef EXIT_SUCCESS 254. # define EXIT_SUCCESS 0 255. #endif 256. #ifndef EXIT_FAILURE 257. # define EXIT_FAILURE 1 258. #endif 259.  260.  #if defined(X11_GRAPHICS) || defined(QT_GRAPHICS) || defined(GNOME_GRAPHICS) || defined(MSWIN_GRAPHICS) 261. # ifndef USE_TILES 262. #  define USE_TILES		/* glyph2tile[] will be available */ 263. # endif 264. #endif 265. #if defined(AMII_GRAPHICS) || defined(GEM_GRAPHICS) 266. # ifndef USE_TILES 267. #  define USE_TILES 268. # endif 269. #endif 270.  271.   272.  #define Sprintf  (void) sprintf 273. #define Strcat   (void) strcat 274. #define Strcpy   (void) strcpy 275. #ifdef NEED_VARARGS 276. #define Vprintf  (void) vprintf 277. #define Vfprintf (void) vfprintf 278. #define Vsprintf (void) vsprintf 279. #endif 280.  281.   282.  /* primitive memory leak debugging; see alloc.c */ 283. #ifdef MONITOR_HEAP 284. extern long *FDECL(nhalloc, (unsigned int,const char *,int)); 285. extern void FDECL(nhfree, (genericptr_t,const char *,int)); 286. # ifndef __FILE__ 287. #  define __FILE__ "" 288. # endif 289. # ifndef __LINE__ 290. #  define __LINE__ 0 291. # endif 292. # define alloc(a) nhalloc(a,__FILE__,(int)__LINE__) 293. # define free(a) nhfree(a,__FILE__,(int)__LINE__) 294. #else	/* !MONITOR_HEAP */ 295. extern long *FDECL(alloc, (unsigned int));		/* alloc.c */ 296. #endif 297.  298.  /* Used for consistency checks of various data files; declare it here so  299. that utility programs which include config.h but not hack.h can see it. */ 300.  struct version_info { 301. 	unsigned long	incarnation;	/* actual version number */ 302. 	unsigned long	feature_set;	/* bitmask of config settings */ 303. 	unsigned long	entity_count;	/* # of monsters and objects */ 304. 	unsigned long	struct_sizes;	/* size of key structs */ 305. };  306.   307.   308.  /*  309.   * Configurable internal parameters. 310.  *  311.   * Please be very careful if you are going to change one of these. Any 312.  * changes in these parameters, unless properly done, can render the 313.  * executable inoperative. 314.  */  315.   316.  /* size of terminal screen is (at least) (ROWNO+3) by COLNO */ 317. #define COLNO	80 318. #define ROWNO	21 319.  320.  #define MAXNROFROOMS	40	/* max number of rooms per level */ 321. #define MAX_SUBROOMS	24	/* max # of subrooms in a given room */ 322. #define DOORMAX		120	/* max number of doors per level */ 323.  324.  #define BUFSZ		256	/* for getlin buffers */ 325. #define QBUFSZ		128	/* for building question text */ 326. #define TBUFSZ		300	/* toplines[] buffer max msg: 3 81char names */ 327. 				/* plus longest prefix plus a few extra words */ 328.  329.  #define PL_NSIZ		32	/* name of player, ghost, shopkeeper */ 330. #define PL_CSIZ		32	/* sizeof pl_character */ 331. #define PL_FSIZ		32	/* fruit name */ 332. #define PL_PSIZ		63	/* player-given names for pets, other 333. 				 * monsters, objects */ 334.  335.  #define MAXDUNGEON	16	/* current maximum number of dungeons */ 336. #define MAXLEVEL	32	/* max number of levels in one dungeon */ 337. #define MAXSTAIRS	1	/* max # of special stairways in a dungeon */ 338. #define ALIGNWEIGHT	4	/* generation weight of alignment */ 339.  340.  #define MAXULEV		30	/* max character experience level */ 341.  342.  #define MAXMONNO	120	/* extinct monst after this number created */ 343. #define MHPMAX		500	/* maximum monster hp */ 344.  345.  #endif /* GLOBAL_H */