Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_
00014 #define _FBXSDK_CORE_SYNC_ATOMIC_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #ifndef FBXSDK_ENV_WINRT
00019
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021
00022 class FBXSDK_DLL FbxAtomOp
00023 {
00024 public:
00025 static void Inc(volatile FbxAtomic* pPtr);
00026 static void Dec(volatile FbxAtomic* pPtr);
00027 static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00028 static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00029 static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00030 static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00031 static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00032 static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00033 static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap);
00034 static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr);
00035 static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap);
00036 static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr);
00037 static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr);
00038 static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00039 static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00040 static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00041 static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00042 static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00043 static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00044 static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr);
00045 static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr);
00046 static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00047 static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00048 static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00049 static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00050 static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00051 static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
00052 };
00053
00054 #include <fbxsdk/fbxsdk_nsend.h>
00055
00056 #endif
00057
00058 #endif