Add unit test for the Settings API Bubble.
[chromium-blink-merge.git] / base / port.h
blob307f25756d3126abacbaee4921bc186e86b4d640
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef BASE_PORT_H_
6 #define BASE_PORT_H_
8 #include <stdarg.h>
9 #include "build/build_config.h"
11 #ifdef COMPILER_MSVC
12 #define GG_LONGLONG(x) x##I64
13 #define GG_ULONGLONG(x) x##UI64
14 #else
15 #define GG_LONGLONG(x) x##LL
16 #define GG_ULONGLONG(x) x##ULL
17 #endif
19 // DEPRECATED: In Chromium, we force-define __STDC_CONSTANT_MACROS, so you can
20 // just use the regular (U)INTn_C macros from <stdint.h>.
21 // TODO(viettrungluu): Remove the remaining GG_(U)INTn_C macros.
22 #define GG_INT64_C(x) GG_LONGLONG(x)
23 #define GG_UINT64_C(x) GG_ULONGLONG(x)
25 // It's possible for functions that use a va_list, such as StringPrintf, to
26 // invalidate the data in it upon use. The fix is to make a copy of the
27 // structure before using it and use that copy instead. va_copy is provided
28 // for this purpose. MSVC does not provide va_copy, so define an
29 // implementation here. It is not guaranteed that assignment is a copy, so the
30 // StringUtil.VariableArgsFunc unit test tests this capability.
31 #if defined(COMPILER_GCC)
32 #define GG_VA_COPY(a, b) (va_copy(a, b))
33 #elif defined(COMPILER_MSVC)
34 #define GG_VA_COPY(a, b) (a = b)
35 #endif
37 // Define an OS-neutral wrapper for shared library entry points
38 #if defined(OS_WIN)
39 #define API_CALL __stdcall
40 #else
41 #define API_CALL
42 #endif
44 #endif // BASE_PORT_H_