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