Home | History | Annotate | Download | only in base
      1 // 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 
      9 namespace base {
     10 namespace internal {
     11 
     12 bool CallbackBase::is_null() const {
     13   return bind_state_.get() == NULL;
     14 }
     15 
     16 void CallbackBase::Reset() {
     17   polymorphic_invoke_ = NULL;
     18   // NULL the bind_state_ last, since it may be holding the last ref to whatever
     19   // object owns us, and we may be deleted after that.
     20   bind_state_ = NULL;
     21 }
     22 
     23 bool CallbackBase::Equals(const CallbackBase& other) const {
     24   return bind_state_.get() == other.bind_state_.get() &&
     25          polymorphic_invoke_ == other.polymorphic_invoke_;
     26 }
     27 
     28 CallbackBase::CallbackBase(BindStateBase* bind_state)
     29     : bind_state_(bind_state),
     30       polymorphic_invoke_(NULL) {
     31   DCHECK(!bind_state_.get() || bind_state_->HasOneRef());
     32 }
     33 
     34 CallbackBase::~CallbackBase() {
     35 }
     36 
     37 }  // namespace internal
     38 }  // namespace base
     39