1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef BASE_CALLBACK_FORWARD_H_
6 #define BASE_CALLBACK_FORWARD_H_
7 
8 namespace base {
9 namespace internal {
10 
11 // CopyMode is used to control the copyablity of a Callback.
12 // MoveOnly indicates the Callback is not copyable but movable, and Copyable
13 // indicates it is copyable and movable.
14 enum class CopyMode {
15   MoveOnly, Copyable,
16 };
17 
18 }  // namespace internal
19 
20 template <typename Signature,
21           internal::CopyMode copy_mode = internal::CopyMode::Copyable>
22 class Callback;
23 
24 // Syntactic sugar to make Callback<void()> easier to declare since it
25 // will be used in a lot of APIs with delayed execution.
26 using Closure = Callback<void()>;
27 
28 }  // namespace base
29 
30 #endif  // BASE_CALLBACK_FORWARD_H_
31