basic_types.h revision 7cd8149e2cbad8b1ff6d481c37a4775d3c8cf2fa
17cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde/*
27cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  Copyright (c) 2011 The LibYuv project authors. All Rights Reserved.
37cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *
47cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  Use of this source code is governed by a BSD-style license
57cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  that can be found in the LICENSE file in the root of the source
67cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  tree. An additional intellectual property rights grant can be found
77cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  in the file PATENTS.  All contributing project authors may
87cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde *  be found in the AUTHORS file in the root of the source tree.
97cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde */
107cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
117cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INCLUDE_LIBYUV_BASIC_TYPES_H_
127cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INCLUDE_LIBYUV_BASIC_TYPES_H_
137cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
147cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#include <stddef.h>  // for NULL, size_t
157cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
167cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef WIN32
177cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#include <stdint.h>  // for uintptr_t
187cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
197cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
207cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT_TYPES_DEFINED
217cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT_TYPES_DEFINED
227cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifdef COMPILER_MSVC
237cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef __int64 int64;
247cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#else
257cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef long long int64;
267cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif /* COMPILER_MSVC */
277cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef int int32;
287cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef short int16;
297cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef char int8;
307cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
317cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifdef COMPILER_MSVC
327cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned __int64 uint64;
337cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef __int64 int64;
347cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT64_C
357cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_C(x) x ## I64
367cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
377cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef UINT64_C
387cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define UINT64_C(x) x ## UI64
397cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
407cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_F "I64"
417cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#else
427cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned long long uint64;
437cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef long long int64;
447cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT64_C
457cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_C(x) x ## LL
467cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
477cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef UINT64_C
487cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define UINT64_C(x) x ## ULL
497cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
507cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_F "ll"
517cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif /* COMPILER_MSVC */
527cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned int uint32;
537cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned short uint16;
547cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned char uint8;
557cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif  // INT_TYPES_DEFINED
567cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
577cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde// Detect compiler is for x86 or x64.
587cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#if defined(__x86_64__) || defined(_M_X64) || \
597cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde    defined(__i386__) || defined(_M_IX86)
607cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define CPU_X86 1
617cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif
627cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
637cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define IS_ALIGNED(p, a) (0==(reinterpret_cast<uintptr_t>(p) & ((a)-1)))
647cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define ALIGNP(p, t) \
657cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde  (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \
667cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde  ((t)-1)) & ~((t)-1))))
677cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde
687cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif // INCLUDE_LIBYUV_BASIC_TYPES_H_
69