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;
 }