* (c) 1999 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of Catacomb.
*
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
- *
+ *
* Catacomb is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Library General Public
* License along with Catacomb; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
/*----- Header files ------------------------------------------------------*/
#define _GNU_SOURCE
+#include "config.h"
+
#include <stdio.h>
#include <limits.h>
#if __STDC_VERSION__ >= 199900l
itype *i;
itype *largest, *mpw, *mpd;
const static char *extstr = "CATACOMB_MPTYPES_EXTENSION ";
+ unsigned p2;
/* --- Find the bitcounts --- */
* which is twice as big as that one.
*/
+#if defined(FORCE_MPW_CUSSID)
+ largest = mpd = &tytab[3];
+ mpw = &tytab[2];
+ mpw->bits = 19; mpw->max = 0x7ffff;
+ mpd->bits = 38; mpd->max = 0x3fffffffffll;
+#elif defined(FORCE_MPW_SHORT)
+ largest = mpd = &tytab[2];
+ mpw = &tytab[1];
+ mpw->bits = 16; mpw->max = 0xffff;
+ mpd->bits = 32; mpd->max = 0xffffffff;
+#else
largest = tytab;
for (i = tytab; i->name; i++) {
if (i->bits > largest->bits)
w.bits /= 2; w.max = ~(~((umax)0) << w.bits);
d.bits = w.bits * 2; d.max = ~(~((umax)0) << d.bits);
mpw = &w; mpd = &d;
- }
+ }
+#endif
+ for (p2 = 1; (p2 << 1) < mpw->bits; p2 <<= 1);
/* --- Output time --- */
printf("\
%stypedef %s mpw;\n\
#define MPW_BITS %u\n\
+#define MPW_P2 %u\n\
#define MPW_MAX %s%" P_UMAX "%s\n\
\n\
%stypedef %s mpd;\n\
#endif\n\
",
mpw->flags & f_ext ? extstr : "", mpw->name,
- mpw->bits,
+ mpw->bits, p2,
mpw->flags & f_ext ? extstr : "", mpw->max, mpw->suff,
mpd->flags & f_ext ? extstr : "", mpd->name,
mpd->bits,