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 constexpr
59#define QWT_DEBUG_DRAW 0
62#ifndef QWT_DEBUG_PRINT
63#define QWT_DEBUG_PRINT 0
146#ifndef QWT_DECLARE_PRIVATE
147#define QWT_DECLARE_PRIVATE(classname) \
149 friend class classname::PrivateData; \
150 std::unique_ptr< PrivateData > m_data; \
151 inline PrivateData* d_func() \
153 return (m_data.get()); \
155 inline const PrivateData* d_func() const \
157 return (m_data.get()); \
176#ifndef QWT_DECLARE_PUBLIC
177#define QWT_DECLARE_PUBLIC(classname) \
178 friend class classname; \
179 classname* q_ptr { nullptr }; \
180 inline classname* q_func() \
182 return (static_cast< classname* >(q_ptr)); \
184 inline const classname* q_func() const \
186 return (static_cast< const classname* >(q_ptr)); \
203#ifndef QWT_PIMPL_CONSTRUCT
204#define QWT_PIMPL_CONSTRUCT m_data(qwt_make_unique< PrivateData >(this))
220#ifndef QWT_PIMPL_CONSTRUCT_INIT
221#define QWT_PIMPL_CONSTRUCT_INIT() \
223 m_data = qwt_make_unique< PrivateData >(this); \
239#define QWT_D(pointerName) PrivateData* pointerName = d_func()
254#define QWT_DC(pointerName) const PrivateData* pointerName = d_func()
269#define QWT_Q(classname, pointerName) classname* pointerName = q_func()
284#define QWT_QC(classname, pointerName) const classname* pointerName = q_func()
287#if __cplusplus >= 201402L
289template<
typename T,
typename... Args >
290std::unique_ptr< T > qwt_make_unique(Args&&... args)
292 return std::make_unique< T >(std::forward< Args >(args)...);
295template<
typename T >
296std::unique_ptr< T > qwt_make_unique(std::size_t size)
298 return std::make_unique< T >(size);
305template<
typename T,
typename... Args >
306std::unique_ptr< T > qwt_make_unique(Args&&... args)
308 return std::unique_ptr< T >(
new T(std::forward< Args >(args)...));
312template<
typename T >
313std::unique_ptr< T > qwt_make_unique(std::size_t size)
315 return std::unique_ptr< T >(
new typename std::remove_extent< T >::type[ size ]());
320#if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
322#define qwt_as_const std::as_const
327#define qwt_as_const qAsConst