From 51eb229da34187a4e8ce73ed9cc0e731998bb2be Mon Sep 17 00:00:00 2001 From: Keir Mierle Date: Mon, 20 Aug 2012 11:46:12 -0700 Subject: [PATCH] Add Program::ToString() to aid debugging. Change-Id: I0ab37ed2fe0947ca87a152919d4e7dc9b56dedc6 --- internal/ceres/program.cc | 11 +++++++++++ internal/ceres/program.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/internal/ceres/program.cc b/internal/ceres/program.cc index 4dfb3a17e..04248e74d 100644 --- a/internal/ceres/program.cc +++ b/internal/ceres/program.cc @@ -216,5 +216,16 @@ int Program::MaxResidualsPerResidualBlock() const { return max_residuals; } +string Program::ToString() const { + string ret = "Program dump\n"; + ret += StringPrintf("Number of parameter blocks: %d\n", NumParameterBlocks()); + ret += StringPrintf("Number of parameters: %d\n", NumParameters()); + ret += "Parameters:\n"; + for (int i = 0; i < parameter_blocks_.size(); ++i) { + ret += StringPrintf("%d: %s\n", + i, parameter_blocks_[i]->ToString().c_str()); + } +} + } // namespace internal } // namespace ceres diff --git a/internal/ceres/program.h b/internal/ceres/program.h index 7ae7db901..5002b7e75 100644 --- a/internal/ceres/program.h +++ b/internal/ceres/program.h @@ -31,6 +31,7 @@ #ifndef CERES_INTERNAL_PROGRAM_H_ #define CERES_INTERNAL_PROGRAM_H_ +#include #include #include "ceres/internal/port.h" @@ -110,6 +111,10 @@ class Program { int MaxParametersPerResidualBlock() const; int MaxResidualsPerResidualBlock() const; + // A human-readable dump of the parameter blocks for debugging. + // TODO(keir): If necessary, also dump the residual blocks. + string ToString() const; + private: // The Program does not own the ParameterBlock or ResidualBlock objects. vector parameter_blocks_;