/*! * * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. * copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, * IN PART OR IN WHOLE, * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * file main.h * date 10/25/2019 * author Behrouz NematiPour * */ #pragma once // Qt #include #include // Project #define SINGLETON_DECL(vCLASS) \ private: \ static vCLASS *_instance; \ explicit vCLASS(QObject *parent = nullptr); \ virtual ~vCLASS() { \ delete _instance; \ } \ vCLASS(vCLASS const &) = delete; \ vCLASS & operator = (vCLASS const &) = delete; \ public: \ static vCLASS *I() { \ if (!_instance) \ _instance = new vCLASS(); \ return _instance; \ } #define SINGLETON_INIT(vCLASS) \ vCLASS *vCLASS::_instance = nullptr; #define SINGLETON(vCLASS) \ private: \ explicit vCLASS(QObject *parent = nullptr); \ virtual ~vCLASS() { } \ vCLASS(vCLASS const &) = delete; \ vCLASS & operator = (vCLASS const &) = delete; \ public: \ static vCLASS &I() { \ static vCLASS _instance; \ return _instance; \ } #define PRINT_THREAD_NAME //qDebug() << __func__ << QThread::currentThread()->objectName()