]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
added some more Seq<_Tp> methods - wrappers for the respective operations on CvSeq
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Tue, 18 Aug 2009 15:05:50 +0000 (15:05 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Tue, 18 Aug 2009 15:05:50 +0000 (15:05 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2038 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/include/opencv/cxcore.h
opencv/include/opencv/cxcore.hpp
opencv/include/opencv/cxoperations.hpp
opencv/src/cxcore/cxdatastructs.cpp

index a61d19f271f1ebf66b7843dce2fb328f45cb7bc2..1a7ddd64cbe8054b195442fe8fcec0e94f7b5052 100644 (file)
@@ -993,7 +993,7 @@ CVAPI(void)  cvSeqPushMulti( CvSeq* seq, const void* elements,
                              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
index 3a9cccbe25e6d18a78b17daf95dc17bc59589faa..d4216d7ca45359451742ceb1013cfcd5835e3d20 100644 (file)
@@ -1912,6 +1912,13 @@ public:
     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();
@@ -1921,6 +1928,8 @@ public:
     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;
index 9e4dc711bd349c06d3d944c3b568935c4329f32b..d55b4b347becc152c81fc7ed143342a230872d3e 100644 (file)
@@ -2216,6 +2216,12 @@ template<typename _Tp> inline void Seq<_Tp>::push_back(const _Tp& elem)
 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); }
 
@@ -2240,6 +2246,27 @@ template<typename _Tp> inline void Seq<_Tp>::pop_back()
 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;
index ba9e90d231b8c5d1a997a3ed16ef49555013e368..ecf84b45cbff417b517e6a996a97483ab302da49 100644 (file)
@@ -1517,7 +1517,7 @@ cvSeqPushMulti( CvSeq *seq, const void *_elements, int count, int front )
 
 /* Remove several elements from the end of sequence: */
 CV_IMPL void
-cvSeqPopMulti( CvSeq *seq, const void *_elements, int count, int front )
+cvSeqPopMulti( CvSeq *seq, void *_elements, int count, int front )
 {
     char *elements = (char *) _elements;