 |
OpenNI 1.5.7
|
Go to the documentation of this file.
21 #ifndef __XN_THREAD_SAFE_QUEUE_H__
22 #define __XN_THREAD_SAFE_QUEUE_H__
92 mutable XN_CRITICAL_SECTION_HANDLE m_hLock;
100 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator) \
101 class decl ClassName : public XnThreadSafeQueue \
108 while (Size() != 0) \
111 XnStatus Push(Type const& value) \
113 XnValue val = Translator::CreateValueCopy(value); \
114 XnStatus nRetVal = XnThreadSafeQueue::Push(val); \
115 if (nRetVal != XN_STATUS_OK) \
117 Translator::FreeValue(val); \
120 return XN_STATUS_OK; \
122 XnStatus Pop(Type& value) \
125 XnStatus nRetVal = XnThreadSafeQueue::Pop(val); \
126 if (nRetVal != XN_STATUS_OK) return (nRetVal); \
127 value = Translator::GetFromValue(val); \
128 Translator::FreeValue(val); \
129 return XN_STATUS_OK; \
138 #define XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR(Type, ClassName, Translator) \
139 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator)
145 #define XN_DECLARE_THREAD_SAFE_QUEUE_DECL(decl, Type, ClassName) \
146 XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \
147 XN_DECLARE_THREAD_SAFE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName))
152 #define XN_DECLARE_THREAD_SAFE_QUEUE(Type, ClassName) \
153 XN_DECLARE_THREAD_SAFE_QUEUE_DECL(, Type, ClassName)
155 #endif //__XN_THREAD_SAFE_QUEUE_H__
#define XN_IS_STATUS_OK(x)
Definition: XnMacros.h:58
#define XN_STATUS_OK
Definition: XnStatus.h:35
XnUInt32 XnStatus
Definition: XnStatus.h:32
XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:56
~XnThreadSafeQueue()
Definition: XnThreadSafeQueue.h:58
XnStatus Push(XnValue const &value)
Definition: XnThreadSafeQueue.h:73
XnStatus Init()
Definition: XnThreadSafeQueue.h:63
XN_C_API XnStatus XN_C_DECL xnOSCloseCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
XN_C_API XnStatus XN_C_DECL xnOSCreateCriticalSection(XN_CRITICAL_SECTION_HANDLE *pCriticalSectionHandle)
Definition: XnThreadSafeQueue.h:35
virtual XnStatus Push(XnValue const &value)
Definition: XnQueue.h:79
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)
virtual XnStatus Pop(XnValue &value)
Definition: XnQueue.h:95
virtual XnUInt32 Size() const
Definition: XnQueue.h:137
void * XnValue
Definition: XnDataTypes.h:35
XnUInt32 Size() const
Definition: XnThreadSafeQueue.h:99
XnStatus Pop(XnValue &value)
Definition: XnThreadSafeQueue.h:86