double UnitUtil::ConvertToSIEquivalent_WLookup(unit& cyphyRef, double value, DimensionRep& siRep) { if (cyphyRef != Udm::null) { map<CyPhyML::unit, UnitConverter>::iterator i = ConverterMap.find(cyphyRef); if (i != ConverterMap.end()) { siRep = i->second.dimensions; return i->second.ToSI(value); } else { // create UnitConverter // add UnitConverter to map UnitConverter converter; CreateConverter(cyphyRef, converter); ConverterMap[cyphyRef] = converter; siRep = converter.dimensions; return converter.ToSI(value); } } else return value; }