Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: base/callback_internal.h

Issue 6714032: Move some files in base to base/memory. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: only base Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file contains utility functions and classes that help the 5 // This file contains utility functions and classes that help the
6 // implementation, and management of the Callback objects. 6 // implementation, and management of the Callback objects.
7 7
8 #ifndef BASE_CALLBACK_INTERNAL_H_ 8 #ifndef BASE_CALLBACK_INTERNAL_H_
9 #define BASE_CALLBACK_INTERNAL_H_ 9 #define BASE_CALLBACK_INTERNAL_H_
10 #pragma once 10 #pragma once
11 11
12 #include "base/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 13
14 namespace base { 14 namespace base {
15 namespace internal { 15 namespace internal {
16 16
17 // InvokerStorageBase is used to provide an opaque handle that the Callback 17 // InvokerStorageBase is used to provide an opaque handle that the Callback
18 // class can use to represent a function object with bound arguments. It 18 // class can use to represent a function object with bound arguments. It
19 // behaves as an existential type that is used by a corresponding 19 // behaves as an existential type that is used by a corresponding
20 // DoInvoke function to perform the function execution. This allows 20 // DoInvoke function to perform the function execution. This allows
21 // us to shield the Callback class from the types of the bound argument via 21 // us to shield the Callback class from the types of the bound argument via
22 // "type erasure." 22 // "type erasure."
23 class InvokerStorageBase : public RefCountedThreadSafe<InvokerStorageBase> { 23 class InvokerStorageBase
brettw 2011/03/24 20:37:30 This change probably isn't necessary any more
24 : public RefCountedThreadSafe<InvokerStorageBase> {
24 protected: 25 protected:
25 friend class RefCountedThreadSafe<InvokerStorageBase>; 26 friend class RefCountedThreadSafe<InvokerStorageBase>;
26 virtual ~InvokerStorageBase() {} 27 virtual ~InvokerStorageBase() {}
27 }; 28 };
28 29
29 // This structure exists purely to pass the returned |invoker_storage_| from 30 // This structure exists purely to pass the returned |invoker_storage_| from
30 // Bind() to Callback while avoiding an extra AddRef/Release() pair. 31 // Bind() to Callback while avoiding an extra AddRef/Release() pair.
31 // 32 //
32 // To do this, the constructor of Callback<> must take a const-ref. The 33 // To do this, the constructor of Callback<> must take a const-ref. The
33 // reference must be to a const object otherwise the compiler will emit a 34 // reference must be to a const object otherwise the compiler will emit a
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 ~CallbackBase(); 78 ~CallbackBase();
78 79
79 scoped_refptr<InvokerStorageBase> invoker_storage_; 80 scoped_refptr<InvokerStorageBase> invoker_storage_;
80 InvokeFuncStorage polymorphic_invoke_; 81 InvokeFuncStorage polymorphic_invoke_;
81 }; 82 };
82 83
83 } // namespace internal 84 } // namespace internal
84 } // namespace base 85 } // namespace base
85 86
86 #endif // BASE_CALLBACK_INTERNAL_H_ 87 #endif // BASE_CALLBACK_INTERNAL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698