22 #ifndef __XN_THREAD_SAFE_QUEUE_H__ 23 #define __XN_THREAD_SAFE_QUEUE_H__ 93 mutable XN_CRITICAL_SECTION_HANDLE m_hLock;
101 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator) \ 102 class decl ClassName : public XnThreadSafeQueue \ 109 while (Size() != 0) \ 112 XnStatus Push(Type const& value) \ 114 XnValue val = Translator::CreateValueCopy(value); \ 115 XnStatus nRetVal = XnThreadSafeQueue::Push(val); \ 116 if (nRetVal != XN_STATUS_OK) \ 118 Translator::FreeValue(val); \ 121 return XN_STATUS_OK; \ 123 XnStatus Pop(Type& value) \ 126 XnStatus nRetVal = XnThreadSafeQueue::Pop(val); \ 127 if (nRetVal != XN_STATUS_OK) return (nRetVal); \ 128 value = Translator::GetFromValue(val); \ 129 Translator::FreeValue(val); \ 130 return XN_STATUS_OK; \ 139 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR(Type, ClassName, Translator) \ 140 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator) 146 #define XN_DECLARE_THREAD_SAFE_QUEUE_DECL(decl, Type, ClassName) \ 147 XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \ 148 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) 153 #define XN_DECLARE_THREAD_SAFE_QUEUE(Type, ClassName) \ 154 XN_DECLARE_THREAD_SAFE_QUEUE_DECL(, Type, ClassName) 156 #endif //__XN_THREAD_SAFE_QUEUE_H__ #define XN_IS_STATUS_OK(x)
Definition: XnMacros.h:60
XnUInt32 Size() const
Definition: XnThreadSafeQueue.h:83
XnStatus Pop(XnValue &value)
Definition: XnThreadSafeQueue.h:70
~XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:42
#define XN_STATUS_OK
Definition: XnStatus.h:37
virtual XnStatus Pop(XnValue &value)
Definition: XnQueue.h:79
XnUInt32 XnStatus
Definition: XnStatus.h:34
virtual XnStatus Push(XnValue const &value)
Definition: XnQueue.h:63
XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:40
void * XnValue
Definition: XnDataTypes.h:36
XN_C_API XnStatus XN_C_DECL xnOSCloseCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XnStatus Init()
Definition: XnThreadSafeQueue.h:47
virtual XnUInt32 Size() const
Definition: XnQueue.h:121
XnStatus Push(XnValue const &value)
Definition: XnThreadSafeQueue.h:57
XN_C_API XnStatus XN_C_DECL xnOSCreateCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
Definition: XnThreadSafeQueue.h:37
XN_C_API XnStatus XN_C_DECL xnOSEnterCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XN_C_API XnStatus XN_C_DECL xnOSLeaveCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)