OpenNI 1.5.4
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Include
XnQueue.h
Go to the documentation of this file.
1
/****************************************************************************
2
* *
3
* OpenNI 1.x Alpha *
4
* Copyright (C) 2011 PrimeSense Ltd. *
5
* *
6
* This file is part of OpenNI. *
7
* *
8
* OpenNI is free software: you can redistribute it and/or modify *
9
* it under the terms of the GNU Lesser General Public License as published *
10
* by the Free Software Foundation, either version 3 of the License, or *
11
* (at your option) any later version. *
12
* *
13
* OpenNI is distributed in the hope that it will be useful, *
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16
* GNU Lesser General Public License for more details. *
17
* *
18
* You should have received a copy of the GNU Lesser General Public License *
19
* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. *
20
* *
21
****************************************************************************/
22
#ifndef _XN_QUEUE_H
23
#define _XN_QUEUE_H
24
25
//---------------------------------------------------------------------------
26
// Includes
27
//---------------------------------------------------------------------------
28
#include "
XnList.h
"
29
30
//---------------------------------------------------------------------------
31
// Types
32
//---------------------------------------------------------------------------
36
class
XnQueue
37
{
38
public
:
42
XnQueue
() {}
46
virtual
~XnQueue
() {}
47
51
virtual
XnStatus
Init
()
52
{
53
return
(
XN_STATUS_OK
);
54
}
55
63
virtual
XnStatus
Push
(
XnValue
const
& value)
64
{
65
XnStatus
nRetVal =
XN_STATUS_OK
;
66
67
nRetVal = m_List.
AddLast
(value);
68
XN_IS_STATUS_OK
(nRetVal);
69
70
return
(
XN_STATUS_OK
);
71
}
79
virtual
XnStatus
Pop
(
XnValue
& value)
80
{
81
if
(
IsEmpty
())
82
{
83
return
XN_STATUS_IS_EMPTY;
84
}
85
86
value = *(m_List.
begin
());
87
return
m_List.
Remove
(m_List.
begin
());
88
}
89
95
XnValue
const
&
Top
()
const
96
{
97
return
*(m_List.
begin
());
98
}
99
105
XnValue
&
Top
()
106
{
107
return
*(m_List.
begin
());
108
}
109
113
XnBool
IsEmpty
()
const
114
{
115
return
m_List.
IsEmpty
();
116
}
117
121
virtual
XnUInt32
Size
()
const
122
{
123
return
m_List.
Size
();
124
}
125
126
private
:
127
XN_DISABLE_COPY_AND_ASSIGN(
XnQueue
);
128
130
XnList
m_List;
131
};
132
138
#define XN_DECLARE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, Translator, base) \
139
class decl ClassName : public base \
140
{ \
141
public: \
142
ClassName() {} \
143
~ClassName() \
144
{ \
145
/* We do this using Pop() to make sure memory is freed. */
\
146
Type dummy; \
147
while (Size() != 0) \
148
Pop(dummy); \
149
} \
150
XnStatus Push(Type const& value) \
151
{ \
152
XnValue val = Translator::CreateValueCopy(value); \
153
XnStatus nRetVal = base::Push(val); \
154
if (nRetVal != XN_STATUS_OK) \
155
{ \
156
Translator::FreeValue(val); \
157
return (nRetVal); \
158
} \
159
return XN_STATUS_OK; \
160
} \
161
XnStatus Pop(Type& value) \
162
{ \
163
XnValue val; \
164
XnStatus nRetVal = base::Pop(val); \
165
if (nRetVal != XN_STATUS_OK) return (nRetVal); \
166
value = Translator::GetFromValue(val); \
167
Translator::FreeValue(val); \
168
return XN_STATUS_OK; \
169
} \
170
inline Type const& Top() const { return Translator::GetFromValue(base::Top()); }\
171
inline Type& Top() { return Translator::GetFromValue(base::Top()); } \
172
private: \
173
XN_DISABLE_COPY_AND_ASSIGN(ClassName); \
174
};
175
181
#define XN_DECLARE_QUEUE_WITH_TRANSLATOR(Type, ClassName, Translator, base) \
182
XN_DECLARE_QUEUE_WITH_TRANSLATOR_DECL(, Type, ClassName, Translator, base)
183
188
#define XN_DECLARE_QUEUE_DECL(decl, Type, ClassName) \
189
XN_DECLARE_DEFAULT_VALUE_TRANSLATOR_DECL(decl, Type, XN_DEFAULT_TRANSLATOR_NAME(ClassName)) \
190
XN_DECLARE_QUEUE_WITH_TRANSLATOR_DECL(decl, Type, ClassName, XN_DEFAULT_TRANSLATOR_NAME(ClassName), XnQueue)
191
195
#define XN_DECLARE_QUEUE(Type, ClassName) \
196
XN_DECLARE_QUEUE_DECL(, Type, ClassName)
197
198
#endif // _XN_QUEUE_H
Generated on Thu Dec 20 2012 21:24:27 for OpenNI 1.5.4 by
1.8.1.2