include/AK/SoundEngine/Platforms/Windows/AkTypes.h
Go to the documentation of this file.00001
00002
00003
00004
00006
00007
00008
00011
00012 #ifndef _AK_DATA_TYPES_PLATFORM_H_
00013 #define _AK_DATA_TYPES_PLATFORM_H_
00014
00015 #include <limits.h>
00016
00017 #ifndef __cplusplus
00018 #include <wchar.h>
00019 #endif
00020
00021 #define AK_WIN ///< Compiling for Windows
00022
00023 #ifndef _WIN32_WINNT
00024 #define _WIN32_WINNT 0x0602
00025 #endif
00026
00027 #if defined _M_IX86
00028 #define AK_CPU_X86 ///< Compiling for 32-bit x86 CPU
00029 #elif defined _M_AMD64
00030 #define AK_CPU_X86_64 ///< Compiling for 64-bit x86 CPU
00031 #elif defined _M_ARM
00032 #define AK_CPU_ARM
00033 #define AK_CPU_ARM_NEON
00034 #endif
00035
00036 #ifdef WINAPI_FAMILY
00037 #include <winapifamily.h>
00038 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
00039 #define AK_USE_METRO_API
00040 #define AK_USE_THREAD_EMULATION
00041 #if defined(WINAPI_PARTITION_PHONE) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE)
00042 #define AK_WINPHONE
00043 #endif
00044 #endif
00045 #endif
00046
00047 #ifndef AK_WINPHONE
00048 #define AK_MOTION ///< Internal use
00049 #define AK_71AUDIO
00050 #endif
00051
00052 #define AK_LFECENTER ///< Internal use
00053 #define AK_REARCHANNELS ///< Internal use
00054
00055 #define AK_SUPPORT_WCHAR ///< Can support wchar
00056 #define AK_OS_WCHAR ///< Use wchar natively
00057
00058 #define AK_RESTRICT __restrict ///< Refers to the __restrict compilation flag available on some platforms
00059 #define AK_EXPECT_FALSE( _x ) (_x)
00060 #define AkForceInline __forceinline ///< Force inlining
00061 #define AkNoInline __declspec(noinline) ///< Disable inlining
00062
00063 #define AK_SIMD_ALIGNMENT 16 ///< Platform-specific alignment requirement for SIMD data
00064 #define AK_ALIGN_SIMD( __Declaration__ ) __declspec(align(AK_SIMD_ALIGNMENT)) __Declaration__ ///< Platform-specific alignment requirement for SIMD data
00065 #define AK_ALIGN_DMA ///< Platform-specific data alignment for DMA transfers
00066 #define AK_ALIGN_FASTDMA ///< Platform-specific data alignment for faster DMA transfers
00067 #define AK_ALIGN_SIZE_FOR_DMA( __Size__ ) (__Size__) ///< Used to align sizes to next 16 byte boundary on platfroms that require it
00068 #define AK_BUFFER_ALIGNMENT AK_SIMD_ALIGNMENT
00069 #define AK_XAUDIO2_FLAGS 0
00070
00071 #define AKSOUNDENGINE_CALL __cdecl ///< Calling convention for the Wwise API
00072
00073 typedef unsigned char AkUInt8;
00074 typedef unsigned short AkUInt16;
00075 typedef unsigned long AkUInt32;
00076 typedef unsigned __int64 AkUInt64;
00077
00078 #if defined(_WIN64)
00079 typedef __int64 AkIntPtr;
00080 typedef unsigned __int64 AkUIntPtr;
00081 #else
00082 typedef __w64 int AkIntPtr;
00083 typedef __w64 unsigned int AkUIntPtr;
00084 #endif
00085
00086 typedef char AkInt8;
00087 typedef short AkInt16;
00088 typedef long AkInt32;
00089 typedef __int64 AkInt64;
00090
00091 typedef wchar_t AkOSChar;
00092
00093 typedef float AkReal32;
00094 typedef double AkReal64;
00095
00096 typedef void * AkThread;
00097 typedef AkUInt32 AkThreadID;
00098 typedef AkUInt32 (__stdcall *AkThreadRoutine)( void* lpThreadParameter );
00099 typedef void * AkEvent;
00100 typedef void * AkFileHandle;
00101 typedef wchar_t AkUtf16;
00102
00103 #define AK_UINT_MAX UINT_MAX
00104
00105
00106 #define AK_MAX_PATH 260 ///< Maximum path length.
00107
00108 typedef AkUInt32 AkFourcc;
00109
00111 #define AkmmioFOURCC( ch0, ch1, ch2, ch3 ) \
00112 ( (AkFourcc)(AkUInt8)(ch0) | ( (AkFourcc)(AkUInt8)(ch1) << 8 ) | \
00113 ( (AkFourcc)(AkUInt8)(ch2) << 16 ) | ( (AkFourcc)(AkUInt8)(ch3) << 24 ) )
00114
00115 #define AK_BANK_PLATFORM_DATA_ALIGNMENT (16) ///< Required memory alignment for bank loading by memory address (see LoadBank())
00116 #define AK_BANK_PLATFORM_ALLOC_TYPE AkMalloc
00117
00121 #define AKTEXT(x) L ## x
00122
00131 enum AkMemPoolAttributes
00132 {
00133 AkNoAlloc = 0,
00134 AkMalloc = 1<<0,
00135
00136 AkVirtualAlloc = 1<<1,
00137 AkAllocMask = AkNoAlloc | AkMalloc | AkVirtualAlloc,
00138
00139 AkFixedSizeBlocksMode = 1<<3,
00140 AkBlockMgmtMask = AkFixedSizeBlocksMode
00141 };
00142 #define AK_MEMPOOLATTRIBUTES
00143
00144 #ifdef __cplusplus
00145 namespace AK
00146 {
00156 extern void * AKSOUNDENGINE_CALL VirtualAllocHook(
00157 void * in_pMemAddress,
00158 size_t in_size,
00159 AkUInt32 in_dwAllocationType,
00160 AkUInt32 in_dwProtect
00161 );
00162
00171 extern void AKSOUNDENGINE_CALL VirtualFreeHook(
00172 void * in_pMemAddress,
00173 size_t in_size,
00174 AkUInt32 in_dwFreeType
00175 );
00176 }
00177 #endif
00178
00179 #endif //_AK_DATA_TYPES_PLATFORM_H_
00180
介绍一下自己的项目。我们会竭力为您提供帮助。
来注册自己的项目,我们帮您快速入门,不带任何附加条件!
开始 Wwise 之旅