Merge remote-tracking branch 'origin/2.4' into merge-2.4

Conflicts:
	doc/tutorials/definitions/tocDefinitions.rst
	modules/core/include/opencv2/core/core.hpp
	modules/core/src/system.cpp
	modules/features2d/src/freak.cpp
	modules/ocl/include/opencv2/ocl/ocl.hpp
	modules/ocl/src/cl_context.cpp
	modules/ocl/test/test_api.cpp
This commit is contained in:
Roman Donchenko
2013-12-16 15:02:12 +04:00
21 changed files with 1577 additions and 266 deletions

View File

@@ -305,6 +305,32 @@ private:
AutoLock& operator = (const AutoLock&);
};
class TLSDataContainer
{
private:
int key_;
protected:
CV_EXPORTS TLSDataContainer();
CV_EXPORTS ~TLSDataContainer(); // virtual is not required
public:
virtual void* createDataInstance() const = 0;
virtual void deleteDataInstance(void* data) const = 0;
CV_EXPORTS void* getData() const;
};
template <typename T>
class TLSData : protected TLSDataContainer
{
public:
inline TLSData() {}
inline ~TLSData() {}
inline T* get() const { return (T*)getData(); }
private:
virtual void* createDataInstance() const { return new T; }
virtual void deleteDataInstance(void* data) const { delete (T*)data; }
};
// The CommandLineParser class is designed for command line arguments parsing
class CV_EXPORTS CommandLineParser