version 1.19, 2020/06/10 21:03:12 |
version 1.20, 2020/06/10 21:03:36 |
|
|
****************************************************************/ |
****************************************************************/ |
|
|
#include <assert.h> |
#include <assert.h> |
|
#include <stdint.h> |
|
|
typedef double Awkfloat; |
typedef double Awkfloat; |
|
|
|
|
|
|
typedef unsigned char uschar; |
typedef unsigned char uschar; |
|
|
#define xfree(a) { if ((a) != NULL) { free((void *) (a)); (a) = NULL; } } |
#define xfree(a) { if ((a) != NULL) { free((void *)(intptr_t)(a)); (a) = NULL; } } |
|
/* |
|
* We sometimes cheat writing read-only pointers to NUL-terminate them |
|
* and then put back the original value |
|
*/ |
|
#define setptr(ptr, a) (*(char *)(intptr_t)(ptr)) = (a) |
|
|
#define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for DPRINTF |
#define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for DPRINTF |
*/ |
*/ |
|
|
|
|
extern int dbg; |
extern int dbg; |
|
|
extern char *patbeg; /* beginning of pattern matched */ |
extern const char *patbeg; /* beginning of pattern matched */ |
extern int patlen; /* length of pattern matched. set in b.c */ |
extern int patlen; /* length of pattern matched. set in b.c */ |
|
|
/* Cell: all information about a variable or constant */ |
/* Cell: all information about a variable or constant */ |