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