19 #ifndef LIB_QUENTIER_UTILITY_QUENTIER_CHECK_PTR_H
20 #define LIB_QUENTIER_UTILITY_QUENTIER_CHECK_PTR_H
22 #include <quentier/exception/NullPtrException.h>
23 #include <quentier/logging/QuentierLogger.h>
25 #ifndef QUENTIER_CHECK_PTR
26 #define QUENTIER_CHECK_PTR(pointer, ...) \
28 if (Q_UNLIKELY(!pointer)) \
30 using quentier::NullPtrException; \
31 ErrorString quentier_null_ptr_error( \
32 QT_TRANSLATE_NOOP("", "Detected unintended null pointer")); \
33 quentier_null_ptr_error.details() = QStringLiteral(__FILE__); \
34 quentier_null_ptr_error.details() += QStringLiteral(" ("); \
35 quentier_null_ptr_error.details() += QString::number(__LINE__); \
36 quentier_null_ptr_error.details() += QStringLiteral(") "); \
37 quentier_null_ptr_error.details() += \
38 QString::fromUtf8("" #__VA_ARGS__ ""); \
39 QNERROR(quentier_null_ptr_error); \
40 throw NullPtrException(quentier_null_ptr_error); \