Git commit 5255876dde678aa7d5af8020d5836b1fc6c58fc7 by Christian Mollekopf. Committed on 08/12/2016 at 14:24. Pushed by cmollekopf into branch 'develop'. Let the preprocessor repeat the types. M +12 -0 common/domain/applicationdomaintype.h M +4 -6 common/modelresult.cpp M +1 -4 common/resourcecontrol.cpp M +1 -6 common/store.cpp M +0 -5 common/synchronizer.cpp M +1 -7 common/test.cpp https://commits.kde.org/sink/5255876dde678aa7d5af8020d5836b1fc6c58fc7 diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicat= iondomaintype.h index 1c0f208..be14513 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h @@ -482,6 +482,18 @@ class SINK_EXPORT TypeImplementation; #undef SINK_REFERENCE_PROPERTY #undef SINK_INDEX_PROPERTY = +/** + * This macro can be used to instantiate templates for all domain types. + */ +#define SINK_REGISTER_TYPES() \ + REGISTER_TYPE(Sink::ApplicationDomain::Event); \ + REGISTER_TYPE(Sink::ApplicationDomain::Mail); \ + REGISTER_TYPE(Sink::ApplicationDomain::Folder); \ + REGISTER_TYPE(Sink::ApplicationDomain::SinkResource); \ + REGISTER_TYPE(Sink::ApplicationDomain::SinkAccount); \ + REGISTER_TYPE(Sink::ApplicationDomain::Identity); \ + + Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType) Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType::Ptr) Q_DECLARE_METATYPE(Sink::ApplicationDomain::Entity) diff --git a/common/modelresult.cpp b/common/modelresult.cpp index 16e3857..ed77ebb 100644 --- a/common/modelresult.cpp +++ b/common/modelresult.cpp @@ -311,9 +311,7 @@ void ModelResult::modify(const Ptr &value) emit dataChanged(idx, idx); } = -template class ModelResult; -template class ModelResult; -template class ModelResult; -template class ModelResult; -template class ModelResult; -template class ModelResult; +#define REGISTER_TYPE(T) \ + template class ModelResult; \ + +SINK_REGISTER_TYPES() diff --git a/common/resourcecontrol.cpp b/common/resourcecontrol.cpp index f885deb..c1fbf06 100644 --- a/common/resourcecontrol.cpp +++ b/common/resourcecontrol.cpp @@ -158,9 +158,6 @@ KAsync::Job ResourceControl::inspect(const Inspec= tion &inspectionCommand) = #define REGISTER_TYPE(T) template KAsync::Job ResourceControl::inspe= ct(const Inspection &); = -REGISTER_TYPE(ApplicationDomain::Event); -REGISTER_TYPE(ApplicationDomain::Mail); -REGISTER_TYPE(ApplicationDomain::Folder); -REGISTER_TYPE(ApplicationDomain::SinkResource); +SINK_REGISTER_TYPES() = } // namespace Sink diff --git a/common/store.cpp b/common/store.cpp index 971cc7f..dd00bfe 100644 --- a/common/store.cpp +++ b/common/store.cpp @@ -414,11 +414,6 @@ QList Store::read(const Sink::Query &q) template T Store::readOne(const Query &); = \ template QList Store::read(const Query &); = -REGISTER_TYPE(ApplicationDomain::Event); -REGISTER_TYPE(ApplicationDomain::Mail); -REGISTER_TYPE(ApplicationDomain::Folder); -REGISTER_TYPE(ApplicationDomain::SinkResource); -REGISTER_TYPE(ApplicationDomain::SinkAccount); -REGISTER_TYPE(ApplicationDomain::Identity); +SINK_REGISTER_TYPES() = } // namespace Sink diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp index fec848f..d94eb43 100644 --- a/common/synchronizer.cpp +++ b/common/synchronizer.cpp @@ -484,10 +484,5 @@ bool Synchronizer::allChangesReplayed() template void Synchronizer::createOrModify(const QByteArray &bufferTyp= e, const QByteArray &remoteId, const T &entity, const QHash &mergeCriteria); \ template void Synchronizer::modify(const T &entity, const QByteArray &= newResource, bool remove); = -#define SINK_REGISTER_TYPES() \ - REGISTER_TYPE(ApplicationDomain::Event); \ - REGISTER_TYPE(ApplicationDomain::Mail); \ - REGISTER_TYPE(ApplicationDomain::Folder); \ - SINK_REGISTER_TYPES() = diff --git a/common/test.cpp b/common/test.cpp index 0c7ba10..dc63afc 100644 --- a/common/test.cpp +++ b/common/test.cpp @@ -215,10 +215,4 @@ QList Sink::Test::TestAccou template void Sink::Test::TestAccount::addEntity(const ApplicationD= omain::ApplicationDomainType::Ptr &); \ template typename T::Ptr Sink::Test::TestAccount::createEntity(); = - -REGISTER_TYPE(ApplicationDomain::Event); -REGISTER_TYPE(ApplicationDomain::Mail); -REGISTER_TYPE(ApplicationDomain::Folder); -REGISTER_TYPE(ApplicationDomain::SinkResource); -REGISTER_TYPE(ApplicationDomain::SinkAccount); -REGISTER_TYPE(ApplicationDomain::Identity); +SINK_REGISTER_TYPES()