#ifndef LPCTYPES_H #define LPCTYPES_H /* compile time types, from functionlist() */ #define TYPE_UNKNOWN 0 /* This type must be casted */ #define TYPE_NUMBER 1 #define TYPE_STRING 2 #define TYPE_VOID 3 #define TYPE_OBJECT 4 #define TYPE_MAPPING 5 #define TYPE_FLOAT 6 #define TYPE_ANY 7 /* Will match any type */ #define TYPE_SPACE 8 #define TYPE_CLOSURE 9 #define TYPE_SYMBOL 10 #define TYPE_QUOTED_ARRAY 11 #define TYPE_TERM 12 #define TYPE_MOD_POINTER 0x0040 /* Pointer to a basic type */ /* runtime types, from typeof() */ #define T_INVALID 0x0 #define T_LVALUE 0x1 #define T_NUMBER 0x2 #define T_STRING 0x3 #define T_POINTER 0x4 #define T_OBJECT 0x5 #define T_MAPPING 0x6 #define T_FLOAT 0x7 #define T_CLOSURE 0x8 #define T_SYMBOL 0x9 #define T_QUOTED_ARRAY 0xa #define CLOSURE_IS_LFUN(x) ((x) == 0) #define CLOSURE_IS_IDENTIFIER(x) ((x) == 1) #define CLOSURE_IS_BOUND_LAMBDA(x) ((x) == 3) #define CLOSURE_IS_LAMBDA(x) ((x) == 4) #define CLOSURE_IS_UNBOUND_LAMBDA(x) ((x) == 5) #define CLOSURE_IS_SIMUL_EFUN(x) (((x) & 0xf800) == 0xf800) #define CLOSURE_IS_EFUN(x) (((x) & 0xf800) == 0xf000) #define CLOSURE_IS_OPERATOR(x) (((x) & 0xf800) == 0xe800) #endif /* LPCTYPES_H */