1/*
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
108