blob: f360388273dac06d9dfe4eda1a9cc737c19ee7f9 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// Copyright (c) 2012 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/callback_internal.h"
6
7#include "base/logging.h"
8
9namespace base {
10namespace internal {
11
James Robinson6a64b812014-12-03 13:38:42 -080012CallbackBase::CallbackBase(const CallbackBase& c) = default;
13CallbackBase& CallbackBase::operator=(const CallbackBase& c) = default;
14
James Robinson646469d2014-10-03 15:33:28 -070015void CallbackBase::Reset() {
16 polymorphic_invoke_ = NULL;
17 // NULL the bind_state_ last, since it may be holding the last ref to whatever
18 // object owns us, and we may be deleted after that.
19 bind_state_ = NULL;
20}
21
22bool CallbackBase::Equals(const CallbackBase& other) const {
23 return bind_state_.get() == other.bind_state_.get() &&
24 polymorphic_invoke_ == other.polymorphic_invoke_;
25}
26
27CallbackBase::CallbackBase(BindStateBase* bind_state)
28 : bind_state_(bind_state),
29 polymorphic_invoke_(NULL) {
30 DCHECK(!bind_state_.get() || bind_state_->HasOneRef());
31}
32
33CallbackBase::~CallbackBase() {
34}
35
36} // namespace internal
37} // namespace base