Lint changes from William Rucklidge

Change-Id: I54ee9d7b90232bb0139398a78a09cf4035d23ea6
diff --git a/examples/ellipse_approximation.cc b/examples/ellipse_approximation.cc
index 7b2bf12..f519f0c 100644
--- a/examples/ellipse_approximation.cc
+++ b/examples/ellipse_approximation.cc
@@ -272,7 +272,7 @@
 class PointToLineSegmentContourCostFunction : public ceres::CostFunction {
  public:
   PointToLineSegmentContourCostFunction(const int num_segments,
-                                        const Eigen::Vector2d y)
+                                        const Eigen::Vector2d& y)
       : num_segments_(num_segments), y_(y) {
     // The first parameter is the preimage position.
     mutable_parameter_block_sizes()->push_back(1);
@@ -323,12 +323,12 @@
   }
 
   static ceres::CostFunction* Create(const int num_segments,
-                                     const Eigen::Vector2d y) {
+                                     const Eigen::Vector2d& y) {
     return new PointToLineSegmentContourCostFunction(num_segments, y);
   }
 
  private:
-  inline double ModuloNumSegments(const double& t) const {
+  inline double ModuloNumSegments(const double t) const {
     return t - num_segments_ * floor(t / num_segments_);
   }
 
@@ -336,8 +336,9 @@
   const Eigen::Vector2d y_;
 };
 
-struct EuclideanDistanceFunctor {
-  EuclideanDistanceFunctor(const double& sqrt_weight)
+class EuclideanDistanceFunctor {
+ public:
+  explicit EuclideanDistanceFunctor(const double& sqrt_weight)
       : sqrt_weight_(sqrt_weight) {}
 
   template <typename T>
@@ -347,7 +348,7 @@
     return true;
   }
 
-  static ceres::CostFunction* Create(const double& sqrt_weight) {
+  static ceres::CostFunction* Create(const double sqrt_weight) {
     return new ceres::AutoDiffCostFunction<EuclideanDistanceFunctor, 2, 2, 2>(
         new EuclideanDistanceFunctor(sqrt_weight));
   }
diff --git a/internal/ceres/cxsparse.cc b/internal/ceres/cxsparse.cc
index 9e9c599..11ff943 100644
--- a/internal/ceres/cxsparse.cc
+++ b/internal/ceres/cxsparse.cc
@@ -77,13 +77,13 @@
   // refers to the scratch space.
   //
   // Set x = P * b.
-  cs_di_ipvec(symbolic_factor->pinv, b, scratch_, num_cols);
+  CHECK(cs_di_ipvec(symbolic_factor->pinv, b, scratch_, num_cols));
   // Set x = L \ x.
-  cs_di_lsolve(numeric_factor->L, scratch_);
+  CHECK(cs_di_lsolve(numeric_factor->L, scratch_));
   // Set x = L' \ x.
-  cs_di_ltsolve(numeric_factor->L, scratch_);
+  CHECK(cs_di_ltsolve(numeric_factor->L, scratch_));
   // Set b = P' * x.
-  cs_di_pvec(symbolic_factor->pinv, scratch_, b, num_cols);
+  CHECK(cs_di_pvec(symbolic_factor->pinv, scratch_, b, num_cols));
 }
 
 bool CXSparse::SolveCholesky(cs_di* lhs, double* rhs_and_solution) {
diff --git a/internal/ceres/cxsparse.h b/internal/ceres/cxsparse.h
index 2311f4a..1ad79f9 100644
--- a/internal/ceres/cxsparse.h
+++ b/internal/ceres/cxsparse.h
@@ -63,7 +63,9 @@
   bool SolveCholesky(cs_di* lhs, double* rhs_and_solution);
 
   // Solves a linear system given its symbolic and numeric factorization.
-  void Solve(cs_dis* symbolic_factor, csn* numeric_factor, double* rhs_and_solution);
+  void Solve(cs_dis* symbolic_factor,
+             csn* numeric_factor,
+             double* rhs_and_solution);
 
   // Compute the numeric Cholesky factorization of A, given its
   // symbolic factorization.
@@ -133,7 +135,8 @@
   int scratch_size_;
 };
 
-// Sparse cholesky factorization using CXSparse.
+// An implementation of SparseCholesky interface using the CXSparse
+// library.
 class CXSparseCholesky : public SparseCholesky {
  public:
   // Factory
@@ -142,11 +145,12 @@
   // SparseCholesky interface.
   virtual ~CXSparseCholesky();
   virtual CompressedRowSparseMatrix::StorageType StorageType() const;
-  virtual LinearSolverTerminationType Factorize(
-      CompressedRowSparseMatrix* lhs, std::string* message);
+  virtual LinearSolverTerminationType Factorize(CompressedRowSparseMatrix* lhs,
+                                                std::string* message);
   virtual LinearSolverTerminationType Solve(const double* rhs,
                                             double* solution,
                                             std::string* message);
+
  private:
   CXSparseCholesky(const OrderingType ordering_type);
   void FreeSymbolicFactorization();
@@ -161,7 +165,7 @@
 }  // namespace internal
 }  // namespace ceres
 
