#ifndef STORAGE_LEVELDB_PORT_THREAD_ANNOTATIONS_H_
#define STORAGE_LEVELDB_PORT_THREAD_ANNOTATIONS_H_
#if !defined(THREAD_ANNOTATION_ATTRIBUTE__)
#if defined(__clang__)
#define THREAD_ANNOTATION_ATTRIBUTE__ …
#else
#define THREAD_ANNOTATION_ATTRIBUTE__ …
#endif
#endif
#ifndef GUARDED_BY
#define GUARDED_BY …
#endif
#ifndef PT_GUARDED_BY
#define PT_GUARDED_BY …
#endif
#ifndef ACQUIRED_AFTER
#define ACQUIRED_AFTER …
#endif
#ifndef ACQUIRED_BEFORE
#define ACQUIRED_BEFORE …
#endif
#ifndef EXCLUSIVE_LOCKS_REQUIRED
#define EXCLUSIVE_LOCKS_REQUIRED …
#endif
#ifndef SHARED_LOCKS_REQUIRED
#define SHARED_LOCKS_REQUIRED …
#endif
#ifndef LOCKS_EXCLUDED
#define LOCKS_EXCLUDED …
#endif
#ifndef LOCK_RETURNED
#define LOCK_RETURNED …
#endif
#ifndef LOCKABLE
#define LOCKABLE …
#endif
#ifndef SCOPED_LOCKABLE
#define SCOPED_LOCKABLE …
#endif
#ifndef EXCLUSIVE_LOCK_FUNCTION
#define EXCLUSIVE_LOCK_FUNCTION …
#endif
#ifndef SHARED_LOCK_FUNCTION
#define SHARED_LOCK_FUNCTION …
#endif
#ifndef EXCLUSIVE_TRYLOCK_FUNCTION
#define EXCLUSIVE_TRYLOCK_FUNCTION …
#endif
#ifndef SHARED_TRYLOCK_FUNCTION
#define SHARED_TRYLOCK_FUNCTION …
#endif
#ifndef UNLOCK_FUNCTION
#define UNLOCK_FUNCTION …
#endif
#ifndef NO_THREAD_SAFETY_ANALYSIS
#define NO_THREAD_SAFETY_ANALYSIS …
#endif
#ifndef ASSERT_EXCLUSIVE_LOCK
#define ASSERT_EXCLUSIVE_LOCK …
#endif
#ifndef ASSERT_SHARED_LOCK
#define ASSERT_SHARED_LOCK …
#endif
#endif