Index: third_party/protobuf/src/google/protobuf/stubs/mutex.h |
diff --git a/third_party/protobuf/src/google/protobuf/stubs/mutex.h b/third_party/protobuf/src/google/protobuf/stubs/mutex.h |
deleted file mode 100644 |
index 7ef1cb691635f412bd431c127cfebe5a0e48ee93..0000000000000000000000000000000000000000 |
--- a/third_party/protobuf/src/google/protobuf/stubs/mutex.h |
+++ /dev/null |
@@ -1,148 +0,0 @@ |
-// Copyright (c) 2006, Google Inc. |
-// All rights reserved. |
-// |
-// Redistribution and use in source and binary forms, with or without |
-// modification, are permitted provided that the following conditions are |
-// met: |
-// |
-// * Redistributions of source code must retain the above copyright |
-// notice, this list of conditions and the following disclaimer. |
-// * Redistributions in binary form must reproduce the above |
-// copyright notice, this list of conditions and the following disclaimer |
-// in the documentation and/or other materials provided with the |
-// distribution. |
-// * Neither the name of Google Inc. nor the names of its |
-// contributors may be used to endorse or promote products derived from |
-// this software without specific prior written permission. |
-// |
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- |
-#ifndef GOOGLE_PROTOBUF_STUBS_MUTEX_H_ |
-#define GOOGLE_PROTOBUF_STUBS_MUTEX_H_ |
- |
-#ifdef GOOGLE_PROTOBUF_NO_THREADLOCAL |
-#include <pthread.h> |
-#endif |
- |
-#include <google/protobuf/stubs/macros.h> |
- |
-// =================================================================== |
-// emulates google3/base/mutex.h |
-namespace google { |
-namespace protobuf { |
-namespace internal { |
- |
-// A Mutex is a non-reentrant (aka non-recursive) mutex. At most one thread T |
-// may hold a mutex at a given time. If T attempts to Lock() the same Mutex |
-// while holding it, T will deadlock. |
-class LIBPROTOBUF_EXPORT Mutex { |
- public: |
- // Create a Mutex that is not held by anybody. |
- Mutex(); |
- |
- // Destructor |
- ~Mutex(); |
- |
- // Block if necessary until this Mutex is free, then acquire it exclusively. |
- void Lock(); |
- |
- // Release this Mutex. Caller must hold it exclusively. |
- void Unlock(); |
- |
- // Crash if this Mutex is not held exclusively by this thread. |
- // May fail to crash when it should; will never crash when it should not. |
- void AssertHeld(); |
- |
- private: |
- struct Internal; |
- Internal* mInternal; |
- |
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Mutex); |
-}; |
- |
-// Undefine the macros to workaround the conflicts with Google internal |
-// MutexLock implementation. |
-// TODO(liujisi): Remove the undef once internal macros are removed. |
-#undef MutexLock |
-#undef ReaderMutexLock |
-#undef WriterMutexLock |
-#undef MutexLockMaybe |
- |
-// MutexLock(mu) acquires mu when constructed and releases it when destroyed. |
-class LIBPROTOBUF_EXPORT MutexLock { |
- public: |
- explicit MutexLock(Mutex *mu) : mu_(mu) { this->mu_->Lock(); } |
- ~MutexLock() { this->mu_->Unlock(); } |
- private: |
- Mutex *const mu_; |
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLock); |
-}; |
- |
-// TODO(kenton): Implement these? Hard to implement portably. |
-typedef MutexLock ReaderMutexLock; |
-typedef MutexLock WriterMutexLock; |
- |
-// MutexLockMaybe is like MutexLock, but is a no-op when mu is NULL. |
-class LIBPROTOBUF_EXPORT MutexLockMaybe { |
- public: |
- explicit MutexLockMaybe(Mutex *mu) : |
- mu_(mu) { if (this->mu_ != NULL) { this->mu_->Lock(); } } |
- ~MutexLockMaybe() { if (this->mu_ != NULL) { this->mu_->Unlock(); } } |
- private: |
- Mutex *const mu_; |
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLockMaybe); |
-}; |
- |
-#if defined(GOOGLE_PROTOBUF_NO_THREADLOCAL) |
-template<typename T> |
-class ThreadLocalStorage { |
- public: |
- ThreadLocalStorage() { |
- pthread_key_create(&key_, &ThreadLocalStorage::Delete); |
- } |
- ~ThreadLocalStorage() { |
- pthread_key_delete(key_); |
- } |
- T* Get() { |
- T* result = static_cast<T*>(pthread_getspecific(key_)); |
- if (result == NULL) { |
- result = new T(); |
- pthread_setspecific(key_, result); |
- } |
- return result; |
- } |
- private: |
- static void Delete(void* value) { |
- delete static_cast<T*>(value); |
- } |
- pthread_key_t key_; |
- |
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ThreadLocalStorage); |
-}; |
-#endif |
- |
-} // namespace internal |
- |
-// We made these internal so that they would show up as such in the docs, |
-// but we don't want to stick "internal::" in front of them everywhere. |
-using internal::Mutex; |
-using internal::MutexLock; |
-using internal::ReaderMutexLock; |
-using internal::WriterMutexLock; |
-using internal::MutexLockMaybe; |
- |
- |
-} // namespace protobuf |
-} // namespace google |
- |
-#endif // GOOGLE_PROTOBUF_STUBS_MUTEX_H_ |