int count, int in_front CV_DEFAULT(0) );\r
\r
/* Removes several elements from the end of sequence and optionally saves them */\r
-CVAPI(void) cvSeqPopMulti( CvSeq* seq, const void* elements,\r
+CVAPI(void) cvSeqPopMulti( CvSeq* seq, void* elements,\r
int count, int in_front CV_DEFAULT(0) );\r
\r
/* Inserts a new element in the middle of sequence.\r
size_t index(const _Tp& elem) const;
void push_back(const _Tp& elem);
void push_front(const _Tp& elem);
+ void push_back(const _Tp* elems, size_t count);
+ void push_front(const _Tp* elems, size_t count);
+ void insert(int idx, const _Tp& elem);
+ void insert(int idx, const _Tp* elems, size_t count);
+ void remove(int idx);
+ void remove(const Range& r);
+
_Tp& front();
const _Tp& front() const;
_Tp& back();
void clear();
void pop_front();
void pop_back();
+ void pop_front(_Tp* elems, size_t count);
+ void pop_back(_Tp* elems, size_t count);
void copyTo(vector<_Tp>& vec, const Range& range=Range::all()) const;
operator vector<_Tp>() const;
template<typename _Tp> inline void Seq<_Tp>::push_front(const _Tp& elem)
{ cvSeqPushFront(seq, &elem); }
+template<typename _Tp> inline void Seq<_Tp>::push_back(const _Tp* elem, size_t count)
+{ cvSeqPushMulti(seq, elem, (int)count, 0); }
+
+template<typename _Tp> inline void Seq<_Tp>::push_front(const _Tp* elem, size_t count)
+{ cvSeqPushMulti(seq, elem, (int)count, 1); }
+
template<typename _Tp> inline _Tp& Seq<_Tp>::back()
{ return *(_Tp*)cvGetSeqElem(seq, -1); }
template<typename _Tp> inline void Seq<_Tp>::pop_front()
{ cvSeqPopFront(seq); }
+template<typename _Tp> inline void Seq<_Tp>::pop_back(_Tp* elem, size_t count)
+{ cvSeqPopMulti(seq, elem, (int)count, 0); }
+
+template<typename _Tp> inline void Seq<_Tp>::pop_front(_Tp* elem, size_t count)
+{ cvSeqPopMulti(seq, elem, (int)count, 1); }
+
+template<typename _Tp> inline void Seq<_Tp>::insert(int idx, const _Tp& elem)
+{ cvSeqInsert(seq, idx, &elem); }
+
+template<typename _Tp> inline void Seq<_Tp>::insert(int idx, const _Tp* elems, size_t count)
+{
+ CvMat m = cvMat(1, count, DataType<_Tp>::type, elems);
+ cvSeqInsertSlice(seq, idx, &m);
+}
+
+template<typename _Tp> inline void Seq<_Tp>::remove(int idx)
+{ cvSeqRemove(seq, idx); }
+
+template<typename _Tp> inline void Seq<_Tp>::remove(const Range& r)
+{ cvSeqRemoveSlice(seq, r); }
+
template<typename _Tp> inline void Seq<_Tp>::copyTo(vector<_Tp>& vec, const Range& range) const
{
size_t len = !seq ? 0 : range == Range::all() ? seq->total : range.end - range.start;