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)
void * XnValue
Definition: XnDataTypes.h:36
#define XN_IS_STATUS_OK(x)
Definition: XnMacros.h:60
XN_C_API XnStatus XN_C_DECL xnOSCloseCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
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)
XN_C_API XnStatus XN_C_DECL xnOSCreateCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XnUInt32 XnStatus
Definition: XnStatus.h:34
#define XN_STATUS_OK
Definition: XnStatus.h:37
virtual XnStatus Pop(XnValue &value)
Definition: XnQueue.h:79
virtual XnUInt32 Size() const
Definition: XnQueue.h:121
virtual XnStatus Push(XnValue const &value)
Definition: XnQueue.h:63
Definition: XnThreadSafeQueue.h:38
XnStatus Pop(XnValue &value)
Definition: XnThreadSafeQueue.h:70
XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:40
~XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:42
XnUInt32 Size() const
Definition: XnThreadSafeQueue.h:83
XnStatus Init()
Definition: XnThreadSafeQueue.h:47
XnStatus Push(XnValue const &value)
Definition: XnThreadSafeQueue.h:57