// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BUFFET_WEAVE_ERROR_CONVERSION_H_
#define BUFFET_WEAVE_ERROR_CONVERSION_H_

#include <memory>
#include <string>

#include <chromeos/errors/error.h>
#include <weave/error.h>

namespace buffet {

template <class Source, class Destination>
void ConvertError(const Source& source,
                  std::unique_ptr<Destination>* destination) {
  const Source* inner_error = source.GetInnerError();
  if (inner_error)
    ConvertError(*inner_error, destination);

  const auto& location = source.GetLocation();
  Destination::AddTo(
      destination,
      tracked_objects::Location{
          location.function_name.c_str(), location.file_name.c_str(),
          location.line_number, tracked_objects::GetProgramCounter()},
      source.GetDomain(), source.GetCode(), source.GetMessage());
}

}  // namespace buffet

#endif  // BUFFET_WEAVE_ERROR_CONVERSION_H_
