Index: third_party/re2/util/util.h |
diff --git a/third_party/re2/util/util.h b/third_party/re2/util/util.h |
index c59d91f2ccf85d356a39fc9012ad74543b197212..a4fdfcc936ac99577b5380216d3fe42f95a37f75 100644 |
--- a/third_party/re2/util/util.h |
+++ b/third_party/re2/util/util.h |
@@ -9,18 +9,16 @@ |
#include <stdio.h> |
#include <string.h> |
#include <stdint.h> |
-#include <stddef.h> // For size_t |
+#include <stddef.h> // For size_t |
#include <assert.h> |
#include <stdarg.h> |
-#include <time.h> // For clock_gettime, CLOCK_REALTIME |
-#include <ctype.h> // For isdigit, isalpha |
- |
-#if !defined(_WIN32) |
-#include <sys/time.h> // For gettimeofday |
+#ifndef WIN32 |
+#include <sys/time.h> |
#endif |
+#include <time.h> |
+#include <ctype.h> // For isdigit, isalpha. |
// C++ |
-#include <ctime> |
#include <vector> |
#include <string> |
#include <algorithm> |
@@ -30,6 +28,9 @@ |
#include <ostream> |
#include <utility> |
#include <set> |
+ |
+#include "build/build_config.h" |
+#include "base/third_party/dynamic_annotations/dynamic_annotations.h" |
// Use std names. |
using std::set; |
@@ -45,7 +46,7 @@ |
using std::swap; |
using std::make_pair; |
-#if defined(__GNUC__) && !defined(USE_CXX0X) && !defined(_LIBCPP_ABI_VERSION) |
+#if defined(__GNUC__) && !defined(USE_CXX0X) && !defined(_LIBCPP_ABI_VERSION) && !defined(OS_ANDROID) |
#include <tr1/unordered_set> |
using std::tr1::unordered_set; |
@@ -53,22 +54,11 @@ |
#else |
#include <unordered_set> |
-#if defined(_WIN32) |
+#if defined(WIN32) || (defined(OS_ANDROID) && !defined(_LIBCPP_ABI_VERSION)) |
using std::tr1::unordered_set; |
#else |
using std::unordered_set; |
#endif |
- |
-#endif |
- |
-#ifdef _WIN32 |
- |
-#define snprintf _snprintf_s |
-#define stricmp _stricmp |
-#define strtof strtod /* not really correct but best we can do */ |
-#define strtoll _strtoi64 |
-#define strtoull _strtoui64 |
-#define vsnprintf vsnprintf_s |
#endif |
@@ -87,31 +77,35 @@ |
typedef unsigned int uint; |
typedef unsigned short ushort; |
-// Prevent the compiler from complaining about or optimizing away variables |
-// that appear unused. |
-#undef ATTRIBUTE_UNUSED |
-#if defined(__GNUC__) |
-#define ATTRIBUTE_UNUSED __attribute__ ((unused)) |
-#else |
-#define ATTRIBUTE_UNUSED |
-#endif |
- |
// COMPILE_ASSERT causes a compile error about msg if expr is not true. |
#if __cplusplus >= 201103L |
#define COMPILE_ASSERT(expr, msg) static_assert(expr, #msg) |
#else |
template<bool> struct CompileAssert {}; |
#define COMPILE_ASSERT(expr, msg) \ |
- typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] ATTRIBUTE_UNUSED |
+ typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] |
#endif |
-// DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions. |
+// DISALLOW_EVIL_CONSTRUCTORS disallows the copy and operator= functions. |
// It goes in the private: declarations in a class. |
-#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ |
+#define DISALLOW_EVIL_CONSTRUCTORS(TypeName) \ |
TypeName(const TypeName&); \ |
void operator=(const TypeName&) |
-#define arraysize(array) (int)(sizeof(array)/sizeof((array)[0])) |
+#define arraysize(array) (sizeof(array)/sizeof((array)[0])) |
+ |
+// Fake lock annotations. For real ones, see |
+// http://code.google.com/p/data-race-test/ |
+#ifndef ANNOTATE_PUBLISH_MEMORY_RANGE |
+#define ANNOTATE_PUBLISH_MEMORY_RANGE(a, b) |
+#define ANNOTATE_IGNORE_WRITES_BEGIN() |
+#define ANNOTATE_IGNORE_WRITES_END() |
+#define ANNOTATE_BENIGN_RACE(a, b) |
+#define NO_THREAD_SAFETY_ANALYSIS |
+#define ANNOTATE_HAPPENS_BEFORE(x) |
+#define ANNOTATE_HAPPENS_AFTER(x) |
+#define ANNOTATE_UNPROTECTED_READ(x) (x) |
+#endif |
class StringPiece; |
@@ -138,10 +132,17 @@ |
return ((uint64)x << 32) | y; |
} |
-bool RunningOnValgrind(); |
+inline bool RunningOnValgrindOrMemorySanitizer() { |
+#if defined(MEMORY_SANITIZER) |
+ return true; |
+#else |
+ return RunningOnValgrind(); |
+#endif |
+} |
} // namespace re2 |
+#include "util/arena.h" |
#include "util/logging.h" |
#include "util/mutex.h" |
#include "util/utf.h" |