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(component, pointer, ...) \
28 if (Q_UNLIKELY(!pointer)) { \
29 using quentier::NullPtrException; \
30 ErrorString quentier_null_ptr_error( \
31 QT_TRANSLATE_NOOP("", "Detected unintended null pointer")); \
32 quentier_null_ptr_error.details() = QStringLiteral(__FILE__); \
33 quentier_null_ptr_error.details() += QStringLiteral(" ("); \
34 quentier_null_ptr_error.details() += QString::number(__LINE__); \
35 quentier_null_ptr_error.details() += QStringLiteral(") "); \
36 quentier_null_ptr_error.details() += \
37 QString::fromUtf8("" #__VA_ARGS__ ""); \
38 QNERROR(component, quentier_null_ptr_error); \
39 throw NullPtrException(quentier_null_ptr_error); \