\hypertarget{a00749}{}\doxysection{AAX\+\_\+\+Atomic.\+h File Reference}
\label{a00749}\index{AAX\_Atomic.h@{AAX\_Atomic.h}}
{\ttfamily \#include \char`\"{}AAX.\+h\char`\"{}}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline


\doxysubsection{Description}
Atomic operation utilities. 

\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{a00749_af47e63eb3af706f1d3ca159b83d6e5a3}{AAX\+\_\+\+ATOMIC\+\_\+\+H\+\_\+}}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_a56633d7039fae1d31c8984f9baafa17e}{AAX\+\_\+\+Atomic\+\_\+\+Inc\+Then\+Get\+\_\+32}} (uint32\+\_\+t \&io\+Data)
\begin{DoxyCompactList}\small\item\em Increments a 32-\/bit value and returns the result. \end{DoxyCompactList}\item 
uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_adb8e12a71f90de1328a4fde6dd22fc41}{AAX\+\_\+\+Atomic\+\_\+\+Dec\+Then\+Get\+\_\+32}} (uint32\+\_\+t \&io\+Data)
\begin{DoxyCompactList}\small\item\em Decrements a 32-\/bit value and returns the result. \end{DoxyCompactList}\item 
uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_a44eb82707be40dd559db9051317c10d0}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+32}} (volatile uint32\+\_\+t \&io\+Value, uint32\+\_\+t in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Return the original value of io\+Value and then set it to in\+Exchange\+Value. \end{DoxyCompactList}\item 
uint64\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_a0a683337ef8627f1e2b01e69d5f11cb0}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+64}} (volatile uint64\+\_\+t \&io\+Value, uint64\+\_\+t in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Return the original value of io\+Value and then set it to in\+Exchange\+Value. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename TPointer $>$ }\\TPointer $\ast$\mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_add2856260ffb4309c4e515bac8490bea}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+\+Pointer}} (TPointer $\ast$\&io\+Value, TPointer $\ast$in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Perform an exchange operation on a pointer value. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_a74a2bdb895976193bdfe4cd2fe31e21e}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+32}} (volatile uint32\+\_\+t \&io\+Value, uint32\+\_\+t in\+Compare\+Value, uint32\+\_\+t in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Perform a compare and exchange operation on a 32-\/bit value. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_ae1e5b0cf8d8c7a301e13772a57a3d2fd}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+64}} (volatile uint64\+\_\+t \&io\+Value, uint64\+\_\+t in\+Compare\+Value, uint64\+\_\+t in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Perform a compare and exchange operation on a 64-\/bit value. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename TPointer $>$ }\\bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_ab1c7611e7c95fd61900b8e5a44c36e63}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+\+Pointer}} (TPointer $\ast$\&io\+Value, TPointer $\ast$in\+Compare\+Value, TPointer $\ast$in\+Exchange\+Value)
\begin{DoxyCompactList}\small\item\em Perform a compare and exchange operation on a pointer value. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename TPointer $>$ }\\TPointer $\ast$\mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} \mbox{\hyperlink{a00749_ace950fb6e426fd95d69da49462dfb878}{AAX\+\_\+\+Atomic\+\_\+\+Load\+\_\+\+Pointer}} (TPointer const $\ast$const volatile $\ast$in\+Value)
\begin{DoxyCompactList}\small\item\em Atomically loads a pointer value. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{a00749_af47e63eb3af706f1d3ca159b83d6e5a3}\label{a00749_af47e63eb3af706f1d3ca159b83d6e5a3}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_ATOMIC\_H\_@{AAX\_ATOMIC\_H\_}}
\index{AAX\_ATOMIC\_H\_@{AAX\_ATOMIC\_H\_}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_ATOMIC\_H\_}{AAX\_ATOMIC\_H\_}}
{\footnotesize\ttfamily \#define AAX\+\_\+\+ATOMIC\+\_\+\+H\+\_\+}



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{a00749_a56633d7039fae1d31c8984f9baafa17e}\label{a00749_a56633d7039fae1d31c8984f9baafa17e}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_IncThenGet\_32@{AAX\_Atomic\_IncThenGet\_32}}
\index{AAX\_Atomic\_IncThenGet\_32@{AAX\_Atomic\_IncThenGet\_32}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_IncThenGet\_32()}{AAX\_Atomic\_IncThenGet\_32()}}
{\footnotesize\ttfamily uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Inc\+Then\+Get\+\_\+32 (\begin{DoxyParamCaption}\item[{uint32\+\_\+t \&}]{io\+Data }\end{DoxyParamCaption})}



