// Copyright 2018 The Fuchsia 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 SRC_LIB_CALLBACK_CAPTURE_H_
#define SRC_LIB_CALLBACK_CAPTURE_H_

#include <functional>
#include <tuple>
#include <utility>

namespace callback {

// Takes a callback, and a list of pointers. Returns a lambda that takes a list
// of objects, saves these in the pointed variables and runs the callback.
// If one wants to ignore one of the captured value, one can pass &std::ignore.
template <typename C, typename... T>
auto Capture(C callback, T*... ptrs) {
  return [callback = std::move(callback), ptrs...](auto&&... values) mutable {
    std::tie(*ptrs...) = std::make_tuple(std::forward<decltype(values)>(values)...);
    callback();
  };
}

}  // namespace callback

#endif  // SRC_LIB_CALLBACK_CAPTURE_H_
