diff options
Diffstat (limited to 'mojo/util')
-rw-r--r-- | mojo/util/capture_util.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/mojo/util/capture_util.h b/mojo/util/capture_util.h new file mode 100644 index 0000000..4b89eb7 --- /dev/null +++ b/mojo/util/capture_util.h @@ -0,0 +1,36 @@ +// Copyright 2015 The Chromium 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 MOJO_UTIL_CAPTURE_UTIL_H_ +#define MOJO_UTIL_CAPTURE_UTIL_H_ + +#include "mojo/public/cpp/bindings/lib/template_util.h" + +namespace mojo { + +template <typename T1> +mojo::Callback<void(T1)> Capture(T1* t1) { + return [t1](T1 got_t1) { *t1 = mojo::internal::Forward(got_t1); }; +} + +template <typename T1, typename T2> +mojo::Callback<void(T1, T2)> Capture(T1* t1, T2* t2) { + return [t1, t2](T1 got_t1, T2 got_t2) { + *t1 = mojo::internal::Forward(got_t1); + *t2 = mojo::internal::Forward(got_t2); + }; +} + +template <typename T1, typename T2, typename T3> +mojo::Callback<void(T1, T2, T3)> Capture(T1* t1, T2* t2, T3* t3) { + return [t1, t2, t3](T1 got_t1, T2 got_t2, T3 got_t3) { + *t1 = mojo::internal::Forward(got_t1); + *t2 = mojo::internal::Forward(got_t2); + *t3 = mojo::internal::Forward(got_t3); + }; +} + +} // namespace mojo + +#endif // MOJO_UTIL_CAPTURE_UTIL_H_ |