-#else  // CERES_NO_CXSPARSE
+#else   // CERES_NO_CXSPARSE
 
 typedef void cs_dis;
 
diff --git a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
index 4411223..6d39616 100644
--- a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
+++ b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
@@ -211,7 +211,10 @@
   cxsparse.Free(a);
   event_logger.AddEvent("NormalEquations");
 
-  cxsparse.SolveCholesky(lhs, rhs_and_solution);
+  if (!cxsparse.SolveCholesky(lhs, rhs_and_solution)) {
+    summary.termination_type = LINEAR_SOLVER_FAILURE;
+    summary.message = "CXSparse::SolveCholesky failed";
+  }
   event_logger.AddEvent("Solve");
 
   cxsparse.Free(lhs);
diff --git a/internal/ceres/dynamic_sparsity_test.cc b/internal/ceres/dynamic_sparsity_test.cc
index f40fc43..7cf5b34 100644
--- a/internal/ceres/dynamic_sparsity_test.cc
+++ b/internal/ceres/dynamic_sparsity_test.cc
@@ -273,7 +273,7 @@
 class PointToLineSegmentContourCostFunction : public CostFunction {
  public:
   PointToLineSegmentContourCostFunction(const int num_segments,
-                                        const Eigen::Vector2d y)
+                                        const Eigen::Vector2d& y)
       : num_segments_(num_segments), y_(y) {
     // The first parameter is the preimage position.
     mutable_parameter_block_sizes()->push_back(1);
@@ -323,12 +323,12 @@
     return true;
   }
 
