1 |
/******************************************************************************* |
2 |
* * |
3 |
* Copyright (c) Martin Nicolay, 22. Nov. 1988 * |
4 |
* * |
5 |
* Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten * |
6 |
* bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter * |
7 |
* verwendet werden. * |
8 |
* * |
9 |
* martin@trillian.megalon.de * |
10 |
* * |
11 |
*******************************************************************************/ |
12 |
|
13 |
#ifndef _conf_h_ |
14 |
#define _conf_h_ |
15 |
|
16 |
typedef unsigned short INT; /* muss MAXINT fassen */ |
17 |
typedef unsigned long LONG; /* muss (MAXINT+1)^2 -1 fassen */ |
18 |
|
19 |
#if defined( M_XENIX ) |
20 |
#define P(x) x /* Funktions Prototypen an */ |
21 |
#else |
22 |
#define P(x) () /* Funktions Prototypen aus */ |
23 |
#endif |
24 |
|
25 |
/* |
26 |
* (MAXINT+1)-adic Zahlen |
27 |
*/ |
28 |
|
29 |
/* |
30 |
* MAXINT Maximale Zahl pro Elemenmt (muss int sein) |
31 |
* MAXBIT Maximales Bit von MAXINT |
32 |
* LOWBITS Anzahl der consekutiven low Bits von MAXINT |
33 |
* HIGHBIT Hoechsten Bit von MAXINT |
34 |
* TOINT muss (INT)( (x) % MAXINT) ergeben |
35 |
* MAXLEN Laenge der INT Array in jeder NUMBER |
36 |
*/ |
37 |
|
38 |
#define MAXINT 0xFFFF |
39 |
|
40 |
#if MAXINT == 99 |
41 |
#define MAXBIT 7 |
42 |
#define LOWBITS 2 |
43 |
#endif |
44 |
#if MAXINT == 9 |
45 |
#define MAXBIT 4 |
46 |
#define LOWBITS 1 |
47 |
#endif |
48 |
#if MAXINT == 1 |
49 |
#define MAXBIT 1 |
50 |
#endif |
51 |
#if MAXINT == 0xFF |
52 |
#define MAXBIT 8 |
53 |
#define TOINT(x) ((INT)(x)) /* ACHTUNG !!!!! */ |
54 |
#endif |
55 |
#if MAXINT == 0xFFFF |
56 |
#define MAXBIT 16 |
57 |
#define TOINT(x) ((INT)(x)) /* ACHTUNG !!!!! */ |
58 |
#endif |
59 |
|
60 |
#ifndef MAXBIT |
61 |
#include "<< ERROR: MAXBIT must be defined >>" |
62 |
#endif |
63 |
#ifndef LOWBITS |
64 |
#if MAXINT == (1 << MAXBIT) - 1 |
65 |
#define LOWBITS MAXBIT |
66 |
#else |
67 |
#include "<< ERROR: LOWBITS must be defined >>" |
68 |
#endif |
69 |
#endif |
70 |
|
71 |
#define MAXLEN (300*8/(MAXBIT + 1)) |
72 |
#define STRLEN (MAXLEN*MAXBIT/4) |
73 |
#define HIGHBIT (1 << (MAXBIT-1) ) |
74 |
|
75 |
#if LOWBITS == MAXBIT |
76 |
#define DIVMAX1(x) ((x) >> MAXBIT) |
77 |
#define MODMAX1(x) ((x) & MAXINT) |
78 |
#define MULMAX1(x) ((x) << MAXBIT) |
79 |
#else |
80 |
#define DIVMAX1(x) ((x) / (MAXINT+1)) |
81 |
#define MODMAX1(x) ((x) % (MAXINT+1)) |
82 |
#define MULMAX1(x) ((x) * (unsigned)(MAXINT+1)) |
83 |
#endif |
84 |
|
85 |
#ifndef TOINT |
86 |
#define TOINT(x) ((INT)MODMAX1(x)) |
87 |
#endif |
88 |
|
89 |
typedef struct { |
90 |
int n_len; /* Hoechster benutzter Index */ |
91 |
INT n_part[MAXLEN]; |
92 |
} NUMBER; |
93 |
|
94 |
#define NUM0P ((NUMBER *)0) /* Abkuerzung */ |
95 |
|
96 |
#endif |