fbxatomic.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /****************************************************************************************
  2. Copyright (C) 2015 Autodesk, Inc.
  3. All rights reserved.
  4. Use of this software is subject to the terms of the Autodesk license agreement
  5. provided at the time of installation or download, or which otherwise accompanies
  6. this software in either electronic or hard copy form.
  7. ****************************************************************************************/
  8. //! \file fbxatomic.h
  9. #ifndef _FBXSDK_CORE_SYNC_ATOMIC_H_
  10. #define _FBXSDK_CORE_SYNC_ATOMIC_H_
  11. #include <fbxsdk/fbxsdk_def.h>
  12. #if !defined(FBXSDK_ENV_WINSTORE) && !defined(FBXSDK_ENV_EMSCRIPTEN)
  13. #include <fbxsdk/fbxsdk_nsbegin.h>
  14. class FBXSDK_DLL FbxAtomOp
  15. {
  16. public:
  17. static void Inc(volatile FbxAtomic* pPtr);
  18. static void Dec(volatile FbxAtomic* pPtr);
  19. static bool Add(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  20. static bool Sub(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  21. static bool And(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  22. static bool Or(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  23. static bool Nand(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  24. static bool Xor(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  25. static bool CompareAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pOld, FbxAtomic pSwap);
  26. static FbxAtomic TestAndSet(volatile FbxAtomic* pPtr);
  27. static FbxAtomic FetchAndSwap(volatile FbxAtomic* pPtr, FbxAtomic pSwap);
  28. static FbxAtomic FetchAndInc(volatile FbxAtomic* pPtr);
  29. static FbxAtomic FetchAndDec(volatile FbxAtomic* pPtr);
  30. static FbxAtomic FetchAndAdd(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  31. static FbxAtomic FetchAndSub(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  32. static FbxAtomic FetchAndOr(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  33. static FbxAtomic FetchAndAnd(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  34. static FbxAtomic FetchAndXor(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  35. static FbxAtomic FetchAndNand(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  36. static FbxAtomic IncAndFetch(volatile FbxAtomic* pPtr);
  37. static FbxAtomic DecAndFetch(volatile FbxAtomic* pPtr);
  38. static FbxAtomic AddAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  39. static FbxAtomic SubAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  40. static FbxAtomic OrAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  41. static FbxAtomic AndAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  42. static FbxAtomic XorAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  43. static FbxAtomic NandAndFetch(volatile FbxAtomic* pPtr, FbxAtomic pVal);
  44. };
  45. #include <fbxsdk/fbxsdk_nsend.h>
  46. #endif /* !FBXSDK_ENV_WINSTORE && !FBXSDK_ENV_EMSCRIPTEN */
  47. #endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */