Removed CV_EXPORTS from all template classes (that I could find).

It doesn't make sense to export template classes, since there's no way
the user can learn that it can import them. In fact, it is somewhat
deleterious, because every module will export every instantiation
that it uses, but doesn't inline.
This commit is contained in:
Roman Donchenko 2013-07-25 19:40:08 +04:00
parent 8afb7a40c6
commit 4ac2db271d
8 changed files with 31 additions and 31 deletions

View File

@ -449,15 +449,15 @@ _AccTp normInf(const _Tp* a, const _Tp* b, int n)
////////////////// forward declarations for important OpenCV types //////////////////
template<typename _Tp, int cn> class CV_EXPORTS Vec;
template<typename _Tp, int m, int n> class CV_EXPORTS Matx;
template<typename _Tp, int cn> class Vec;
template<typename _Tp, int m, int n> class Matx;
template<typename _Tp> class CV_EXPORTS Complex;
template<typename _Tp> class CV_EXPORTS Point_;
template<typename _Tp> class CV_EXPORTS Point3_;
template<typename _Tp> class CV_EXPORTS Size_;
template<typename _Tp> class CV_EXPORTS Rect_;
template<typename _Tp> class CV_EXPORTS Scalar_;
template<typename _Tp> class Complex;
template<typename _Tp> class Point_;
template<typename _Tp> class Point3_;
template<typename _Tp> class Size_;
template<typename _Tp> class Rect_;
template<typename _Tp> class Scalar_;
class CV_EXPORTS RotatedRect;
class CV_EXPORTS Range;
@ -472,16 +472,16 @@ class CV_EXPORTS MatExpr;
class CV_EXPORTS SparseMat;
typedef Mat MatND;
template<typename _Tp> class CV_EXPORTS Mat_;
template<typename _Tp> class CV_EXPORTS SparseMat_;
template<typename _Tp> class Mat_;
template<typename _Tp> class SparseMat_;
class CV_EXPORTS MatConstIterator;
class CV_EXPORTS SparseMatIterator;
class CV_EXPORTS SparseMatConstIterator;
template<typename _Tp> class CV_EXPORTS MatIterator_;
template<typename _Tp> class CV_EXPORTS MatConstIterator_;
template<typename _Tp> class CV_EXPORTS SparseMatIterator_;
template<typename _Tp> class CV_EXPORTS SparseMatConstIterator_;
template<typename _Tp> class MatIterator_;
template<typename _Tp> class MatConstIterator_;
template<typename _Tp> class SparseMatIterator_;
template<typename _Tp> class SparseMatConstIterator_;
namespace ogl
{

View File

@ -1906,7 +1906,7 @@ typedef Ptr<CvMemStorage> MemStorage;
i.e. no constructors or destructors
are called for the sequence elements.
*/
template<typename _Tp> class CV_EXPORTS Seq
template<typename _Tp> class Seq
{
public:
typedef SeqIterator<_Tp> iterator;
@ -1989,7 +1989,7 @@ public:
/*!
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:
//! the default constructor

View File

@ -127,7 +127,7 @@ CV_EXPORTS void fastFree(void* ptr);
/*!
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:
typedef _Tp value_type;
@ -183,7 +183,7 @@ public:
\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}
*/
template<typename _Tp> class CV_EXPORTS Ptr
template<typename _Tp> class Ptr
{
public:
//! empty constructor

View File

@ -828,7 +828,7 @@ protected:
img(i,j)[2] ^= (uchar)(i ^ j); // img(y,x)[c] accesses c-th channel of the pixel (x,y)
\endcode
*/
template<typename _Tp> class CV_EXPORTS Mat_ : public Mat
template<typename _Tp> class Mat_ : public Mat
{
public:
typedef _Tp value_type;
@ -1355,7 +1355,7 @@ public:
m_.ref(2) += m_(3); // equivalent to m.ref<int>(2) += m.value<int>(3);
\endcode
*/
template<typename _Tp> class CV_EXPORTS SparseMat_ : public SparseMat
template<typename _Tp> class SparseMat_ : public SparseMat
{
public:
typedef SparseMatIterator_<_Tp> iterator;
@ -1727,7 +1727,7 @@ public:
This is the derived from cv::SparseMatConstIterator_ class that
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:

View File

@ -81,7 +81,7 @@ struct CV_EXPORTS Matx_DivOp {};
struct CV_EXPORTS Matx_MatMulOp {};
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:
enum { depth = DataType<_Tp>::depth,
@ -286,7 +286,7 @@ template<typename _Tp, int m, int n> static double norm(const Matx<_Tp, m, n>& M
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>.
*/
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:
typedef _Tp value_type;

View File

@ -68,7 +68,7 @@ namespace cv
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().
*/
template<typename _Tp> class CV_EXPORTS Complex
template<typename _Tp> class Complex
{
public:
@ -120,7 +120,7 @@ public:
as a template parameter. There are a few shorter aliases available for user convenience.
See cv::Point, cv::Point2i, cv::Point2f and cv::Point2d.
*/
template<typename _Tp> class CV_EXPORTS Point_
template<typename _Tp> class Point_
{
public:
typedef _Tp value_type;
@ -191,7 +191,7 @@ public:
\see cv::Point3i, cv::Point3f and cv::Point3d
*/
template<typename _Tp> class CV_EXPORTS Point3_
template<typename _Tp> class Point3_
{
public:
typedef _Tp value_type;
@ -256,7 +256,7 @@ public:
The class represents the size of a 2D rectangle, image size, matrix size etc.
Normally, cv::Size ~ cv::Size_<int> is used.
*/
template<typename _Tp> class CV_EXPORTS Size_
template<typename _Tp> class Size_
{
public:
typedef _Tp value_type;
@ -314,7 +314,7 @@ public:
The class represents a 2D rectangle with coordinates of the specified data type.
Normally, cv::Rect ~ cv::Rect_<int> is used.
*/
template<typename _Tp> class CV_EXPORTS Rect_
template<typename _Tp> class Rect_
{
public:
typedef _Tp value_type;
@ -470,7 +470,7 @@ public:
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.
*/
template<typename _Tp> class CV_EXPORTS Scalar_ : public Vec<_Tp, 4>
template<typename _Tp> class Scalar_ : public Vec<_Tp, 4>
{
public:
//! various constructors

View File

@ -80,7 +80,7 @@ namespace cv
}
\endcode
*/
template<typename _Tp, size_t fixed_size = 1024/sizeof(_Tp)+8> class CV_EXPORTS AutoBuffer
template<typename _Tp, size_t fixed_size = 1024/sizeof(_Tp)+8> class AutoBuffer
{
public:
typedef _Tp value_type;

View File

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