23template<
typename Po
inter>
50template <
typename Po
inter,
class AccessAdapter = TDeleteAdapter<Po
inter> >
98 Pointer*
GetAt(
int index)
const;
149 typedef std::vector<ElementType> Elements;
157template <
typename Po
inter,
class AccessAdapter>
163template <
typename Po
inter,
class AccessAdapter>
166 Q_ASSERT(otherVector.IsEmpty());
170template <
typename Po
inter,
class AccessAdapter>
173 return m_elements.empty();
177template <
typename Po
inter,
class AccessAdapter>
180 return int(m_elements.size());
186template <
typename Po
inter,
class AccessAdapter>
193template <
typename Po
inter,
class AccessAdapter>
196 while (
int(m_elements.size()) > count){
197 AccessAdapter::Delete(m_elements.back());
199 m_elements.pop_back();
202 m_elements.resize(count);
206template <
typename Po
inter,
class AccessAdapter>
209 for (
typename Elements::iterator iter = m_elements.begin();
210 iter != m_elements.end();
212 AccessAdapter::Delete(*iter);
219template <
typename Po
inter,
class AccessAdapter>
222 int elementsCount = GetCount();
224 for (
int elementIndex = 0; elementIndex < elementsCount; elementIndex++){
225 typename Elements::const_iterator delIter = (m_elements.begin() + elementIndex);
226 if (AccessAdapter::GetPtr(*delIter) == elementPtr){
235template <
typename Po
inter,
class AccessAdapter>
238 Q_ASSERT(index >= 0);
239 Q_ASSERT(index <
int(m_elements.size()));
241 return AccessAdapter::GetPtr(m_elements[index]);
245template <
typename Po
inter,
class AccessAdapter>
248 Q_ASSERT(index >= 0);
249 Q_ASSERT(index <
int(m_elements.size()));
251 return m_elements[index];
255template <
typename Po
inter,
class AccessAdapter>
258 typename Elements::iterator delIter = (m_elements.begin() + index);
260 AccessAdapter::Delete(*delIter);
262 m_elements[index] = element;
266template <
typename Po
inter,
class AccessAdapter>
269 Q_ASSERT(index >= 0);
270 Q_ASSERT(index <
int(m_elements.size()));
272 typename Elements::iterator delIter = (m_elements.begin() + index);
274 AccessAdapter::Delete(*delIter);
276 m_elements.erase(delIter);
280template <
typename Po
inter,
class AccessAdapter>
283 int elementsCount = GetCount();
285 for (
int elementIndex = 0; elementIndex < elementsCount; elementIndex++){
286 typename Elements::iterator delIter = (m_elements.begin() + elementIndex);
287 if (AccessAdapter::GetPtr(*delIter) == elementPtr){
288 RemoveAt(elementIndex);
298template <
typename Po
inter,
class AccessAdapter>
301 Q_ASSERT(index >= 0);
302 Q_ASSERT(index <
int(m_elements.size()));
304 Pointer* popPtr = AccessAdapter::release(m_elements[index]);
306 m_elements.erase(m_elements.begin() + index);
312template <
typename Po
inter,
class AccessAdapter>
315 m_elements.push_back(element);
319template <
typename Po
inter,
class AccessAdapter>
322 Q_ASSERT(index >= 0);
323 Q_ASSERT(index <= GetCount());
324 Q_ASSERT(HasElement(AccessAdapter::GetPtr(element)) == InvalidIndex);
326 m_elements.insert(m_elements.begin() + index, element);
330template <
typename Po
inter,
class AccessAdapter>
333 Q_ASSERT(index1 >= 0);
334 Q_ASSERT(index1 <= GetCount());
335 Q_ASSERT(index2 >= 0);
336 Q_ASSERT(index2 <= GetCount());
339 m_elements[index1] = m_elements[index2];
340 m_elements[index2] = element1;
Definition of single plane bitmap.
static Pointer * release(const ElementType &element)
static Pointer * GetPtr(const ElementType &element)
static void Delete(const ElementType &element)
Implementation of a pointer container, which controls the live cycle of the pointer object.
bool Remove(Pointer *elementPtr)
Remove element elementPtr.
Pointer * PopAt(int index)
Pop element at specified index.
void SetCount(int count)
Set number of elements.
int HasElement(const Pointer *elementPtr) const
Check if some element is stored in this vector and return the index of the element,...
TPointerVector(const TPointerVector &)
Pointer * GetAt(int index) const
Get pointer at specified index.
bool IsEmpty() const
Check if there is element stored in this set.
int GetCount() const
Get number of stored elements.
void SwapElements(int index1, int index2)
Switch two elements.
void RemoveAt(int index)
Remove element at specified index.
void SetElementAt(int index, const ElementType &element)
Set element at specified index.
void PushBack(const ElementType &element)
Add new element at the end of collection.
void Reset()
Remove all elements.
void InsertElementAt(int index, const ElementType &element)
Insert element at specified position.
@ InvalidIndex
Invalid index in the vector.
const ElementType & GetElementAt(int index) const
Get element at specified index.
AccessAdapter::ElementType ElementType