-  static CostFunction* Create(const int num_segments, const Eigen::Vector2d y) {
+  static CostFunction* Create(const int num_segments, const Eigen::Vector2d& y) {
     return new PointToLineSegmentContourCostFunction(num_segments, y);
   }
 
  private:
-  inline double ModuloNumSegments(const double& t) const {
+  inline double ModuloNumSegments(const double t) const {
     return t - num_segments_ * floor(t / num_segments_);
   }
 
@@ -336,8 +336,9 @@
   const Eigen::Vector2d y_;
 };
 
-struct EuclideanDistanceFunctor {
-  EuclideanDistanceFunctor(const double& sqrt_weight)
+class EuclideanDistanceFunctor {
+ public:
+  explicit EuclideanDistanceFunctor(const double& sqrt_weight)
       : sqrt_weight_(sqrt_weight) {}
 
   template <typename T>
@@ -347,7 +348,7 @@
     return true;
   }
 
-  static CostFunction* Create(const double& sqrt_weight) {
+  static CostFunction* Create(const double sqrt_weight) {
     return new AutoDiffCostFunction<EuclideanDistanceFunctor, 2, 2, 2>(
         new EuclideanDistanceFunctor(sqrt_weight));
   }
diff --git a/internal/ceres/iterative_schur_complement_solver.cc b/internal/ceres/iterative_schur_complement_solver.cc
index bf2a3fb..62b8a06 100644
--- a/internal/ceres/iterative_schur_complement_solver.cc
+++ b/internal/ceres/iterative_schur_complement_solver.cc
@@ -104,15 +104,16 @@
   cg_per_solve_options.r_tolerance = per_solve_options.r_tolerance;
   cg_per_solve_options.q_tolerance = per_solve_options.q_tolerance;
 
-  if (!CreateAndOrUpdatePreconditioner(A, per_solve_options.D)) {
-    LinearSolver::Summary summary;
-    summary.num_iterations = 0;
-    summary.termination_type = LINEAR_SOLVER_FAILURE;
-    summary.message = "Preconditioner creation or update failed.";
-    return summary;
-  }
-
+  CreatePreconditioner(A);
   if (preconditioner_.get() != NULL) {
+    if (!preconditioner_->Update(*A, per_solve_options.D)) {
+      LinearSolver::Summary summary;
+      summary.num_iterations = 0;
+      summary.termination_type = LINEAR_SOLVER_FAILURE;
+      summary.message = "Preconditioner update failed.";
+      return summary;
+    }
+
     cg_per_solve_options.preconditioner = preconditioner_.get();
   }
 
@@ -131,10 +132,10 @@
   return summary;
 }
 
-bool IterativeSchurComplementSolver::CreateAndOrUpdatePreconditioner(
-    BlockSparseMatrix* A, double* D) {
-  if (options_.preconditioner_type == IDENTITY) {
-    return true;
+void IterativeSchurComplementSolver::CreatePreconditioner(BlockSparseMatrix* A) {
+  if (options_.preconditioner_type == IDENTITY ||
+      preconditioner_.get() != NULL) {
+    return;
   }
 
   Preconditioner::Options preconditioner_options;
@@ -149,28 +150,24 @@
   preconditioner_options.f_block_size = options_.f_block_size;
   preconditioner_options.elimination_groups = options_.elimination_groups;
 
-  if (preconditioner_.get() == NULL) {
-    switch (options_.preconditioner_type) {
-      case JACOBI:
-        preconditioner_.reset(new SparseMatrixPreconditionerWrapper(
-            schur_complement_->block_diagonal_FtF_inverse()));
-        break;
-      case SCHUR_JACOBI:
-        preconditioner_.reset(new SchurJacobiPreconditioner(
-            *A->block_structure(), preconditioner_options));
-        break;
-      case CLUSTER_JACOBI:
-      case CLUSTER_TRIDIAGONAL:
-        preconditioner_.reset(new VisibilityBasedPreconditioner(
-            *A->block_structure(), preconditioner_options));
-        break;
-      default:
-        LOG(FATAL) << "Unknown Preconditioner Type";
-    }
+  switch (options_.preconditioner_type) {
+    case JACOBI:
+      preconditioner_.reset(new SparseMatrixPreconditionerWrapper(
+          schur_complement_->block_diagonal_FtF_inverse()));
+      break;
+    case SCHUR_JACOBI:
+      preconditioner_.reset(new SchurJacobiPreconditioner(
+          *A->block_structure(), preconditioner_options));
+      break;
+    case CLUSTER_JACOBI:
+    case CLUSTER_TRIDIAGONAL:
+      preconditioner_.reset(new VisibilityBasedPreconditioner(
+          *A->block_structure(), preconditioner_options));
+      break;
+    default:
+      LOG(FATAL) << "Unknown Preconditioner Type";
   }
-
-  return preconditioner_->Update(*A, D);
-}
+};
 
 }  // namespace internal
 }  // namespace ceres
diff --git a/internal/ceres/iterative_schur_complement_solver.h b/internal/ceres/iterative_schur_complement_solver.h
index ed99f2d..ffcfd8d 100644
--- a/internal/ceres/iterative_schur_complement_solver.h
+++ b/internal/ceres/iterative_schur_complement_solver.h
@@ -79,7 +79,7 @@
       const LinearSolver::PerSolveOptions& options,
       double* x);
 
-  bool CreateAndOrUpdatePreconditioner(BlockSparseMatrix* A, double* D);
+  void CreatePreconditioner(BlockSparseMatrix* A);
 
   LinearSolver::Options options_;
   scoped_ptr<internal::ImplicitSchurComplement> schur_complement_;
diff --git a/internal/ceres/sparse_cholesky.h b/internal/ceres/sparse_cholesky.h
index 07d328d..d77cccd 100644
--- a/internal/ceres/sparse_cholesky.h
+++ b/internal/ceres/sparse_cholesky.h
@@ -47,7 +47,7 @@
 //
 // Instances of SparseCholesky are expected to cache the symbolic
 // factorization of the linear system. They do this on the first call
-// to Factorize of FactorAndSolve. Subsequent calls to Factorize and
+// to Factorize or FactorAndSolve. Subsequent calls to Factorize and
 // FactorAndSolve are expected to have the same sparsity structure.
 //
 // Example usage:
@@ -85,7 +85,7 @@
   // strategy used.
   virtual CompressedRowSparseMatrix::StorageType StorageType() const = 0;
 
-  // Compute the numeric factorization of the given matrix.  If this
+  // Computes the numeric factorization of the given matrix.  If this
   // is the first call to Factorize, first the symbolic factorization
   // will be computed and cached and the numeric factorization will be
   // computed based on that.
@@ -96,7 +96,7 @@
   virtual LinearSolverTerminationType Factorize(
       CompressedRowSparseMatrix* lhs, std::string* message) = 0;
 
-  // Compute the solution to the equation
+  // Computes the solution to the equation
   //
   // lhs * solution = rhs
   //
@@ -106,7 +106,7 @@
                                             std::string* message) = 0;
 
   // Convenience method which combines a call to Factorize and
-  // Solve. Solve is only called is Factorize returns
+  // Solve. Solve is only called if Factorize returns
   // LINEAR_SOLVER_SUCCESS.
   virtual LinearSolverTerminationType FactorAndSolve(
       CompressedRowSparseMatrix* lhs,