Increments a 32-\/bit value and returns the result. 

\mbox{\Hypertarget{a00749_adb8e12a71f90de1328a4fde6dd22fc41}\label{a00749_adb8e12a71f90de1328a4fde6dd22fc41}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_DecThenGet\_32@{AAX\_Atomic\_DecThenGet\_32}}
\index{AAX\_Atomic\_DecThenGet\_32@{AAX\_Atomic\_DecThenGet\_32}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_DecThenGet\_32()}{AAX\_Atomic\_DecThenGet\_32()}}
{\footnotesize\ttfamily uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Dec\+Then\+Get\+\_\+32 (\begin{DoxyParamCaption}\item[{uint32\+\_\+t \&}]{io\+Data }\end{DoxyParamCaption})}



Decrements a 32-\/bit value and returns the result. 

\mbox{\Hypertarget{a00749_a44eb82707be40dd559db9051317c10d0}\label{a00749_a44eb82707be40dd559db9051317c10d0}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_Exchange\_32@{AAX\_Atomic\_Exchange\_32}}
\index{AAX\_Atomic\_Exchange\_32@{AAX\_Atomic\_Exchange\_32}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_Exchange\_32()}{AAX\_Atomic\_Exchange\_32()}}
{\footnotesize\ttfamily uint32\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+32 (\begin{DoxyParamCaption}\item[{volatile uint32\+\_\+t \&}]{io\+Value,  }\item[{uint32\+\_\+t}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Return the original value of io\+Value and then set it to in\+Exchange\+Value. 



Referenced by \mbox{\hyperlink{a00749_add2856260ffb4309c4e515bac8490bea}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+\+Pointer()}}.

Here is the caller graph for this function\+:
% FIG 0
\mbox{\Hypertarget{a00749_a0a683337ef8627f1e2b01e69d5f11cb0}\label{a00749_a0a683337ef8627f1e2b01e69d5f11cb0}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_Exchange\_64@{AAX\_Atomic\_Exchange\_64}}
\index{AAX\_Atomic\_Exchange\_64@{AAX\_Atomic\_Exchange\_64}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_Exchange\_64()}{AAX\_Atomic\_Exchange\_64()}}
{\footnotesize\ttfamily uint64\+\_\+t \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+64 (\begin{DoxyParamCaption}\item[{volatile uint64\+\_\+t \&}]{io\+Value,  }\item[{uint64\+\_\+t}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Return the original value of io\+Value and then set it to in\+Exchange\+Value. 



Referenced by \mbox{\hyperlink{a00749_add2856260ffb4309c4e515bac8490bea}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+\+Pointer()}}.

Here is the caller graph for this function\+:
% FIG 1
\mbox{\Hypertarget{a00749_add2856260ffb4309c4e515bac8490bea}\label{a00749_add2856260ffb4309c4e515bac8490bea}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_Exchange\_Pointer@{AAX\_Atomic\_Exchange\_Pointer}}
\index{AAX\_Atomic\_Exchange\_Pointer@{AAX\_Atomic\_Exchange\_Pointer}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_Exchange\_Pointer()}{AAX\_Atomic\_Exchange\_Pointer()}}
{\footnotesize\ttfamily template$<$typename TPointer $>$ \\
TPointer $\ast$\mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+\+Pointer (\begin{DoxyParamCaption}\item[{TPointer $\ast$\&}]{io\+Value,  }\item[{TPointer $\ast$}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Perform an exchange operation on a pointer value. 



References \mbox{\hyperlink{a00749_a44eb82707be40dd559db9051317c10d0}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+32()}}, and \mbox{\hyperlink{a00749_a0a683337ef8627f1e2b01e69d5f11cb0}{AAX\+\_\+\+Atomic\+\_\+\+Exchange\+\_\+64()}}.

Here is the call graph for this function\+:
% FIG 2
\mbox{\Hypertarget{a00749_a74a2bdb895976193bdfe4cd2fe31e21e}\label{a00749_a74a2bdb895976193bdfe4cd2fe31e21e}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_CompareAndExchange\_32@{AAX\_Atomic\_CompareAndExchange\_32}}
\index{AAX\_Atomic\_CompareAndExchange\_32@{AAX\_Atomic\_CompareAndExchange\_32}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_CompareAndExchange\_32()}{AAX\_Atomic\_CompareAndExchange\_32()}}
{\footnotesize\ttfamily bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+32 (\begin{DoxyParamCaption}\item[{volatile uint32\+\_\+t \&}]{io\+Value,  }\item[{uint32\+\_\+t}]{in\+Compare\+Value,  }\item[{uint32\+\_\+t}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Perform a compare and exchange operation on a 32-\/bit value. 



Referenced by \mbox{\hyperlink{a00749_ab1c7611e7c95fd61900b8e5a44c36e63}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+\+Pointer()}}.

Here is the caller graph for this function\+:
% FIG 3
\mbox{\Hypertarget{a00749_ae1e5b0cf8d8c7a301e13772a57a3d2fd}\label{a00749_ae1e5b0cf8d8c7a301e13772a57a3d2fd}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_CompareAndExchange\_64@{AAX\_Atomic\_CompareAndExchange\_64}}
\index{AAX\_Atomic\_CompareAndExchange\_64@{AAX\_Atomic\_CompareAndExchange\_64}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_CompareAndExchange\_64()}{AAX\_Atomic\_CompareAndExchange\_64()}}
{\footnotesize\ttfamily bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+64 (\begin{DoxyParamCaption}\item[{volatile uint64\+\_\+t \&}]{io\+Value,  }\item[{uint64\+\_\+t}]{in\+Compare\+Value,  }\item[{uint64\+\_\+t}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Perform a compare and exchange operation on a 64-\/bit value. 



Referenced by \mbox{\hyperlink{a00749_ab1c7611e7c95fd61900b8e5a44c36e63}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+\+Pointer()}}.

Here is the caller graph for this function\+:
% FIG 4
\mbox{\Hypertarget{a00749_ab1c7611e7c95fd61900b8e5a44c36e63}\label{a00749_ab1c7611e7c95fd61900b8e5a44c36e63}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_CompareAndExchange\_Pointer@{AAX\_Atomic\_CompareAndExchange\_Pointer}}
\index{AAX\_Atomic\_CompareAndExchange\_Pointer@{AAX\_Atomic\_CompareAndExchange\_Pointer}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_CompareAndExchange\_Pointer()}{AAX\_Atomic\_CompareAndExchange\_Pointer()}}
{\footnotesize\ttfamily template$<$typename TPointer $>$ \\
bool \mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+\+Pointer (\begin{DoxyParamCaption}\item[{TPointer $\ast$\&}]{io\+Value,  }\item[{TPointer $\ast$}]{in\+Compare\+Value,  }\item[{TPointer $\ast$}]{in\+Exchange\+Value }\end{DoxyParamCaption})}



Perform a compare and exchange operation on a pointer value. 



References \mbox{\hyperlink{a00749_a74a2bdb895976193bdfe4cd2fe31e21e}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+32()}}, and \mbox{\hyperlink{a00749_ae1e5b0cf8d8c7a301e13772a57a3d2fd}{AAX\+\_\+\+Atomic\+\_\+\+Compare\+And\+Exchange\+\_\+64()}}.

Here is the call graph for this function\+:
% FIG 5
\mbox{\Hypertarget{a00749_ace950fb6e426fd95d69da49462dfb878}\label{a00749_ace950fb6e426fd95d69da49462dfb878}} 
\index{AAX\_Atomic.h@{AAX\_Atomic.h}!AAX\_Atomic\_Load\_Pointer@{AAX\_Atomic\_Load\_Pointer}}
\index{AAX\_Atomic\_Load\_Pointer@{AAX\_Atomic\_Load\_Pointer}!AAX\_Atomic.h@{AAX\_Atomic.h}}
\doxysubsubsection{\texorpdfstring{AAX\_Atomic\_Load\_Pointer()}{AAX\_Atomic\_Load\_Pointer()}}
{\footnotesize\ttfamily template$<$typename TPointer $>$ \\
TPointer $\ast$\mbox{\hyperlink{a00542_aaa22112139aa627574b1ef562f579d43}{AAX\+\_\+\+CALLBACK}} AAX\+\_\+\+Atomic\+\_\+\+Load\+\_\+\+Pointer (\begin{DoxyParamCaption}\item[{TPointer const $\ast$const volatile $\ast$}]{in\+Value }\end{DoxyParamCaption})}



Atomically loads a pointer value. 

