30 #include <AK/Tools/Common/AkAssert.h>
31 #include <AK/SoundEngine/Common/AkTypes.h>
39 #define AK_THREAD_INIT_CODE(_threadProperties) \
40 if (_threadProperties.dwAffinityMask != AK_THREAD_AFFINITY_DEFAULT) \
43 CPU_ZERO(&affinity); \
44 for (AkUInt32 i = 0; i < 32; ++i) { \
45 if (_threadProperties.dwAffinityMask & ( 1 << i )){\
46 CPU_SET(i, &affinity); \
49 sched_setaffinity(0, sizeof(cpu_set_t), &affinity); \
60 return __sync_add_and_fetch(pValue,1);
66 return __sync_sub_and_fetch(pValue,1);
71 return __sync_bool_compare_and_swap(io_pDest, in_expectedOldVal, in_newValue);
76 return __sync_bool_compare_and_swap(io_pDest, in_expectedOldVal, in_newValue);
90 struct timespec clockNow;
91 clock_gettime(CLOCK_MONOTONIC, &clockNow);
92 *out_piLastTime = ((clockNow.tv_sec + clockNow.tv_nsec/ 1000000000.0) * CLOCKS_PER_SEC);
99 *out_piFreq = CLOCKS_PER_SEC;
102 template<
class destType,
class srcType>
103 inline size_t AkSimpleConvertString( destType* in_pdDest,
const srcType* in_pSrc,
size_t in_MaxSize,
size_t destStrLen(
const destType *),
size_t srcStrLen(
const srcType *) )
106 size_t lenToCopy = srcStrLen(in_pSrc);
108 lenToCopy = (lenToCopy > in_MaxSize-1) ? in_MaxSize-1 : lenToCopy;
109 for(i = 0; i < lenToCopy; i++)
111 in_pdDest[i] = (destType) in_pSrc[i];
113 in_pdDest[lenToCopy] = (destType)0;
118 #define CONVERT_UTF16_TO_CHAR( _astring_, _charstring_ ) \
119 _charstring_ = (char*)AkAlloca( (1 + AKPLATFORM::AkUtf16StrLen((const AkUtf16*)_astring_)) * sizeof(char) ); \
120 AK_UTF16_TO_CHAR( _charstring_, (const AkUtf16*)_astring_, AKPLATFORM::AkUtf16StrLen((const AkUtf16*)_astring_)+1 )
122 #define AK_UTF16_TO_CHAR( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, strlen, AKPLATFORM::AkUtf16StrLen )
123 #define AK_UTF16_TO_OSCHAR( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, strlen, AKPLATFORM::AkUtf16StrLen )
124 #define AK_UTF16_TO_WCHAR( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, wcslen, AKPLATFORM::AkUtf16StrLen )
125 #define AK_CHAR_TO_UTF16( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, strlen )
126 #define AK_OSCHAR_TO_UTF16( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, strlen )
127 #define AK_WCHAR_TO_UTF16( in_pdDest, in_pSrc, in_MaxSize ) AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, wcslen )
130 #define AkAlloca( _size_ ) __builtin_alloca( _size_ )
AkInt32 AkInterlockedIncrement(AkAtomic32 *pValue)
Platform Independent Helper.
AkInt32 AkInterlockedDecrement(AkAtomic32 *pValue)
Platform Independent Helper.
void PerformanceCounter(AkInt64 *out_piLastTime)
Platform Independent Helper.
void PerformanceFrequency(AkInt64 *out_piFreq)
Platform Independent Helper.
bool AkInterlockedCompareExchange(volatile AkAtomic32 *io_pDest, AkInt32 in_newValue, AkInt32 in_expectedOldVal)
size_t AkSimpleConvertString(destType *in_pdDest, const srcType *in_pSrc, size_t in_MaxSize, size_t destStrLen(const destType *), size_t srcStrLen(const srcType *))
Tell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise