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