fbxsdk/core/sync/fbxatomic.h Source File
 
 
 
fbxsdk/core/sync/fbxatomic.h
Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
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 /* !FBXSDK_ENV_WINRT */
00057 
00058 #endif /* _FBXSDK_CORE_SYNC_ATOMIC_H_ */