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
57#define QWT_DEBUG_DRAW 0
60#ifndef QWT_DEBUG_PRINT
61#define QWT_DEBUG_PRINT 0
101#ifndef QWT_DECLARE_PRIVATE
102#define QWT_DECLARE_PRIVATE(classname) \
104 friend class classname::PrivateData; \
105 std::unique_ptr< PrivateData > m_data; \
106 inline PrivateData* d_func() \
108 return (m_data.get()); \
110 inline const PrivateData* d_func() const \
112 return (m_data.get()); \
122#ifndef QWT_DECLARE_PUBLIC
123#define QWT_DECLARE_PUBLIC(classname) \
124 friend class classname; \
125 classname* q_ptr { nullptr }; \
126 inline classname* q_func() \
128 return (static_cast< classname* >(q_ptr)); \
130 inline const classname* q_func() const \
132 return (static_cast< const classname* >(q_ptr)); \
141#ifndef QWT_PIMPL_CONSTRUCT
142#define QWT_PIMPL_CONSTRUCT m_data(qwt_make_unique< PrivateData >(this))
150#ifndef QWT_PIMPL_CONSTRUCT_INIT
151#define QWT_PIMPL_CONSTRUCT_INIT() \
153 m_data = qwt_make_unique< PrivateData >(this); \
162#define QWT_D(pointerName) PrivateData* pointerName = d_func()
170#define QWT_DC(pointerName) const PrivateData* pointerName = d_func()
178#define QWT_Q(classname, pointerName) classname* pointerName = q_func()
186#define QWT_QC(classname, pointerName) const classname* pointerName = q_func()
189#if __cplusplus >= 201402L
191template<
typename T,
typename... Args >
192std::unique_ptr< T > qwt_make_unique(Args&&... args)
194 return std::make_unique< T >(std::forward< Args >(args)...);
197template<
typename T >
198std::unique_ptr< T > qwt_make_unique(std::size_t size)
200 return std::make_unique< T >(size);
207template<
typename T,
typename... Args >
208std::unique_ptr< T > qwt_make_unique(Args&&... args)
210 return std::unique_ptr< T >(
new T(std::forward< Args >(args)...));
214template<
typename T >
215std::unique_ptr< T > qwt_make_unique(std::size_t size)
217 return std::unique_ptr< T >(
new typename std::remove_extent< T >::type[ size ]());
222#if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
224#define qwt_as_const std::as_const
229#define qwt_as_const qAsConst