blob: ae71690f186914c7eb9809fb4cb4d33ab4bc6b9d [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11/*
12 *
13 * This file contains type definitions used in all WebRtc APIs.
14 *
15 */
16
17/* Reserved words definitions */
18#define WEBRTC_EXTERN extern
19#define G_CONST const
20#define WEBRTC_INLINE extern __inline
21
22#ifndef WEBRTC_TYPEDEFS_H
23#define WEBRTC_TYPEDEFS_H
24
25/* Define WebRtc preprocessor identifiers based on the current build platform */
26#if defined(WIN32)
27 // Windows & Windows Mobile
28 #if !defined(WEBRTC_TARGET_PC)
29 #define WEBRTC_TARGET_PC
30 #endif
31#elif defined(__APPLE__)
32 // Mac OS X
33 #if defined(__LITTLE_ENDIAN__ ) //TODO: is this used?
34 #if !defined(WEBRTC_TARGET_MAC_INTEL)
35 #define WEBRTC_TARGET_MAC_INTEL
36 #endif
37 #else
38 #if !defined(WEBRTC_TARGET_MAC)
39 #define WEBRTC_TARGET_MAC
40 #endif
41 #endif
42#else
43 // Linux etc.
44 #if !defined(WEBRTC_TARGET_PC)
45 #define WEBRTC_TARGET_PC
46 #endif
47#endif
48
49#if defined(WEBRTC_TARGET_PC)
50
51#if !defined(_MSC_VER)
52 #include <stdint.h>
53#else
54 // Define C99 equivalent types.
55 // Since MSVC doesn't include these headers, we have to write our own
56 // version to provide a compatibility layer between MSVC and the WebRTC
57 // headers.
58 typedef signed char int8_t;
59 typedef signed short int16_t;
60 typedef signed int int32_t;
61 typedef signed long long int64_t;
62 typedef unsigned char uint8_t;
63 typedef unsigned short uint16_t;
64 typedef unsigned int uint32_t;
65 typedef unsigned long long uint64_t;
66#endif
67
68#if defined(WIN32)
69 typedef __int64 WebRtc_Word64;
70 typedef unsigned __int64 WebRtc_UWord64;
71#else
72 typedef int64_t WebRtc_Word64;
73 typedef uint64_t WebRtc_UWord64;
74#endif
75 typedef int32_t WebRtc_Word32;
76 typedef uint32_t WebRtc_UWord32;
77 typedef int16_t WebRtc_Word16;
78 typedef uint16_t WebRtc_UWord16;
79 typedef char WebRtc_Word8;
80 typedef uint8_t WebRtc_UWord8;
81
82 /* Define endian for the platform */
83 #define WEBRTC_LITTLE_ENDIAN
84
85#elif defined(WEBRTC_TARGET_MAC_INTEL)
86 #include <stdint.h>
87
88 typedef int64_t WebRtc_Word64;
89 typedef uint64_t WebRtc_UWord64;
90 typedef int32_t WebRtc_Word32;
91 typedef uint32_t WebRtc_UWord32;
92 typedef int16_t WebRtc_Word16;
93 typedef char WebRtc_Word8;
94 typedef uint16_t WebRtc_UWord16;
95 typedef uint8_t WebRtc_UWord8;
96
97 /* Define endian for the platform */
98 #define WEBRTC_LITTLE_ENDIAN
99
100#else
101
102 #error "No platform defined for WebRtc type definitions (webrtc_typedefs.h)"
103
104#endif
105
106
107#endif // WEBRTC_TYPEDEFS_H