Merge pull request #1452 from alalek:fix_cv_export_templates

This commit is contained in:
Alexander Smorkalov 2013-09-17 14:35:40 +04:00 committed by OpenCV Buildbot
commit 8853d19e74
3 changed files with 55 additions and 55 deletions

View File

@ -78,11 +78,11 @@ using std::vector;
using std::string; using std::string;
using std::ptrdiff_t; using std::ptrdiff_t;
template<typename _Tp> class CV_EXPORTS Size_; template<typename _Tp> class Size_;
template<typename _Tp> class CV_EXPORTS Point_; template<typename _Tp> class Point_;
template<typename _Tp> class CV_EXPORTS Rect_; template<typename _Tp> class Rect_;
template<typename _Tp, int cn> class CV_EXPORTS Vec; template<typename _Tp, int cn> class Vec;
template<typename _Tp, int m, int n> class CV_EXPORTS Matx; template<typename _Tp, int m, int n> class Matx;
typedef std::string String; typedef std::string String;
@ -112,10 +112,10 @@ class CV_EXPORTS MatOp_Base;
class CV_EXPORTS MatArg; class CV_EXPORTS MatArg;
class CV_EXPORTS MatConstIterator; class CV_EXPORTS MatConstIterator;
template<typename _Tp> class CV_EXPORTS Mat_; template<typename _Tp> class Mat_;
template<typename _Tp> class CV_EXPORTS MatIterator_; template<typename _Tp> class MatIterator_;
template<typename _Tp> class CV_EXPORTS MatConstIterator_; template<typename _Tp> class MatConstIterator_;
template<typename _Tp> class CV_EXPORTS MatCommaInitializer_; template<typename _Tp> class MatCommaInitializer_;
#if !defined(ANDROID) || (defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_WCHAR_T) #if !defined(ANDROID) || (defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_WCHAR_T)
typedef std::basic_string<wchar_t> WString; typedef std::basic_string<wchar_t> WString;
@ -363,7 +363,7 @@ CV_EXPORTS_W bool useOptimized();
/*! /*!
The STL-compilant memory Allocator based on cv::fastMalloc() and cv::fastFree() The STL-compilant memory Allocator based on cv::fastMalloc() and cv::fastFree()
*/ */
template<typename _Tp> class CV_EXPORTS Allocator template<typename _Tp> class Allocator
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -405,7 +405,7 @@ public:
The class is specialized for each fundamental numerical data type supported by OpenCV. The class is specialized for each fundamental numerical data type supported by OpenCV.
It provides DataDepth<T>::value constant. It provides DataDepth<T>::value constant.
*/ */
template<typename _Tp> class CV_EXPORTS DataDepth {}; template<typename _Tp> class DataDepth {};
template<> class DataDepth<bool> { public: enum { value = CV_8U, fmt=(int)'u' }; }; template<> class DataDepth<bool> { public: enum { value = CV_8U, fmt=(int)'u' }; };
template<> class DataDepth<uchar> { public: enum { value = CV_8U, fmt=(int)'u' }; }; template<> class DataDepth<uchar> { public: enum { value = CV_8U, fmt=(int)'u' }; };
@ -446,7 +446,7 @@ struct CV_EXPORTS Matx_MulOp {};
struct CV_EXPORTS Matx_MatMulOp {}; struct CV_EXPORTS Matx_MatMulOp {};
struct CV_EXPORTS Matx_TOp {}; struct CV_EXPORTS Matx_TOp {};
template<typename _Tp, int m, int n> class CV_EXPORTS Matx template<typename _Tp, int m, int n> class Matx
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -595,7 +595,7 @@ typedef Matx<double, 6, 6> Matx66d;
In addition to the universal notation like Vec<float, 3>, you can use shorter aliases In addition to the universal notation like Vec<float, 3>, you can use shorter aliases
for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec<float, 3>. for the most popular specialized variants of Vec, e.g. Vec3f ~ Vec<float, 3>.
*/ */
template<typename _Tp, int cn> class CV_EXPORTS Vec : public Matx<_Tp, cn, 1> template<typename _Tp, int cn> class Vec : public Matx<_Tp, cn, 1>
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -691,7 +691,7 @@ typedef Vec<double, 6> Vec6d;
more convenient access to the real and imaginary parts using through the simple field access, as opposite more convenient access to the real and imaginary parts using through the simple field access, as opposite
to std::complex::real() and std::complex::imag(). to std::complex::real() and std::complex::imag().
*/ */
template<typename _Tp> class CV_EXPORTS Complex template<typename _Tp> class Complex
{ {
public: public:
@ -727,7 +727,7 @@ typedef Complex<double> Complexd;
as a template parameter. There are a few shorter aliases available for user convenience. as a template parameter. There are a few shorter aliases available for user convenience.
See cv::Point, cv::Point2i, cv::Point2f and cv::Point2d. See cv::Point, cv::Point2i, cv::Point2f and cv::Point2d.
*/ */
template<typename _Tp> class CV_EXPORTS Point_ template<typename _Tp> class Point_
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -770,7 +770,7 @@ public:
\see cv::Point3i, cv::Point3f and cv::Point3d \see cv::Point3i, cv::Point3f and cv::Point3d
*/ */
template<typename _Tp> class CV_EXPORTS Point3_ template<typename _Tp> class Point3_
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -809,7 +809,7 @@ public:
The class represents the size of a 2D rectangle, image size, matrix size etc. The class represents the size of a 2D rectangle, image size, matrix size etc.
Normally, cv::Size ~ cv::Size_<int> is used. Normally, cv::Size ~ cv::Size_<int> is used.
*/ */
template<typename _Tp> class CV_EXPORTS Size_ template<typename _Tp> class Size_
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -844,7 +844,7 @@ public:
The class represents a 2D rectangle with coordinates of the specified data type. The class represents a 2D rectangle with coordinates of the specified data type.
Normally, cv::Rect ~ cv::Rect_<int> is used. Normally, cv::Rect ~ cv::Rect_<int> is used.
*/ */
template<typename _Tp> class CV_EXPORTS Rect_ template<typename _Tp> class Rect_
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -933,7 +933,7 @@ public:
This is partially specialized cv::Vec class with the number of elements = 4, i.e. a short vector of four elements. This is partially specialized cv::Vec class with the number of elements = 4, i.e. a short vector of four elements.
Normally, cv::Scalar ~ cv::Scalar_<double> is used. Normally, cv::Scalar ~ cv::Scalar_<double> is used.
*/ */
template<typename _Tp> class CV_EXPORTS Scalar_ : public Vec<_Tp, 4> template<typename _Tp> class Scalar_ : public Vec<_Tp, 4>
{ {
public: public:
//! various constructors //! various constructors
@ -1260,7 +1260,7 @@ public:
\note{Another good property of the class is that the operations on the reference counter are atomic, \note{Another good property of the class is that the operations on the reference counter are atomic,
i.e. it is safe to use the class in multi-threaded applications} i.e. it is safe to use the class in multi-threaded applications}
*/ */
template<typename _Tp> class CV_EXPORTS Ptr template<typename _Tp> class Ptr
{ {
public: public:
//! empty constructor //! empty constructor
@ -2748,7 +2748,7 @@ CV_EXPORTS_W Size getTextSize(const string& text, int fontFace,
img(i,j)[2] ^= (uchar)(i ^ j); // img(y,x)[c] accesses c-th channel of the pixel (x,y) img(i,j)[2] ^= (uchar)(i ^ j); // img(y,x)[c] accesses c-th channel of the pixel (x,y)
\endcode \endcode
*/ */
template<typename _Tp> class CV_EXPORTS Mat_ : public Mat template<typename _Tp> class Mat_ : public Mat
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -2980,7 +2980,7 @@ public:
*/ */
template<typename _Tp> template<typename _Tp>
class CV_EXPORTS MatConstIterator_ : public MatConstIterator class MatConstIterator_ : public MatConstIterator
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -3031,7 +3031,7 @@ public:
*/ */
template<typename _Tp> template<typename _Tp>
class CV_EXPORTS MatIterator_ : public MatConstIterator_<_Tp> class MatIterator_ : public MatConstIterator_<_Tp>
{ {
public: public:
typedef _Tp* pointer; typedef _Tp* pointer;
@ -3072,7 +3072,7 @@ public:
MatIterator_ operator ++(int); MatIterator_ operator ++(int);
}; };
template<typename _Tp> class CV_EXPORTS MatOp_Iter_; template<typename _Tp> class MatOp_Iter_;
/*! /*!
Comma-separated Matrix Initializer Comma-separated Matrix Initializer
@ -3087,7 +3087,7 @@ template<typename _Tp> class CV_EXPORTS MatOp_Iter_;
Mat R = (Mat_<double>(2,2) << a, -b, b, a); Mat R = (Mat_<double>(2,2) << a, -b, b, a);
\endcode \endcode
*/ */
template<typename _Tp> class CV_EXPORTS MatCommaInitializer_ template<typename _Tp> class MatCommaInitializer_
{ {
public: public:
//! the constructor, created by "matrix << firstValue" operator, where matrix is cv::Mat //! the constructor, created by "matrix << firstValue" operator, where matrix is cv::Mat
@ -3102,7 +3102,7 @@ protected:
}; };
template<typename _Tp, int m, int n> class CV_EXPORTS MatxCommaInitializer template<typename _Tp, int m, int n> class MatxCommaInitializer
{ {
public: public:
MatxCommaInitializer(Matx<_Tp, m, n>* _mtx); MatxCommaInitializer(Matx<_Tp, m, n>* _mtx);
@ -3113,7 +3113,7 @@ public:
int idx; int idx;
}; };
template<typename _Tp, int m> class CV_EXPORTS VecCommaInitializer : public MatxCommaInitializer<_Tp, m, 1> template<typename _Tp, int m> class VecCommaInitializer : public MatxCommaInitializer<_Tp, m, 1>
{ {
public: public:
VecCommaInitializer(Vec<_Tp, m>* _vec); VecCommaInitializer(Vec<_Tp, m>* _vec);
@ -3148,7 +3148,7 @@ public:
} }
\endcode \endcode
*/ */
template<typename _Tp, size_t fixed_size=4096/sizeof(_Tp)+8> class CV_EXPORTS AutoBuffer template<typename _Tp, size_t fixed_size=4096/sizeof(_Tp)+8> class AutoBuffer
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -3719,7 +3719,7 @@ public:
m_.ref(2) += m_(3); // equivalent to m.ref<int>(2) += m.value<int>(3); m_.ref(2) += m_(3); // equivalent to m.ref<int>(2) += m.value<int>(3);
\endcode \endcode
*/ */
template<typename _Tp> class CV_EXPORTS SparseMat_ : public SparseMat template<typename _Tp> class SparseMat_ : public SparseMat
{ {
public: public:
typedef SparseMatIterator_<_Tp> iterator; typedef SparseMatIterator_<_Tp> iterator;
@ -3793,7 +3793,7 @@ public:
This is the derived from SparseMatConstIterator class that This is the derived from SparseMatConstIterator class that
introduces more convenient operator *() for accessing the current element. introduces more convenient operator *() for accessing the current element.
*/ */
template<typename _Tp> class CV_EXPORTS SparseMatConstIterator_ : public SparseMatConstIterator template<typename _Tp> class SparseMatConstIterator_ : public SparseMatConstIterator
{ {
public: public:
typedef std::forward_iterator_tag iterator_category; typedef std::forward_iterator_tag iterator_category;
@ -3823,7 +3823,7 @@ public:
This is the derived from cv::SparseMatConstIterator_ class that This is the derived from cv::SparseMatConstIterator_ class that
introduces more convenient operator *() for accessing the current element. introduces more convenient operator *() for accessing the current element.
*/ */
template<typename _Tp> class CV_EXPORTS SparseMatIterator_ : public SparseMatConstIterator_<_Tp> template<typename _Tp> class SparseMatIterator_ : public SparseMatConstIterator_<_Tp>
{ {
public: public:
typedef std::forward_iterator_tag iterator_category; typedef std::forward_iterator_tag iterator_category;
@ -4255,7 +4255,7 @@ typedef Ptr<CvMemStorage> MemStorage;
i.e. no constructors or destructors i.e. no constructors or destructors
are called for the sequence elements. are called for the sequence elements.
*/ */
template<typename _Tp> class CV_EXPORTS Seq template<typename _Tp> class Seq
{ {
public: public:
typedef SeqIterator<_Tp> iterator; typedef SeqIterator<_Tp> iterator;
@ -4338,7 +4338,7 @@ public:
/*! /*!
STL-style Sequence Iterator inherited from the CvSeqReader structure STL-style Sequence Iterator inherited from the CvSeqReader structure
*/ */
template<typename _Tp> class CV_EXPORTS SeqIterator : public CvSeqReader template<typename _Tp> class SeqIterator : public CvSeqReader
{ {
public: public:
//! the default constructor //! the default constructor

View File

@ -711,7 +711,7 @@ CV_EXPORTS bool Cholesky(float* A, size_t astep, int m, float* b, size_t bstep,
CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n); CV_EXPORTS bool Cholesky(double* A, size_t astep, int m, double* b, size_t bstep, int n);
template<typename _Tp, int m> struct CV_EXPORTS Matx_DetOp template<typename _Tp, int m> struct Matx_DetOp
{ {
double operator ()(const Matx<_Tp, m, m>& a) const double operator ()(const Matx<_Tp, m, m>& a) const
{ {
@ -726,7 +726,7 @@ template<typename _Tp, int m> struct CV_EXPORTS Matx_DetOp
}; };
template<typename _Tp> struct CV_EXPORTS Matx_DetOp<_Tp, 1> template<typename _Tp> struct Matx_DetOp<_Tp, 1>
{ {
double operator ()(const Matx<_Tp, 1, 1>& a) const double operator ()(const Matx<_Tp, 1, 1>& a) const
{ {
@ -735,7 +735,7 @@ template<typename _Tp> struct CV_EXPORTS Matx_DetOp<_Tp, 1>
}; };
template<typename _Tp> struct CV_EXPORTS Matx_DetOp<_Tp, 2> template<typename _Tp> struct Matx_DetOp<_Tp, 2>
{ {
double operator ()(const Matx<_Tp, 2, 2>& a) const double operator ()(const Matx<_Tp, 2, 2>& a) const
{ {
@ -744,7 +744,7 @@ template<typename _Tp> struct CV_EXPORTS Matx_DetOp<_Tp, 2>
}; };
template<typename _Tp> struct CV_EXPORTS Matx_DetOp<_Tp, 3> template<typename _Tp> struct Matx_DetOp<_Tp, 3>
{ {
double operator ()(const Matx<_Tp, 3, 3>& a) const double operator ()(const Matx<_Tp, 3, 3>& a) const
{ {
@ -778,7 +778,7 @@ Matx<_Tp, n, m> Matx<_Tp, m, n>::t() const
} }
template<typename _Tp, int m> struct CV_EXPORTS Matx_FastInvOp template<typename _Tp, int m> struct Matx_FastInvOp
{ {
bool operator()(const Matx<_Tp, m, m>& a, Matx<_Tp, m, m>& b, int method) const bool operator()(const Matx<_Tp, m, m>& a, Matx<_Tp, m, m>& b, int method) const
{ {
@ -796,7 +796,7 @@ template<typename _Tp, int m> struct CV_EXPORTS Matx_FastInvOp
}; };
template<typename _Tp> struct CV_EXPORTS Matx_FastInvOp<_Tp, 2> template<typename _Tp> struct Matx_FastInvOp<_Tp, 2>
{ {
bool operator()(const Matx<_Tp, 2, 2>& a, Matx<_Tp, 2, 2>& b, int) const bool operator()(const Matx<_Tp, 2, 2>& a, Matx<_Tp, 2, 2>& b, int) const
{ {
@ -813,7 +813,7 @@ template<typename _Tp> struct CV_EXPORTS Matx_FastInvOp<_Tp, 2>
}; };
template<typename _Tp> struct CV_EXPORTS Matx_FastInvOp<_Tp, 3> template<typename _Tp> struct Matx_FastInvOp<_Tp, 3>
{ {
bool operator()(const Matx<_Tp, 3, 3>& a, Matx<_Tp, 3, 3>& b, int) const bool operator()(const Matx<_Tp, 3, 3>& a, Matx<_Tp, 3, 3>& b, int) const
{ {
@ -853,7 +853,7 @@ Matx<_Tp, n, m> Matx<_Tp, m, n>::inv(int method) const
} }
template<typename _Tp, int m, int n> struct CV_EXPORTS Matx_FastSolveOp template<typename _Tp, int m, int n> struct Matx_FastSolveOp
{ {
bool operator()(const Matx<_Tp, m, m>& a, const Matx<_Tp, m, n>& b, bool operator()(const Matx<_Tp, m, m>& a, const Matx<_Tp, m, n>& b,
Matx<_Tp, m, n>& x, int method) const Matx<_Tp, m, n>& x, int method) const
@ -868,7 +868,7 @@ template<typename _Tp, int m, int n> struct CV_EXPORTS Matx_FastSolveOp
}; };
template<typename _Tp> struct CV_EXPORTS Matx_FastSolveOp<_Tp, 2, 1> template<typename _Tp> struct Matx_FastSolveOp<_Tp, 2, 1>
{ {
bool operator()(const Matx<_Tp, 2, 2>& a, const Matx<_Tp, 2, 1>& b, bool operator()(const Matx<_Tp, 2, 2>& a, const Matx<_Tp, 2, 1>& b,
Matx<_Tp, 2, 1>& x, int) const Matx<_Tp, 2, 1>& x, int) const
@ -884,7 +884,7 @@ template<typename _Tp> struct CV_EXPORTS Matx_FastSolveOp<_Tp, 2, 1>
}; };
template<typename _Tp> struct CV_EXPORTS Matx_FastSolveOp<_Tp, 3, 1> template<typename _Tp> struct Matx_FastSolveOp<_Tp, 3, 1>
{ {
bool operator()(const Matx<_Tp, 3, 3>& a, const Matx<_Tp, 3, 1>& b, bool operator()(const Matx<_Tp, 3, 3>& a, const Matx<_Tp, 3, 1>& b,
Matx<_Tp, 3, 1>& x, int) const Matx<_Tp, 3, 1>& x, int) const
@ -2265,7 +2265,7 @@ inline Range::operator CvSlice() const
// 1) it can be created on top of user-allocated data w/o copying it // 1) it can be created on top of user-allocated data w/o copying it
// 2) vector b = a means copying the header, // 2) vector b = a means copying the header,
// not the underlying data (use clone() to make a deep copy) // not the underlying data (use clone() to make a deep copy)
template <typename _Tp> class CV_EXPORTS Vector template <typename _Tp> class Vector
{ {
public: public:
typedef _Tp value_type; typedef _Tp value_type;
@ -2274,7 +2274,7 @@ public:
typedef _Tp& reference; typedef _Tp& reference;
typedef const _Tp& const_reference; typedef const _Tp& const_reference;
struct CV_EXPORTS Hdr struct Hdr
{ {
Hdr() : data(0), datastart(0), refcount(0), size(0), capacity(0) {}; Hdr() : data(0), datastart(0), refcount(0), size(0), capacity(0) {};
_Tp* data; _Tp* data;
@ -2858,7 +2858,7 @@ inline void write(FileStorage& fs, const string& name, const Range& r )
write(fs, r.end); write(fs, r.end);
} }
template<typename _Tp, int numflag> class CV_EXPORTS VecWriterProxy template<typename _Tp, int numflag> class VecWriterProxy
{ {
public: public:
VecWriterProxy( FileStorage* _fs ) : fs(_fs) {} VecWriterProxy( FileStorage* _fs ) : fs(_fs) {}
@ -2871,7 +2871,7 @@ public:
FileStorage* fs; FileStorage* fs;
}; };
template<typename _Tp> class CV_EXPORTS VecWriterProxy<_Tp,1> template<typename _Tp> class VecWriterProxy<_Tp,1>
{ {
public: public:
VecWriterProxy( FileStorage* _fs ) : fs(_fs) {} VecWriterProxy( FileStorage* _fs ) : fs(_fs) {}
@ -3086,7 +3086,7 @@ inline void FileNode::readRaw( const string& fmt, uchar* vec, size_t len ) const
begin().readRaw( fmt, vec, len ); begin().readRaw( fmt, vec, len );
} }
template<typename _Tp, int numflag> class CV_EXPORTS VecReaderProxy template<typename _Tp, int numflag> class VecReaderProxy
{ {
public: public:
VecReaderProxy( FileNodeIterator* _it ) : it(_it) {} VecReaderProxy( FileNodeIterator* _it ) : it(_it) {}
@ -3100,7 +3100,7 @@ public:
FileNodeIterator* it; FileNodeIterator* it;
}; };
template<typename _Tp> class CV_EXPORTS VecReaderProxy<_Tp,1> template<typename _Tp> class VecReaderProxy<_Tp,1>
{ {
public: public:
VecReaderProxy( FileNodeIterator* _it ) : it(_it) {} VecReaderProxy( FileNodeIterator* _it ) : it(_it) {}
@ -3414,19 +3414,19 @@ template<typename _Tp, class _LT> void sort( vector<_Tp>& vec, _LT LT=_LT() )
} }
} }
template<typename _Tp> class CV_EXPORTS LessThan template<typename _Tp> class LessThan
{ {
public: public:
bool operator()(const _Tp& a, const _Tp& b) const { return a < b; } bool operator()(const _Tp& a, const _Tp& b) const { return a < b; }
}; };
template<typename _Tp> class CV_EXPORTS GreaterEq template<typename _Tp> class GreaterEq
{ {
public: public:
bool operator()(const _Tp& a, const _Tp& b) const { return a >= b; } bool operator()(const _Tp& a, const _Tp& b) const { return a >= b; }
}; };
template<typename _Tp> class CV_EXPORTS LessThanIdx template<typename _Tp> class LessThanIdx
{ {
public: public:
LessThanIdx( const _Tp* _arr ) : arr(_arr) {} LessThanIdx( const _Tp* _arr ) : arr(_arr) {}
@ -3434,7 +3434,7 @@ public:
const _Tp* arr; const _Tp* arr;
}; };
template<typename _Tp> class CV_EXPORTS GreaterEqIdx template<typename _Tp> class GreaterEqIdx
{ {
public: public:
GreaterEqIdx( const _Tp* _arr ) : arr(_arr) {} GreaterEqIdx( const _Tp* _arr ) : arr(_arr) {}
@ -3763,7 +3763,7 @@ template<typename _Tp> inline bool operator != (const SeqIterator<_Tp>& a,
} }
template<typename _ClsName> struct CV_EXPORTS RTTIImpl template<typename _ClsName> struct RTTIImpl
{ {
public: public:
static int isInstance(const void* ptr) static int isInstance(const void* ptr)

View File

@ -1017,7 +1017,7 @@ struct CV_EXPORTS Hamming
typedef Hamming HammingLUT; typedef Hamming HammingLUT;
template<int cellsize> struct CV_EXPORTS HammingMultilevel template<int cellsize> struct HammingMultilevel
{ {
enum { normType = NORM_HAMMING + (cellsize>1) }; enum { normType = NORM_HAMMING + (cellsize>1) };
typedef unsigned char ValueType; typedef unsigned char ValueType;