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