1 #include "containers/type_decl.h"
2
3 // ----------------------------------------------------------------
type_mask_to_desc(int type_mask)4 char* type_mask_to_desc(int type_mask) {
5 switch(type_mask) {
6 case TYPE_MASK_ERROR: return "error"; break;
7 case TYPE_MASK_ANY: return "any"; break;
8 case TYPE_MASK_ABSENT: return "absent"; break;
9 case TYPE_MASK_EMPTY: return "empty"; break;
10 case TYPE_MASK_STRING: return "string"; break;
11 case TYPE_MASK_INT: return "int"; break;
12 case TYPE_MASK_FLOAT: return "float"; break;
13 case TYPE_MASK_BOOLEAN: return "boolean"; break;
14 case TYPE_MASK_NUMERIC: return "numeric"; break;
15 case TYPE_MASK_MAP: return "map"; break;
16 default: return "???"; break;
17 }
18 }
19
20 // ----------------------------------------------------------------
type_mask_from_name(char * name)21 int type_mask_from_name(char* name) {
22 if (streq(name, "error")) { return TYPE_MASK_ERROR; }
23 else if (streq(name, "absent")) { return TYPE_MASK_ABSENT; }
24 else if (streq(name, "empty")) { return TYPE_MASK_EMPTY; }
25 else if (streq(name, "string")) { return TYPE_MASK_STRING; }
26 else if (streq(name, "str")) { return TYPE_MASK_STRING; }
27 else if (streq(name, "int")) { return TYPE_MASK_INT; }
28 else if (streq(name, "float")) { return TYPE_MASK_FLOAT; }
29 else if (streq(name, "numeric")) { return TYPE_MASK_NUMERIC; }
30 else if (streq(name, "num")) { return TYPE_MASK_NUMERIC; }
31 else if (streq(name, "boolean")) { return TYPE_MASK_BOOLEAN; }
32 else if (streq(name, "bool")) { return TYPE_MASK_BOOLEAN; }
33 else if (streq(name, "map")) { return TYPE_MASK_MAP; }
34 else if (streq(name, "var")) { return TYPE_MASK_ANY; }
35 else if (streq(name, "any")) { return TYPE_MASK_ANY; }
36
37 else {
38 MLR_INTERNAL_CODING_ERROR();
39 return 0; // not reached
40 }
41 }
42