summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-15 17:54:58 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-16 10:39:59 +0100
commit0ecabf708cd56e0312392cca6d85aa8c3f2e7ccc (patch)
tree178a689a3be37e513ac9f7d1a2117b802f8ec17c
parentf7a42de9bfd6e34f1dc46da433d3f45976b1cd0e (diff)
downloadsink-0ecabf708cd56e0312392cca6d85aa8c3f2e7ccc.tar.gz
sink-0ecabf708cd56e0312392cca6d85aa8c3f2e7ccc.zip
Use SINK_REGISTER_TYPES to avoid repeating the types
-rw-r--r--common/domain/applicationdomaintype.cpp12
-rw-r--r--common/domain/applicationdomaintype.h34
-rw-r--r--sinksh/sinksh_utils.cpp32
3 files changed, 25 insertions, 53 deletions
diff --git a/common/domain/applicationdomaintype.cpp b/common/domain/applicationdomaintype.cpp
index 49bfb5f..530056d 100644
--- a/common/domain/applicationdomaintype.cpp
+++ b/common/domain/applicationdomaintype.cpp
@@ -384,14 +384,10 @@ QByteArrayList getTypeNames()
384{ 384{
385 static QByteArrayList types; 385 static QByteArrayList types;
386 if (types.isEmpty()) { 386 if (types.isEmpty()) {
387 types << ApplicationDomain::getTypeName<SinkResource>(); 387#define REGISTER_TYPE(TYPE) \
388 types << ApplicationDomain::getTypeName<SinkAccount>(); 388 types << ApplicationDomain::getTypeName<TYPE>();
389 types << ApplicationDomain::getTypeName<Identity>(); 389SINK_REGISTER_TYPES()
390 types << ApplicationDomain::getTypeName<Mail>(); 390#undef REGISTER_TYPE
391 types << ApplicationDomain::getTypeName<Folder>();
392 types << ApplicationDomain::getTypeName<Event>();
393 types << ApplicationDomain::getTypeName<Todo>();
394 types << ApplicationDomain::getTypeName<Contact>();
395 } 391 }
396 return types; 392 return types;
397} 393}
diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h
index c822895..98b7de7 100644
--- a/common/domain/applicationdomaintype.h
+++ b/common/domain/applicationdomaintype.h
@@ -519,35 +519,27 @@ class SINK_EXPORT TypeImplementation;
519 * This macro can be used to instantiate templates for all domain types. 519 * This macro can be used to instantiate templates for all domain types.
520 */ 520 */
521#define SINK_REGISTER_TYPES() \ 521#define SINK_REGISTER_TYPES() \
522 REGISTER_TYPE(Sink::ApplicationDomain::Contact); \ 522 REGISTER_TYPE(Sink::ApplicationDomain::Contact) \
523 REGISTER_TYPE(Sink::ApplicationDomain::Event); \ 523 REGISTER_TYPE(Sink::ApplicationDomain::Event) \
524 REGISTER_TYPE(Sink::ApplicationDomain::Mail); \ 524 REGISTER_TYPE(Sink::ApplicationDomain::Mail) \
525 REGISTER_TYPE(Sink::ApplicationDomain::Folder); \ 525 REGISTER_TYPE(Sink::ApplicationDomain::Folder) \
526 REGISTER_TYPE(Sink::ApplicationDomain::SinkResource); \ 526 REGISTER_TYPE(Sink::ApplicationDomain::SinkResource) \
527 REGISTER_TYPE(Sink::ApplicationDomain::SinkAccount); \ 527 REGISTER_TYPE(Sink::ApplicationDomain::SinkAccount) \
528 REGISTER_TYPE(Sink::ApplicationDomain::Identity); \ 528 REGISTER_TYPE(Sink::ApplicationDomain::Identity) \
529 529
530SINK_EXPORT QDataStream &operator<<(QDataStream &out, const Sink::ApplicationDomain::Reference &reference); 530SINK_EXPORT QDataStream &operator<<(QDataStream &out, const Sink::ApplicationDomain::Reference &reference);
531SINK_EXPORT QDataStream &operator>>(QDataStream &in, Sink::ApplicationDomain::Reference &reference); 531SINK_EXPORT QDataStream &operator>>(QDataStream &in, Sink::ApplicationDomain::Reference &reference);
532 532
533#define REGISTER_TYPE(TYPE) \
534 Q_DECLARE_METATYPE(TYPE) \
535 Q_DECLARE_METATYPE(TYPE::Ptr)
536SINK_REGISTER_TYPES()
537#undef REGISTER_TYPE
538
533Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType) 539Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType)
534Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType::Ptr) 540Q_DECLARE_METATYPE(Sink::ApplicationDomain::ApplicationDomainType::Ptr)
535Q_DECLARE_METATYPE(Sink::ApplicationDomain::Entity) 541Q_DECLARE_METATYPE(Sink::ApplicationDomain::Entity)
536Q_DECLARE_METATYPE(Sink::ApplicationDomain::Entity::Ptr) 542Q_DECLARE_METATYPE(Sink::ApplicationDomain::Entity::Ptr)
537Q_DECLARE_METATYPE(Sink::ApplicationDomain::Contact)
538Q_DECLARE_METATYPE(Sink::ApplicationDomain::Contact::Ptr)
539Q_DECLARE_METATYPE(Sink::ApplicationDomain::Event)
540Q_DECLARE_METATYPE(Sink::ApplicationDomain::Event::Ptr)
541Q_DECLARE_METATYPE(Sink::ApplicationDomain::Mail)
542Q_DECLARE_METATYPE(Sink::ApplicationDomain::Mail::Ptr)
543Q_DECLARE_METATYPE(Sink::ApplicationDomain::Folder)
544Q_DECLARE_METATYPE(Sink::ApplicationDomain::Folder::Ptr)
545Q_DECLARE_METATYPE(Sink::ApplicationDomain::SinkResource)
546Q_DECLARE_METATYPE(Sink::ApplicationDomain::SinkResource::Ptr)
547Q_DECLARE_METATYPE(Sink::ApplicationDomain::SinkAccount)
548Q_DECLARE_METATYPE(Sink::ApplicationDomain::SinkAccount::Ptr)
549Q_DECLARE_METATYPE(Sink::ApplicationDomain::Identity)
550Q_DECLARE_METATYPE(Sink::ApplicationDomain::Identity::Ptr)
551Q_DECLARE_METATYPE(Sink::ApplicationDomain::Mail::Contact) 543Q_DECLARE_METATYPE(Sink::ApplicationDomain::Mail::Contact)
552Q_DECLARE_METATYPE(Sink::ApplicationDomain::Error) 544Q_DECLARE_METATYPE(Sink::ApplicationDomain::Error)
553Q_DECLARE_METATYPE(Sink::ApplicationDomain::Progress) 545Q_DECLARE_METATYPE(Sink::ApplicationDomain::Progress)
diff --git a/sinksh/sinksh_utils.cpp b/sinksh/sinksh_utils.cpp
index 9a0d1d8..3bbffef 100644
--- a/sinksh/sinksh_utils.cpp
+++ b/sinksh/sinksh_utils.cpp
@@ -36,31 +36,15 @@ StoreBase &getStore(const QString &type)
36{ 36{
37 using namespace Sink::ApplicationDomain; 37 using namespace Sink::ApplicationDomain;
38 38
39 if (type == getTypeName<Folder>()) { 39#define REGISTER_TYPE(TYPE) \
40 static Store<Folder> store; 40 if (type == getTypeName<TYPE>()) { static Store<TYPE> store; return store; } else
41 return store; 41SINK_REGISTER_TYPES()
42 } else if (type == getTypeName<Mail>()) { 42#undef REGISTER_TYPE
43 static Store<Mail> store; 43 {
44 return store; 44 SinkWarning_("", "") << "Trying to get a store that doesn't exist: " << type;
45 } else if (type == getTypeName<Event>()) { 45 Q_ASSERT(false);
46 static Store<Event> store; 46 }
47 return store;
48 } else if (type == getTypeName<SinkResource>()) {
49 static Store<SinkResource> store;
50 return store;
51 } else if (type == getTypeName<SinkAccount>()) {
52 static Store<SinkAccount> store;
53 return store;
54 } else if (type == getTypeName<Identity>()) {
55 static Store<Identity> store;
56 return store;
57 } else if (type == getTypeName<Contact>()) {
58 static Store<Contact> store;
59 return store;
60 }
61 47
62 SinkWarning_("", "") << "Trying to get a store that doesn't exist: " << type;
63 Q_ASSERT(false);
64 static DummyStore store; 48 static DummyStore store;
65 return store; 49 return store;
66} 50}