33#include "qwt_version_info.h"
37#pragma warning(disable : 4660)
39#pragma warning(disable : 4250)
44#if defined(QWT_MAKEDLL)
45#define QWT_EXPORT Q_DECL_EXPORT
47#define QWT_EXPORT Q_DECL_IMPORT
56#define QWT_CONSTEXPR Q_DECL_CONSTEXPR
58#if QT_VERSION >= 0x050000
59#define QWT_OVERRIDE Q_DECL_OVERRIDE
60#define QWT_FINAL Q_DECL_FINAL
76#define QWT_DEBUG_DRAW 1
79#ifndef QWT_DEBUG_PRINT
80#define QWT_DEBUG_PRINT 1
121#ifndef QWT_DECLARE_PRIVATE
122#define QWT_DECLARE_PRIVATE(classname) \
124 friend class classname::PrivateData; \
125 std::unique_ptr< PrivateData > m_data; \
126 inline PrivateData* d_func() \
128 return (m_data.get()); \
130 inline const PrivateData* d_func() const \
132 return (m_data.get()); \
142#ifndef QWT_DECLARE_PUBLIC
143#define QWT_DECLARE_PUBLIC(classname) \
144 friend class classname; \
145 classname* q_ptr { nullptr }; \
146 inline classname* q_func() \
148 return (static_cast< classname* >(q_ptr)); \
150 inline const classname* q_func() const \
152 return (static_cast< const classname* >(q_ptr)); \
161#ifndef QWT_PIMPL_CONSTRUCT
162#define QWT_PIMPL_CONSTRUCT m_data(std::make_unique< PrivateData >(this))
170#define QWT_D(pointerName) PrivateData* pointerName = d_func()
178#define QWT_DC(pointerName) const PrivateData* pointerName = d_func()
186#define QWT_Q(classname, pointerName) classname* pointerName = q_func()
194#define QWT_QC(classname, pointerName) const classname* pointerName = q_func()
197#if __cplusplus >= 201402L
199template<
typename T,
typename... Args >
200std::unique_ptr< T > qwt_make_unique(Args&&... args)
202 return std::make_unique< T >(std::forward< Args >(args)...);
205template<
typename T >
206std::unique_ptr< T > qwt_make_unique(std::size_t size)
208 return std::make_unique< T >(size);
215template<
typename T,
typename... Args >
216std::unique_ptr< T > qwt_make_unique(Args&&... args)
218 return std::unique_ptr< T >(
new T(std::forward< Args >(args)...));
222template<
typename T >
223std::unique_ptr< T > qwt_make_unique(std::size_t size)
225 return std::unique_ptr< T >(
new typename std::remove_extent< T >::type[ size ]());