// This file is generated by Ceres autodiff code generation."
// http://ceres-solver.org/

#include <cstdlib>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>

#include "ceres/codegen/generate_code_for_functor.h"
#include "@COST_FUNCTOR_INPUT_FILE@"

int main() {
  const std::vector<std::string> lines =
      ceres::GenerateCodeForFunctor<@FULL_CXX_FUNCTOR_TYPE_NAME@>(
          ceres::AutoDiffCodeGenOptions());
  const std::string output_file = "@GENERATED_EVALUATION_IMPL_FILE@";
  std::ofstream stream(output_file);
  if (!stream.is_open()) {
    std::cerr << "Could not open file " << output_file << std::endl;
    return EXIT_FAILURE;
  }
  for (auto line : lines) {
    stream << line << std::endl;
  }
  return EXIT_SUCCESS;
}
