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

Side by Side Diff: base/weak_ptr.cc

Issue 3012001: Move implementation from header to source. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: blank line Created 10 years, 5 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
OLDNEW
(Empty)
1 // Copyright (c) 2010 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 #include "base/weak_ptr.h"
6
7 namespace base {
8 namespace internal {
9
10 WeakReference::Flag::Flag(Flag** handle) : handle_(handle) {
11 }
12
13 WeakReference::Flag::~Flag() {
14 if (handle_)
15 *handle_ = NULL;
16 }
17
18 void WeakReference::Flag::AddRef() {
19 DCHECK(CalledOnValidThread());
20 RefCounted<Flag>::AddRef();
21 }
22
23 void WeakReference::Flag::Release() {
24 DCHECK(CalledOnValidThread());
25 RefCounted<Flag>::Release();
26 }
27
28 WeakReference::WeakReference() {
29 }
30
31 WeakReference::WeakReference(Flag* flag) : flag_(flag) {
32 }
33
34 bool WeakReference::is_valid() const {
35 return flag_ && flag_->is_valid();
36 }
37
38 WeakReferenceOwner::WeakReferenceOwner() : flag_(NULL) {
39 }
40
41 WeakReferenceOwner::~WeakReferenceOwner() {
42 Invalidate();
43 }
44
45 WeakReference WeakReferenceOwner::GetRef() const {
46 if (!flag_)
47 flag_ = new WeakReference::Flag(&flag_);
48 return WeakReference(flag_);
49 }
50
51 void WeakReferenceOwner::Invalidate() {
52 if (flag_) {
53 flag_->Invalidate();
54 flag_ = NULL;
55 }
56 }
57
58 WeakPtrBase::WeakPtrBase() {
59 }
60
61 WeakPtrBase::WeakPtrBase(const WeakReference& ref) : ref_(ref) {
62 }
63
64 } // namespace internal
65 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698