Index: third_party/libphonenumber/cpp/src/base/compiler_specific.h |
=================================================================== |
--- third_party/libphonenumber/cpp/src/base/compiler_specific.h (revision 0) |
+++ third_party/libphonenumber/cpp/src/base/compiler_specific.h (revision 0) |
@@ -0,0 +1,121 @@ |
+// Copyright (c) 2006-2008 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_COMPILER_SPECIFIC_H_ |
+#define BASE_COMPILER_SPECIFIC_H_ |
+#pragma once |
+ |
+#include "build/build_config.h" |
+ |
+#if defined(COMPILER_MSVC) |
+ |
+// Macros for suppressing and disabling warnings on MSVC. |
+// |
+// Warning numbers are enumerated at: |
+// http://msdn.microsoft.com/en-us/library/8x5x43k7(VS.80).aspx |
+// |
+// The warning pragma: |
+// http://msdn.microsoft.com/en-us/library/2c8f766e(VS.80).aspx |
+// |
+// Using __pragma instead of #pragma inside macros: |
+// http://msdn.microsoft.com/en-us/library/d9x1s805.aspx |
+ |
+// MSVC_SUPPRESS_WARNING disables warning |n| for the remainder of the line and |
+// for the next line of the source file. |
+#define MSVC_SUPPRESS_WARNING(n) __pragma(warning(suppress:n)) |
+ |
+// MSVC_PUSH_DISABLE_WARNING pushes |n| onto a stack of warnings to be disabled. |
+// The warning remains disabled until popped by MSVC_POP_WARNING. |
+#define MSVC_PUSH_DISABLE_WARNING(n) __pragma(warning(push)) \ |
+ __pragma(warning(disable:n)) |
+ |
+// MSVC_PUSH_WARNING_LEVEL pushes |n| as the global warning level. The level |
+// remains in effect until popped by MSVC_POP_WARNING(). Use 0 to disable all |
+// warnings. |
+#define MSVC_PUSH_WARNING_LEVEL(n) __pragma(warning(push, n)) |
+ |
+// Pop effects of innermost MSVC_PUSH_* macro. |
+#define MSVC_POP_WARNING() __pragma(warning(pop)) |
+ |
+#define MSVC_DISABLE_OPTIMIZE() __pragma(optimize("", off)) |
+#define MSVC_ENABLE_OPTIMIZE() __pragma(optimize("", on)) |
+ |
+// Allows |this| to be passed as an argument in constructor initializer lists. |
+// This uses push/pop instead of the seemingly simpler suppress feature to avoid |
+// having the warning be disabled for more than just |code|. |
+// |
+// Example usage: |
+// Foo::Foo() : x(NULL), ALLOW_THIS_IN_INITIALIZER_LIST(y(this)), z(3) {} |
+// |
+// Compiler warning C4355: 'this': used in base member initializer list: |
+// http://msdn.microsoft.com/en-us/library/3c594ae3(VS.80).aspx |
+#define ALLOW_THIS_IN_INITIALIZER_LIST(code) MSVC_PUSH_DISABLE_WARNING(4355) \ |
+ code \ |
+ MSVC_POP_WARNING() |
+ |
+#else // Not MSVC |
+ |
+#define MSVC_SUPPRESS_WARNING(n) |
+#define MSVC_PUSH_DISABLE_WARNING(n) |
+#define MSVC_PUSH_WARNING_LEVEL(n) |
+#define MSVC_POP_WARNING() |
+#define MSVC_DISABLE_OPTIMIZE() |
+#define MSVC_ENABLE_OPTIMIZE() |
+#define ALLOW_THIS_IN_INITIALIZER_LIST(code) code |
+ |
+#endif // COMPILER_MSVC |
+ |
+ |
+// Annotate a variable indicating it's ok if the variable is not used. |
+// (Typically used to silence a compiler warning when the assignment |
+// is important for some other reason.) |
+// Use like: |
+// int x ALLOW_UNUSED = ...; |
+#if defined(COMPILER_GCC) |
+#define ALLOW_UNUSED __attribute__((unused)) |
+#else |
+#define ALLOW_UNUSED |
+#endif |
+ |
+// Annotate a virtual method indicating it must be overriding a virtual |
+// method in the parent class. |
+// Use like: |
+// virtual void foo() OVERRIDE; |
+#if defined(COMPILER_MSVC) |
+#define OVERRIDE override |
+#elif defined(__clang__) |
+#define OVERRIDE override |
+#else |
+#define OVERRIDE |
+#endif |
+ |
+// Annotate a function indicating the caller must examine the return value. |
+// Use like: |
+// int foo() WARN_UNUSED_RESULT; |
+#if defined(COMPILER_GCC) |
+#define WARN_UNUSED_RESULT __attribute__((warn_unused_result)) |
+#else |
+#define WARN_UNUSED_RESULT |
+#endif |
+ |
+// Tell the compiler a function is using a printf-style format string. |
+// |format_param| is the one-based index of the format string parameter; |
+// |dots_param| is the one-based index of the "..." parameter. |
+// For v*printf functions (which take a va_list), pass 0 for dots_param. |
+// (This is undocumented but matches what the system C headers do.) |
+#if defined(COMPILER_GCC) |
+#define PRINTF_FORMAT(format_param, dots_param) \ |
+ __attribute__((format(printf, format_param, dots_param))) |
+#else |
+#define PRINTF_FORMAT(format_param, dots_param) |
+#endif |
+ |
+// WPRINTF_FORMAT is the same, but for wide format strings. |
+// This doesn't appear to yet be implemented in any compiler. |
+// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38308 . |
+#define WPRINTF_FORMAT(format_param, dots_param) |
+// If available, it would look like: |
+// __attribute__((format(wprintf, format_param, dots_param))) |
+ |
+#endif // BASE_COMPILER_SPECIFIC_H_ |
Property changes on: third_party\libphonenumber\cpp\src\base\compiler_specific.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |