xref: /csrg-svn/old/dbx/defs.h (revision 16608)
1 /*
2  * Public definitions, common to all.
3  */
4 
5 #include <stdio.h>
6 
7 #define new(type)           ((type) malloc(sizeof(struct type)))
8 #define newarr(type, n)     ((type *) malloc((unsigned) (n) * sizeof(type)))
9 #define dispose(ptr)        { free((char *) ptr); ptr = 0; }
10 
11 #define public
12 #define private static
13 
14 #define ord(enumcon) ((unsigned int) enumcon)
15 #define nil 0
16 #define and &&
17 #define or ||
18 #define not !
19 #define div /
20 #define mod %
21 #define max(a, b)    ((a) > (b) ? (a) : (b))
22 #define min(a, b)    ((a) < (b) ? (a) : (b))
23 
24 #define assert(b) { \
25     if (not(b)) { \
26 	panic("assertion failed at line %d in file %s", __LINE__, __FILE__); \
27     } \
28 }
29 
30 #define badcaseval(v) { \
31     panic("unexpected value %d at line %d in file %s", v, __LINE__, __FILE__); \
32 }
33 
34 #define checkref(p) { \
35     if (p == nil) { \
36 	panic("reference through nil pointer at line %d in file %s", \
37 	    __LINE__, __FILE__); \
38     } \
39 }
40 
41 typedef int Integer;
42 typedef int integer;
43 typedef char Char;
44 typedef double Real;
45 typedef double real;
46 typedef enum { false, true } Boolean;
47 typedef Boolean boolean;
48 typedef char *String;
49 
50 #define strdup(s)       strcpy(malloc((unsigned) strlen(s) + 1), s)
51 #define streq(s1, s2)   (strcmp(s1, s2) == 0)
52 
53 typedef FILE *File;
54 typedef int Fileid;
55 typedef String Filename;
56 
57 #define get(f, var) fread((char *) &(var), sizeof(var), 1, f)
58 #define put(f, var) fwrite((char *) &(var), sizeof(var), 1, f)
59 
60 #undef FILE
61 
62 extern long atol();
63 extern double atof();
64 extern char *malloc();
65 extern String strcpy(), index(), rindex();
66 extern int strlen();
67 
68 extern String cmdname;
69 extern String errfilename;
70 extern short errlineno;
71 extern int debug_flag[];
72