6 #ifndef SWIFT_MISC_PROVIDER_H
7 #define SWIFT_MISC_PROVIDER_H
39 template <
class PROVIDER>
44 IProviderAware(PROVIDER *provider =
nullptr) { this->setProvider(provider); }
59 if (m_provider == provider) {
return; }
60 if (m_provider) { m_lastProviderConnections.disconnectAll(); }
61 m_provider = provider;
65 QMetaObject::Connection con = QObject::connect(iProvider->
asQObject(), &QObject::destroyed,
66 [=](QObject *obj) { this->onProviderDestroyed(obj); });
67 m_lastProviderConnections.append(con);
75 const PROVIDER *
provider()
const {
return m_provider; }
79 PROVIDER *m_provider =
nullptr;
84 if (!m_provider) {
return; }
85 PROVIDER *provider = qobject_cast<PROVIDER *>(obj);
86 if (provider != m_provider) {
return; }
List of QMetaObject::Connection.
Base class of provider aware classes.
virtual void onProviderDestroyed(QObject *obj)
Provider was deleted.
bool hasProvider() const
Has provider?
PROVIDER * getProvider() const
Provider.
PROVIDER * provider()
Provider.
IProviderAware(PROVIDER *provider=nullptr)
Ctor.
const PROVIDER * provider() const
Const provider.
void setProvider(PROVIDER *provider)
Set the provider.
virtual ~IProviderAware()
Dtor.
Base class for providers.
IProvider(const IProvider &)=delete
Copy constructor.
virtual QObject * asQObject()
Return as QObject.
IProvider & operator=(const IProvider &)=delete
Copy assignment operator.
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.