static void parse_cylinder_keyvalue(void *_cylinder, const char *key, const char *value) { cylinder_t *cylinder = _cylinder; if (!strcmp(key, "vol")) { cylinder->type.size = get_volume(value); return; } if (!strcmp(key, "workpressure")) { cylinder->type.workingpressure = get_pressure(value); return; } /* This is handled by the "get_utf8()" */ if (!strcmp(key, "description")) return; if (!strcmp(key, "o2")) { cylinder->gasmix.o2 = get_fraction(value); return; } if (!strcmp(key, "he")) { cylinder->gasmix.he = get_fraction(value); return; } if (!strcmp(key, "start")) { cylinder->start = get_pressure(value); return; } if (!strcmp(key, "end")) { cylinder->end = get_pressure(value); return; } report_error("Unknown cylinder key/value pair (%s/%s)", key, value); }
float_utilst::unbiased_floatt float_utilst::unpack(const bvt &src) { assert(src.size()==spec.width()); unbiased_floatt result; result.sign=sign_bit(src); result.fraction=get_fraction(src); result.fraction.push_back(is_normal(src)); // add hidden bit result.exponent=get_exponent(src); assert(result.exponent.size()==spec.e); // unbias the exponent literalt denormal=bv_utils.is_zero(result.exponent); result.exponent= bv_utils.select(denormal, bv_utils.build_constant(-spec.bias()+1, spec.e), sub_bias(result.exponent)); result.infinity=is_infinity(src); result.zero=is_zero(src); result.NaN=is_NaN(src); return result; }
static void parse_event_keyvalue(void *_event, const char *key, const char *value) { struct event *event = _event; int val = atoi(value); if (!strcmp(key, "type")) { event->type = val; } else if (!strcmp(key, "flags")) { event->flags = val; } else if (!strcmp(key, "value")) { event->value = val; } else if (!strcmp(key, "name")) { /* We get the name from the string handling */ } else if (!strcmp(key, "cylinder")) { /* NOTE! We add one here as a marker that "yes, we got a cylinder index" */ event->gas.index = 1+get_index(value); } else if (!strcmp(key, "o2")) { event->gas.mix.o2 = get_fraction(value); } else if (!strcmp(key, "he")) { event->gas.mix.he = get_fraction(value); } else report_error("Unexpected event key/value pair (%s/%s)", key, value); }