1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// found in the LICENSE file.
4f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
5f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// This file overrides the inclusion of talk/base/basictypes.h to remove
6f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// collisions with Chromium's base/basictypes.h.   We then add back a few
7f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// items that Chromium's version doesn't provide, but libjingle expects.
8f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
9f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef OVERRIDES_TALK_BASE_BASICTYPES_H__
10f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define OVERRIDES_TALK_BASE_BASICTYPES_H__
11f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
12f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "base/basictypes.h"
13f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "build/build_config.h"
14f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
15f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef INT_TYPES_DEFINED
16f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define INT_TYPES_DEFINED
17f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifdef COMPILER_MSVC
18f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef __int64 int64;
19f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif /* COMPILER_MSVC */
20f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
21f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifdef COMPILER_MSVC
22f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef unsigned __int64 uint64;
23f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef __int64 int64;
24f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define INT64_C(x) x ## I64
25f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define UINT64_C(x) x ## UI64
26f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define INT64_F "I64"
27f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#else
28f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef INT64_C
29f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define INT64_C(x) x ## LL
30f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif
31f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef UINT64_C
32f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define UINT64_C(x) x ## ULL
33f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif
34f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef INT64_F
35f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define INT64_F "ll"
36f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif
37f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif /* COMPILER_MSVC */
38f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif  // INT_TYPES_DEFINED
39f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
40f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifdef WIN32
41f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef int socklen_t;
42f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif
43f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
44f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochnamespace talk_base {
45f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtemplate<class T> inline T _min(T a, T b) { return (a > b) ? b : a; }
46f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtemplate<class T> inline T _max(T a, T b) { return (a < b) ? b : a; }
47f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
48f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// For wait functions that take a number of milliseconds, kForever indicates
49f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch// unlimited time.
50f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochconst int kForever = -1;
51f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch}
52f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifdef WIN32
54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define alignof(t) __alignof(t)
55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#else  // !WIN32
56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define alignof(t) __alignof__(t)
57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // !WIN32
58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define IS_ALIGNED(p, a) (0==(reinterpret_cast<uintptr_t>(p) & ((a)-1)))
59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define ALIGNP(p, t) \
60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \
61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ((t)-1)) & ~((t)-1))))
62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
63f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif // OVERRIDES_TALK_BASE_BASICTYPES_H__
64