Home | History | Annotate | Download | only in libyuv
      1 /*
      2  *  Copyright 2011 The LibYuv 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 #ifndef INCLUDE_LIBYUV_BASIC_TYPES_H_  // NOLINT
     12 #define INCLUDE_LIBYUV_BASIC_TYPES_H_
     13 
     14 #include <stddef.h>  // for NULL, size_t
     15 
     16 #if !(defined(_MSC_VER) && (_MSC_VER < 1600))
     17 #include <stdint.h>  // for uintptr_t
     18 #endif
     19 
     20 #ifndef INT_TYPES_DEFINED
     21 #define INT_TYPES_DEFINED
     22 #ifdef COMPILER_MSVC
     23 typedef unsigned __int64 uint64;
     24 typedef __int64 int64;
     25 #ifndef INT64_C
     26 #define INT64_C(x) x ## I64
     27 #endif
     28 #ifndef UINT64_C
     29 #define UINT64_C(x) x ## UI64
     30 #endif
     31 #define INT64_F "I64"
     32 #else  // COMPILER_MSVC
     33 #ifdef __LP64__
     34 typedef unsigned long uint64;  // NOLINT
     35 typedef long int64;  // NOLINT
     36 #ifndef INT64_C
     37 #define INT64_C(x) x ## L
     38 #endif
     39 #ifndef UINT64_C
     40 #define UINT64_C(x) x ## UL
     41 #endif
     42 #define INT64_F "l"
     43 #else  // __LP64__
     44 typedef unsigned long long uint64;  // NOLINT
     45 typedef long long int64;  // NOLINT
     46 #ifndef INT64_C
     47 #define INT64_C(x) x ## LL
     48 #endif
     49 #ifndef UINT64_C
     50 #define UINT64_C(x) x ## ULL
     51 #endif
     52 #define INT64_F "ll"
     53 #endif  // __LP64__
     54 #endif  // COMPILER_MSVC
     55 typedef unsigned int uint32;
     56 typedef int int32;
     57 typedef unsigned short uint16;  // NOLINT
     58 typedef short int16;  // NOLINT
     59 typedef unsigned char uint8;
     60 typedef signed char int8;
     61 #endif  // INT_TYPES_DEFINED
     62 
     63 // Detect compiler is for x86 or x64.
     64 #if defined(__x86_64__) || defined(_M_X64) || \
     65     defined(__i386__) || defined(_M_IX86)
     66 #define CPU_X86 1
     67 #endif
     68 // Detect compiler is for ARM.
     69 #if defined(__arm__) || defined(_M_ARM)
     70 #define CPU_ARM 1
     71 #endif
     72 
     73 #ifndef ALIGNP
     74 #define ALIGNP(p, t) \
     75     (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \
     76     ((t) - 1)) & ~((t) - 1))))
     77 #endif
     78 
     79 #if !defined(LIBYUV_API)
     80 #if defined(_WIN32) || defined(__CYGWIN__)
     81 #if defined(LIBYUV_BUILDING_SHARED_LIBRARY)
     82 #define LIBYUV_API __declspec(dllexport)
     83 #elif defined(LIBYUV_USING_SHARED_LIBRARY)
     84 #define LIBYUV_API __declspec(dllimport)
     85 #else
     86 #define LIBYUV_API
     87 #endif  // LIBYUV_BUILDING_SHARED_LIBRARY
     88 #elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__APPLE__) && \
     89     (defined(LIBYUV_BUILDING_SHARED_LIBRARY) || \
     90     defined(LIBYUV_USING_SHARED_LIBRARY))
     91 #define LIBYUV_API __attribute__ ((visibility ("default")))
     92 #else
     93 #define LIBYUV_API
     94 #endif  // __GNUC__
     95 #endif  // LIBYUV_API
     96 
     97 #endif  // INCLUDE_LIBYUV_BASIC_TYPES_H_  NOLINT
     98