OSQuantityVector convert(const OSQuantityVector& original, const Unit& targetUnits) { OSQuantityVector result; Quantity testQuantity(0.0,original.units()); OptionalQuantity offset = convert(testQuantity,targetUnits); if (!offset) { return result; } testQuantity.setValue(1.0); OptionalQuantity factorPlusOffset = convert(testQuantity,targetUnits); OS_ASSERT(factorPlusOffset); OS_ASSERT(offset->units() == factorPlusOffset->units()); result = OSQuantityVector(offset->units(),original.values()); result = result * (factorPlusOffset->value() - offset->value()) + offset.get(); return result; }
OSQuantityVector ScheduleBase_Impl::getValues(bool returnIP) const { OSQuantityVector result; if (OptionalScheduleTypeLimits scheduleTypeLimits = this->scheduleTypeLimits()) { if (OptionalUnit siUnits = ScheduleTypeLimits::units(scheduleTypeLimits->unitType(),false)) { result = OSQuantityVector(*siUnits,values()); if (returnIP) { OptionalUnit ipUnits = ScheduleTypeLimits::units(scheduleTypeLimits->unitType(),returnIP); OS_ASSERT(ipUnits); if (ipUnits.get() != siUnits.get()) { result = convert(result,*ipUnits); } } } } return result; }