/* * MODULE: harness.h * * PURPOSE: Some macros and typedefs etc for the test harness. * This file should be #included into the C file * which contains the function table. * * AUTHOR: Jason Proctor * * DATE: Fri Aug 11 1989 */ /* SccsID[]="@(#)harness.h 1.3 08/10/92 Copyright Insignia Solutions Ltd."; */ /* harness-wide system parameters */ #define MAXLINE 64 #define MAXFILE 16 #define MAXARGS 8 /* defines for standard C return types */ #define VOID 0 #define CHAR 1 #define SHORT 2 #define INT 3 #define LONG 4 #define HEX 5 #define LONGHEX 6 #define FLOAT 7 #define DOUBLE 8 #define STRPTR 9 #define BOOL 10 #define SYS 11 /* states for argument extraction subroutine */ #define NOTINQUOTE 0 #define INSQUOTE 1 #define INDQUOTE 2 /* typedef for master function table */ typedef struct { char *func_name; /* name of the function as a string */ int nparams; /* how many params it takes */ int return_type; /* what kind of animal it returns */ int (*func) (); /* pointer to 'glue' function */ int arg_type1; /* type of arg 1 */ int arg_type2; /* .... etc .... */ int arg_type3; int arg_type4; int arg_type5; int arg_type6; int arg_type7; int arg_type8; } Functable; /* typedef for linked list of variables */ typedef struct Var_List { struct Var_List *next; struct Var_List *prev; char *vname; char *value; int vsize; } Varlist; /* typedef for return code union */ /* can be reduced to just longs and doubles (I think) */ /* due to return codes being held in registers/globals etc */ typedef union { int i; long l; char *p; float f; double d; } Retcodes; /* macros for return code bits to make life easier */ #define ret_char retcode.i #define ret_short retcode.i #define ret_int retcode.i #define ret_long retcode.l #define ret_hex retcode.i #define ret_longhex retcode.l #define ret_strptr retcode.p #define ret_bool retcode.i #define ret_sys retcode.i /* and these are treated as doubles */ #define ret_float retcode.f #define ret_double retcode.d