+static val_t newValue (const char *valuename, const char *color, type_t father)
+{
+ val_t ret = xbt_new0(s_val_t, 1);
+ ret->name = xbt_strdup (valuename);
+ ret->father = father;
+ ret->color = xbt_strdup (color);
+
+ char str_id[INSTR_DEFAULT_STR_SIZE];
+ snprintf (str_id, INSTR_DEFAULT_STR_SIZE, "%lld", new_type_id());
+ ret->id = xbt_strdup (str_id);
+
+ xbt_dict_set (father->values, valuename, ret, NULL);
+ XBT_DEBUG("new value %s, child of %s", ret->name, ret->father->name);
+ return ret;
+}
+
+val_t getValue (const char *valuename, const char *color, type_t father)
+{
+ if (father->kind == TYPE_VARIABLE) return NULL; //Variables can't have different values
+
+ val_t ret = (val_t)xbt_dict_get_or_null (father->values, valuename);
+ if (ret == NULL){
+ ret = newValue (valuename, color, father);
+ XBT_DEBUG("EntityValue %s(%s), child of %s(%s)", ret->name, ret->id, father->name, father->id);
+ new_pajeDefineEntityValue(ret);
+ }
+ return ret;
+}
+
+val_t getValueByName (const char *valuename, type_t father)
+{
+ return getValue (valuename, NULL, father);
+}
+
+static type_t newType (const char *typename, const char *key, const char *color, e_entity_types kind, type_t father)