Unverified Commit 5f14f4f0 authored by Oleg Alexandrov's avatar Oleg Alexandrov Committed by GitHub
Browse files

Avoid using pointers where a std::shared_ptr can be used (#384)

* Avoid using pointers where a std::shared_ptr can be used

* Use smart pointers in PluginTests.cpp

* Use smart pointers in FrameCameraTests.cpp

* Eliminate pointer deletion in Fixtures.h
parent ca074834
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -899,7 +899,7 @@ std::string UsgsAstroFrameSensorModel::constructStateFromIsd(

  MESSAGE_LOG("Constructing state from isd");

  csm::WarningList *parsingWarnings = new csm::WarningList;
  std::shared_ptr<csm::WarningList> parsingWarnings(new csm::WarningList);

  state["m_modelName"] = ale::getSensorModelName(parsedIsd);
  state["m_imageIdentifier"] = ale::getImageId(parsedIsd);
@@ -1115,8 +1115,6 @@ std::string UsgsAstroFrameSensorModel::constructStateFromIsd(
      warnings->insert(warnings->end(), parsingWarnings->begin(),
                       parsingWarnings->end());
    }
    delete parsingWarnings;
    parsingWarnings = nullptr;
    MESSAGE_LOG("ISD is invalid for creating the sensor model.");

    throw csm::Error(csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE,
@@ -1124,9 +1122,6 @@ std::string UsgsAstroFrameSensorModel::constructStateFromIsd(
                     "UsgsAstroFrameSensorModel::constructStateFromIsd");
  }

  delete parsingWarnings;
  parsingWarnings = nullptr;

  return state.dump();
}

+4 −9
Original line number Diff line number Diff line
@@ -2265,7 +2265,7 @@ std::string UsgsAstroLsSensorModel::constructStateFromIsd(
  MESSAGE_LOG("Constructing state from Isd")
  // Instantiate UsgsAstroLineScanner sensor model
  json jsonIsd = json::parse(imageSupportData);
  csm::WarningList* parsingWarnings = new csm::WarningList;
  std::shared_ptr<csm::WarningList> parsingWarnings(new csm::WarningList);

  state["m_modelName"] = ale::getSensorModelName(jsonIsd);
  state["m_imageIdentifier"] = ale::getImageId(jsonIsd);
@@ -2397,10 +2397,10 @@ std::string UsgsAstroLsSensorModel::constructStateFromIsd(

  std::vector<std::vector<double>> lineScanRate = ale::getLineScanRate(jsonIsd);
  state["m_intTimeLines"] =
      getIntegrationStartLines(lineScanRate, parsingWarnings);
    getIntegrationStartLines(lineScanRate, parsingWarnings.get());
  state["m_intTimeStartTimes"] =
      getIntegrationStartTimes(lineScanRate, parsingWarnings);
  state["m_intTimes"] = getIntegrationTimes(lineScanRate, parsingWarnings);
    getIntegrationStartTimes(lineScanRate, parsingWarnings.get());
  state["m_intTimes"] = getIntegrationTimes(lineScanRate, parsingWarnings.get());
  MESSAGE_LOG(
      "m_intTimeLines: {} "
      "m_intTimeStartTimes: {} "
@@ -2566,16 +2566,11 @@ std::string UsgsAstroLsSensorModel::constructStateFromIsd(
      warnings->insert(warnings->end(), parsingWarnings->begin(),
                       parsingWarnings->end());
    }
    delete parsingWarnings;
    parsingWarnings = nullptr;
    throw csm::Error(csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE,
                     "ISD is invalid for creating the sensor model.",
                     "UsgsAstroFrameSensorModel::constructStateFromIsd");
  }

  delete parsingWarnings;
  parsingWarnings = nullptr;

  // The state data will still be updated when a sensor model is created since
  // some state data is not in the ISD and requires a SM to compute them.
  return state.dump();
+5 −8
Original line number Diff line number Diff line
@@ -165,12 +165,10 @@ bool UsgsAstroPlugin::canModelBeConstructedFromISD(
    const csm::Isd &imageSupportData, const std::string &modelName,
    csm::WarningList *warnings) const {
  try {
    csm::Model *model =
        constructModelFromISD(imageSupportData, modelName, warnings);
    if (model) {
      delete model;
    std::shared_ptr<csm::Model> model(constructModelFromISD(imageSupportData, modelName, warnings));
    if (model)
      return true;
    }

  } catch (std::exception &e) {
    if (warnings) {
      std::string msg = "Could not create model [";
@@ -284,10 +282,9 @@ std::string UsgsAstroPlugin::convertISDToModelState(
    const csm::Isd &imageSupportData, const std::string &modelName,
    csm::WarningList *warnings) const {
  MESSAGE_LOG("Running convertISDToModelState");
  csm::Model *sensor_model =
      constructModelFromISD(imageSupportData, modelName, warnings);
  std::shared_ptr<csm::Model> sensor_model
    (constructModelFromISD(imageSupportData, modelName, warnings));
  std::string stateString = sensor_model->getModelState();
  delete sensor_model;
  return stateString;
}

+1 −6
Original line number Diff line number Diff line
@@ -2061,7 +2061,7 @@ std::string UsgsAstroPushFrameSensorModel::constructStateFromIsd(
  MESSAGE_LOG("Constructing state from Isd")
  // Instantiate UsgsAstroLineScanner sensor model
  json jsonIsd = json::parse(imageSupportData);
  csm::WarningList* parsingWarnings = new csm::WarningList;
  std::shared_ptr<csm::WarningList> parsingWarnings(new csm::WarningList);

  state["m_modelName"] = ale::getSensorModelName(jsonIsd);
  state["m_imageIdentifier"] = ale::getImageId(jsonIsd);
@@ -2380,16 +2380,11 @@ std::string UsgsAstroPushFrameSensorModel::constructStateFromIsd(
      warnings->insert(warnings->end(), parsingWarnings->begin(),
                       parsingWarnings->end());
    }
    delete parsingWarnings;
    parsingWarnings = nullptr;
    throw csm::Error(csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE,
                     "ISD is invalid for creating the sensor model.",
                     "UsgsAstroFrameSensorModel::constructStateFromIsd");
  }

  delete parsingWarnings;
  parsingWarnings = nullptr;

  // The state data will still be updated when a sensor model is created since
  // some state data is not in the ISD and requires a SM to compute them.
  return state.dump();
+24 −29
Original line number Diff line number Diff line
@@ -42,28 +42,28 @@ string UsgsAstroSarSensorModel::constructStateFromIsd(
  json isd = json::parse(imageSupportData);
  json state = {};

  csm::WarningList* parsingWarnings = new csm::WarningList;
  std::shared_ptr<csm::WarningList> parsingWarnings(new csm::WarningList);

  state["m_modelName"] = getSensorModelName(isd, parsingWarnings);
  state["m_imageIdentifier"] = getImageId(isd, parsingWarnings);
  state["m_sensorName"] = getSensorName(isd, parsingWarnings);
  state["m_platformName"] = getPlatformName(isd, parsingWarnings);
  state["m_modelName"] = getSensorModelName(isd, parsingWarnings.get());
  state["m_imageIdentifier"] = getImageId(isd, parsingWarnings.get());
  state["m_sensorName"] = getSensorName(isd, parsingWarnings.get());
  state["m_platformName"] = getPlatformName(isd, parsingWarnings.get());

  state["m_nLines"] = getTotalLines(isd, parsingWarnings);
  state["m_nSamples"] = getTotalSamples(isd, parsingWarnings);
  state["m_nLines"] = getTotalLines(isd, parsingWarnings.get());
  state["m_nSamples"] = getTotalSamples(isd, parsingWarnings.get());

  // Zero computed state values
  state["m_referencePointXyz"] = vector<double>(3, 0.0);

  // sun_position and velocity are required for getIlluminationDirection
  state["m_sunPosition"] = getSunPositions(isd, parsingWarnings);
  state["m_sunVelocity"] = getSunVelocities(isd, parsingWarnings);
  state["m_sunPosition"] = getSunPositions(isd, parsingWarnings.get());
  state["m_sunVelocity"] = getSunVelocities(isd, parsingWarnings.get());

  state["m_centerEphemerisTime"] = getCenterTime(isd, parsingWarnings);
  state["m_startingEphemerisTime"] = getStartingTime(isd, parsingWarnings);
  state["m_endingEphemerisTime"] = getEndingTime(isd, parsingWarnings);
  state["m_centerEphemerisTime"] = getCenterTime(isd, parsingWarnings.get());
  state["m_startingEphemerisTime"] = getStartingTime(isd, parsingWarnings.get());
  state["m_endingEphemerisTime"] = getEndingTime(isd, parsingWarnings.get());

  state["m_exposureDuration"] = getExposureDuration(isd, parsingWarnings);
  state["m_exposureDuration"] = getExposureDuration(isd, parsingWarnings.get());

  try {
    state["m_dtEphem"] = isd.at("dt_ephemeris");
@@ -85,31 +85,31 @@ string UsgsAstroSarSensorModel::constructStateFromIsd(
                     "UsgsAstroSarSensorModel::constructStateFromIsd()"));
  }

  state["m_positions"] = getSensorPositions(isd, parsingWarnings);
  state["m_velocities"] = getSensorVelocities(isd, parsingWarnings);
  state["m_positions"] = getSensorPositions(isd, parsingWarnings.get());
  state["m_velocities"] = getSensorVelocities(isd, parsingWarnings.get());

  state["m_currentParameterValue"] = vector<double>(NUM_PARAMETERS, 0.0);

  // get radii
  state["m_minorAxis"] = getSemiMinorRadius(isd, parsingWarnings);
  state["m_majorAxis"] = getSemiMajorRadius(isd, parsingWarnings);
  state["m_minorAxis"] = getSemiMinorRadius(isd, parsingWarnings.get());
  state["m_majorAxis"] = getSemiMajorRadius(isd, parsingWarnings.get());

  // set identifiers
  state["m_platformIdentifier"] = getPlatformName(isd, parsingWarnings);
  state["m_sensorIdentifier"] = getSensorName(isd, parsingWarnings);
  state["m_platformIdentifier"] = getPlatformName(isd, parsingWarnings.get());
  state["m_sensorIdentifier"] = getSensorName(isd, parsingWarnings.get());

  // get reference_height
  state["m_minElevation"] = -1000;
  state["m_maxElevation"] = 1000;

  // SAR specific values
  state["m_scaledPixelWidth"] = getScaledPixelWidth(isd, parsingWarnings);
  state["m_scaledPixelWidth"] = getScaledPixelWidth(isd, parsingWarnings.get());
  state["m_scaleConversionCoefficients"] =
      getScaleConversionCoefficients(isd, parsingWarnings);
      getScaleConversionCoefficients(isd, parsingWarnings.get());
  state["m_scaleConversionTimes"] =
      getScaleConversionTimes(isd, parsingWarnings);
  state["m_wavelength"] = getWavelength(isd, parsingWarnings);
  state["m_lookDirection"] = getLookDirection(isd, parsingWarnings);
      getScaleConversionTimes(isd, parsingWarnings.get());
  state["m_wavelength"] = getWavelength(isd, parsingWarnings.get());
  state["m_lookDirection"] = getLookDirection(isd, parsingWarnings.get());

  // Default to identity covariance
  state["m_covariance"] = vector<double>(NUM_PARAMETERS * NUM_PARAMETERS, 0.0);
@@ -127,16 +127,11 @@ string UsgsAstroSarSensorModel::constructStateFromIsd(
    csm::Warning warn = parsingWarnings->front();
    message += warn.getMessage();
    message += "]";
    parsingWarnings = nullptr;
    delete parsingWarnings;
    MESSAGE_LOG(message);
    throw csm::Error(csm::Error::SENSOR_MODEL_NOT_CONSTRUCTIBLE, message,
                     "UsgsAstroSarSensorModel::constructStateFromIsd");
  }

  delete parsingWarnings;
  parsingWarnings = nullptr;

  // The state data will still be updated when a sensor model is created since
  // some state data is not in the ISD and requires a SM to compute them.
  return state.dump();
Loading