-simgrid::instr::Value* simgrid::instr::Value::get_or_new(const char* name, const char* color,
- simgrid::instr::Type* father)
-{
- Value* ret = 0;
- try {
- ret = Value::get(name, father);
- }
- catch(xbt_ex& e) {
- ret = new Value(name, color, father);
- }
- return ret;
-}
-
-simgrid::instr::Value* simgrid::instr::Value::get(const char* name, Type* father)
-{
- if (name == nullptr || father == nullptr){
- THROWF (tracing_error, 0, "can't get a value with a nullptr name (or a nullptr father)");
- }
-
- if (father->kind_ == TYPE_VARIABLE)
- THROWF(tracing_error, 0, "variables can't have different values (%s)", father->name_);
- Value* ret = (Value*)xbt_dict_get_or_null(father->values_, name);
- if (ret == nullptr) {
- THROWF(tracing_error, 2, "value with name (%s) not found in father type (%s)", name, father->name_);
- }
- return ret;
-}