// Copyright (c) 2012 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#ifndef BASE_THREADING_NON_THREAD_SAFE_IMPL_H_#define BASE_THREADING_NON_THREAD_SAFE_IMPL_H_#include "base/base_export.h"#include "base/threading/thread_checker_impl.h"namespacebase{// Full implementation of NonThreadSafe, for debug mode or for occasional// temporary use in release mode e.g. when you need to CHECK on a thread// bug that only occurs in the wild.//// Note: You should almost always use the NonThreadSafe class to get// the right version of the class for your build configuration.classBASE_EXPORTNonThreadSafeImpl{public:boolCalledOnValidThread()const;protected:~NonThreadSafeImpl();// Changes the thread that is checked for in CalledOnValidThread. The next// call to CalledOnValidThread will attach this class to a new thread. It is// up to the NonThreadSafe derived class to decide to expose this or not.// This may be useful when an object may be created on one thread and then// used exclusively on another thread.voidDetachFromThread();private:ThreadCheckerImplthread_checker_;};}// namespace base#endif // BASE_THREADING_NON_THREAD_SAFE_IMPL_H_