1 #ifndef TYPE_DECL_H
2 #define TYPE_DECL_H
3 
4 #include "../lib/mlrval.h"
5 
6 // ----------------------------------------------------------------
7 // These use the MT defines from mlrval.h, except that map-types (mlhmmv.h)
8 // are outside of mlrval.h.
9 #define TYPE_MASK_ERROR    (1 << MT_ERROR)
10 #define TYPE_MASK_ABSENT   (1 << MT_ABSENT)
11 #define TYPE_MASK_EMPTY    (1 << MT_EMPTY)
12 #define TYPE_MASK_STRING  ((1 << MT_STRING) | (1 << MT_EMPTY))
13 #define TYPE_MASK_INT      (1 << MT_INT)
14 #define TYPE_MASK_FLOAT    (1 << MT_FLOAT)
15 #define TYPE_MASK_NUMERIC (TYPE_MASK_INT | TYPE_MASK_FLOAT)
16 #define TYPE_MASK_BOOLEAN  (1 << MT_BOOLEAN)
17 #define TYPE_MASK_MAP      (1 << MT_DIM)
18 #define TYPE_MASK_ANY     (~0)
19 
20 // ----------------------------------------------------------------
21 char* type_mask_to_desc(int type_mask);
type_mask_from_mv(mv_t * pmv)22 static inline int type_mask_from_mv(mv_t* pmv) {
23 	return 1 << pmv->type;
24 }
25 int type_mask_from_name(char* name);
26 
27 #endif // TYPE_DECL_H
28