summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-04-28 12:19:52 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-04-28 12:19:52 +0200
commita4ce2b2eda8a2fea4263017e6868c327f22f5e47 (patch)
tree448b51e6107c0e377f3a92103bf060d128496c35
parent6b8432a5c0647d8fbe3cda549574ae13e07bb2f4 (diff)
downloadsink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.tar.gz
sink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.zip
Removed the template argument from the write property mapper
-rw-r--r--common/domain/typeimplementations.cpp80
-rw-r--r--common/domain/typeimplementations.h11
-rw-r--r--common/domainadaptor.h16
-rw-r--r--common/propertymapper.h25
-rw-r--r--tests/domainadaptortest.cpp8
5 files changed, 69 insertions, 71 deletions
diff --git a/common/domain/typeimplementations.cpp b/common/domain/typeimplementations.cpp
index 5db35b7..598e5a7 100644
--- a/common/domain/typeimplementations.cpp
+++ b/common/domain/typeimplementations.cpp
@@ -81,24 +81,24 @@ void TypeImplementation<Mail>::configure(ReadPropertyMapper &propertyMapper)
81 propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId); 81 propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId);
82} 82}
83 83
84void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) 84void TypeImplementation<Mail>::configure(WritePropertyMapper &propertyMapper)
85{ 85{
86 propertyMapper.addMapping<Mail::Sender>(&BufferBuilder::add_sender); 86 propertyMapper.addMapping<Mail::Sender, BufferBuilder>(&BufferBuilder::add_sender);
87 propertyMapper.addMapping<Mail::To>(&BufferBuilder::add_to); 87 propertyMapper.addMapping<Mail::To, BufferBuilder>(&BufferBuilder::add_to);
88 propertyMapper.addMapping<Mail::Cc>(&BufferBuilder::add_cc); 88 propertyMapper.addMapping<Mail::Cc, BufferBuilder>(&BufferBuilder::add_cc);
89 propertyMapper.addMapping<Mail::Bcc>(&BufferBuilder::add_bcc); 89 propertyMapper.addMapping<Mail::Bcc, BufferBuilder>(&BufferBuilder::add_bcc);
90 propertyMapper.addMapping<Mail::Subject>(&BufferBuilder::add_subject); 90 propertyMapper.addMapping<Mail::Subject, BufferBuilder>(&BufferBuilder::add_subject);
91 propertyMapper.addMapping<Mail::Date>(&BufferBuilder::add_date); 91 propertyMapper.addMapping<Mail::Date, BufferBuilder>(&BufferBuilder::add_date);
92 propertyMapper.addMapping<Mail::Unread>(&BufferBuilder::add_unread); 92 propertyMapper.addMapping<Mail::Unread, BufferBuilder>(&BufferBuilder::add_unread);
93 propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important); 93 propertyMapper.addMapping<Mail::Important, BufferBuilder>(&BufferBuilder::add_important);
94 propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder); 94 propertyMapper.addMapping<Mail::Folder, BufferBuilder>(&BufferBuilder::add_folder);
95 propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage); 95 propertyMapper.addMapping<Mail::MimeMessage, BufferBuilder>(&BufferBuilder::add_mimeMessage);
96 propertyMapper.addMapping<Mail::FullPayloadAvailable>(&BufferBuilder::add_fullPayloadAvailable); 96 propertyMapper.addMapping<Mail::FullPayloadAvailable, BufferBuilder>(&BufferBuilder::add_fullPayloadAvailable);
97 propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft); 97 propertyMapper.addMapping<Mail::Draft, BufferBuilder>(&BufferBuilder::add_draft);
98 propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash); 98 propertyMapper.addMapping<Mail::Trash, BufferBuilder>(&BufferBuilder::add_trash);
99 propertyMapper.addMapping<Mail::Sent>(&BufferBuilder::add_sent); 99 propertyMapper.addMapping<Mail::Sent, BufferBuilder>(&BufferBuilder::add_sent);
100 propertyMapper.addMapping<Mail::MessageId>(&BufferBuilder::add_messageId); 100 propertyMapper.addMapping<Mail::MessageId, BufferBuilder>(&BufferBuilder::add_messageId);
101 propertyMapper.addMapping<Mail::ParentMessageId>(&BufferBuilder::add_parentMessageId); 101 propertyMapper.addMapping<Mail::ParentMessageId, BufferBuilder>(&BufferBuilder::add_parentMessageId);
102} 102}
103 103
104 104
@@ -117,13 +117,13 @@ void TypeImplementation<Folder>::configure(ReadPropertyMapper &propertyMapper)
117 propertyMapper.addMapping<Folder::Enabled, Buffer>(&Buffer::enabled); 117 propertyMapper.addMapping<Folder::Enabled, Buffer>(&Buffer::enabled);
118} 118}
119 119
120void TypeImplementation<Folder>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) 120void TypeImplementation<Folder>::configure(WritePropertyMapper &propertyMapper)
121{ 121{
122 propertyMapper.addMapping<Folder::Parent>(&BufferBuilder::add_parent); 122 propertyMapper.addMapping<Folder::Parent, BufferBuilder>(&BufferBuilder::add_parent);
123 propertyMapper.addMapping<Folder::Name>(&BufferBuilder::add_name); 123 propertyMapper.addMapping<Folder::Name, BufferBuilder>(&BufferBuilder::add_name);
124 propertyMapper.addMapping<Folder::Icon>(&BufferBuilder::add_icon); 124 propertyMapper.addMapping<Folder::Icon, BufferBuilder>(&BufferBuilder::add_icon);
125 propertyMapper.addMapping<Folder::SpecialPurpose>(&BufferBuilder::add_specialpurpose); 125 propertyMapper.addMapping<Folder::SpecialPurpose, BufferBuilder>(&BufferBuilder::add_specialpurpose);
126 propertyMapper.addMapping<Folder::Enabled>(&BufferBuilder::add_enabled); 126 propertyMapper.addMapping<Folder::Enabled, BufferBuilder>(&BufferBuilder::add_enabled);
127} 127}
128 128
129void TypeImplementation<Folder>::configure(IndexPropertyMapper &) 129void TypeImplementation<Folder>::configure(IndexPropertyMapper &)
@@ -148,15 +148,15 @@ void TypeImplementation<Contact>::configure(ReadPropertyMapper &propertyMapper)
148 propertyMapper.addMapping<Contact::Lastname, Buffer>(&Buffer::lastname); 148 propertyMapper.addMapping<Contact::Lastname, Buffer>(&Buffer::lastname);
149} 149}
150 150
151void TypeImplementation<Contact>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) 151void TypeImplementation<Contact>::configure(WritePropertyMapper &propertyMapper)
152{ 152{
153 propertyMapper.addMapping<Contact::Uid>(&BufferBuilder::add_uid); 153 propertyMapper.addMapping<Contact::Uid, BufferBuilder>(&BufferBuilder::add_uid);
154 propertyMapper.addMapping<Contact::Fn>(&BufferBuilder::add_fn); 154 propertyMapper.addMapping<Contact::Fn, BufferBuilder>(&BufferBuilder::add_fn);
155 propertyMapper.addMapping<Contact::Emails>(&BufferBuilder::add_emails); 155 propertyMapper.addMapping<Contact::Emails, BufferBuilder>(&BufferBuilder::add_emails);
156 propertyMapper.addMapping<Contact::Vcard>(&BufferBuilder::add_vcard); 156 propertyMapper.addMapping<Contact::Vcard, BufferBuilder>(&BufferBuilder::add_vcard);
157 propertyMapper.addMapping<Contact::Addressbook>(&BufferBuilder::add_addressbook); 157 propertyMapper.addMapping<Contact::Addressbook, BufferBuilder>(&BufferBuilder::add_addressbook);
158 propertyMapper.addMapping<Contact::Firstname>(&BufferBuilder::add_firstname); 158 propertyMapper.addMapping<Contact::Firstname, BufferBuilder>(&BufferBuilder::add_firstname);
159 propertyMapper.addMapping<Contact::Lastname>(&BufferBuilder::add_lastname); 159 propertyMapper.addMapping<Contact::Lastname, BufferBuilder>(&BufferBuilder::add_lastname);
160} 160}
161 161
162void TypeImplementation<Contact>::configure(IndexPropertyMapper &) 162void TypeImplementation<Contact>::configure(IndexPropertyMapper &)
@@ -177,10 +177,10 @@ void TypeImplementation<Addressbook>::configure(ReadPropertyMapper &propertyMapp
177 propertyMapper.addMapping<Addressbook::Name, Buffer>(&Buffer::name); 177 propertyMapper.addMapping<Addressbook::Name, Buffer>(&Buffer::name);
178} 178}
179 179
180void TypeImplementation<Addressbook>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) 180void TypeImplementation<Addressbook>::configure(WritePropertyMapper &propertyMapper)
181{ 181{
182 propertyMapper.addMapping<Addressbook::Parent>(&BufferBuilder::add_parent); 182 propertyMapper.addMapping<Addressbook::Parent, BufferBuilder>(&BufferBuilder::add_parent);
183 propertyMapper.addMapping<Addressbook::Name>(&BufferBuilder::add_name); 183 propertyMapper.addMapping<Addressbook::Name, BufferBuilder>(&BufferBuilder::add_name);
184} 184}
185 185
186void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) 186void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &)
@@ -202,12 +202,12 @@ void TypeImplementation<Event>::configure(ReadPropertyMapper &propertyMapper)
202 propertyMapper.addMapping<Event::Attachment, Buffer>(&Buffer::attachment); 202 propertyMapper.addMapping<Event::Attachment, Buffer>(&Buffer::attachment);
203} 203}
204 204
205void TypeImplementation<Event>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) 205void TypeImplementation<Event>::configure(WritePropertyMapper &propertyMapper)
206{ 206{
207 propertyMapper.addMapping<Event::Summary>(&BufferBuilder::add_summary); 207 propertyMapper.addMapping<Event::Summary, BufferBuilder>(&BufferBuilder::add_summary);
208 propertyMapper.addMapping<Event::Description>(&BufferBuilder::add_description); 208 propertyMapper.addMapping<Event::Description, BufferBuilder>(&BufferBuilder::add_description);
209 propertyMapper.addMapping<Event::Uid>(&BufferBuilder::add_uid); 209 propertyMapper.addMapping<Event::Uid, BufferBuilder>(&BufferBuilder::add_uid);
210 propertyMapper.addMapping<Event::Attachment>(&BufferBuilder::add_attachment); 210 propertyMapper.addMapping<Event::Attachment, BufferBuilder>(&BufferBuilder::add_attachment);
211} 211}
212 212
213void TypeImplementation<Event>::configure(IndexPropertyMapper &) 213void TypeImplementation<Event>::configure(IndexPropertyMapper &)
diff --git a/common/domain/typeimplementations.h b/common/domain/typeimplementations.h
index 705b059..8acea58 100644
--- a/common/domain/typeimplementations.h
+++ b/common/domain/typeimplementations.h
@@ -27,7 +27,6 @@
27#include "addressbook_generated.h" 27#include "addressbook_generated.h"
28 28
29class ReadPropertyMapper; 29class ReadPropertyMapper;
30template<typename T>
31class WritePropertyMapper; 30class WritePropertyMapper;
32class IndexPropertyMapper; 31class IndexPropertyMapper;
33 32
@@ -48,7 +47,7 @@ public:
48 typedef Sink::ApplicationDomain::Buffer::MailBuilder BufferBuilder; 47 typedef Sink::ApplicationDomain::Buffer::MailBuilder BufferBuilder;
49 static void configure(TypeIndex &index); 48 static void configure(TypeIndex &index);
50 static void configure(ReadPropertyMapper &propertyMapper); 49 static void configure(ReadPropertyMapper &propertyMapper);
51 static void configure(WritePropertyMapper<BufferBuilder> &propertyMapper); 50 static void configure(WritePropertyMapper &propertyMapper);
52 static void configure(IndexPropertyMapper &indexPropertyMapper); 51 static void configure(IndexPropertyMapper &indexPropertyMapper);
53}; 52};
54 53
@@ -59,7 +58,7 @@ public:
59 typedef Sink::ApplicationDomain::Buffer::FolderBuilder BufferBuilder; 58 typedef Sink::ApplicationDomain::Buffer::FolderBuilder BufferBuilder;
60 static void configure(TypeIndex &); 59 static void configure(TypeIndex &);
61 static void configure(ReadPropertyMapper &); 60 static void configure(ReadPropertyMapper &);
62 static void configure(WritePropertyMapper<BufferBuilder> &); 61 static void configure(WritePropertyMapper &);
63 static void configure(IndexPropertyMapper &indexPropertyMapper); 62 static void configure(IndexPropertyMapper &indexPropertyMapper);
64}; 63};
65 64
@@ -70,7 +69,7 @@ public:
70 typedef Sink::ApplicationDomain::Buffer::ContactBuilder BufferBuilder; 69 typedef Sink::ApplicationDomain::Buffer::ContactBuilder BufferBuilder;
71 static void configure(TypeIndex &); 70 static void configure(TypeIndex &);
72 static void configure(ReadPropertyMapper &); 71 static void configure(ReadPropertyMapper &);
73 static void configure(WritePropertyMapper<BufferBuilder> &); 72 static void configure(WritePropertyMapper &);
74 static void configure(IndexPropertyMapper &indexPropertyMapper); 73 static void configure(IndexPropertyMapper &indexPropertyMapper);
75}; 74};
76 75
@@ -81,7 +80,7 @@ public:
81 typedef Sink::ApplicationDomain::Buffer::AddressbookBuilder BufferBuilder; 80 typedef Sink::ApplicationDomain::Buffer::AddressbookBuilder BufferBuilder;
82 static void configure(TypeIndex &); 81 static void configure(TypeIndex &);
83 static void configure(ReadPropertyMapper &); 82 static void configure(ReadPropertyMapper &);
84 static void configure(WritePropertyMapper<BufferBuilder> &); 83 static void configure(WritePropertyMapper &);
85 static void configure(IndexPropertyMapper &indexPropertyMapper); 84 static void configure(IndexPropertyMapper &indexPropertyMapper);
86}; 85};
87 86
@@ -92,7 +91,7 @@ public:
92 typedef Sink::ApplicationDomain::Buffer::EventBuilder BufferBuilder; 91 typedef Sink::ApplicationDomain::Buffer::EventBuilder BufferBuilder;
93 static void configure(TypeIndex &); 92 static void configure(TypeIndex &);
94 static void configure(ReadPropertyMapper &); 93 static void configure(ReadPropertyMapper &);
95 static void configure(WritePropertyMapper<BufferBuilder> &); 94 static void configure(WritePropertyMapper &);
96 static void configure(IndexPropertyMapper &indexPropertyMapper); 95 static void configure(IndexPropertyMapper &indexPropertyMapper);
97}; 96};
98 97
diff --git a/common/domainadaptor.h b/common/domainadaptor.h
index 9182001..2a7924a 100644
--- a/common/domainadaptor.h
+++ b/common/domainadaptor.h
@@ -40,10 +40,10 @@
40 */ 40 */
41template <class Builder, class Buffer> 41template <class Builder, class Buffer>
42flatbuffers::Offset<Buffer> 42flatbuffers::Offset<Buffer>
43createBufferPart(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, const WritePropertyMapper<Builder> &mapper) 43createBufferPart(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, const WritePropertyMapper &mapper)
44{ 44{
45 // First create a primitives such as strings using the mappings 45 // First create a primitives such as strings using the mappings
46 QList<std::function<void(Builder &)>> propertiesToAddToResource; 46 QList<std::function<void(void *builder)>> propertiesToAddToResource;
47 for (const auto &property : domainObject.changedProperties()) { 47 for (const auto &property : domainObject.changedProperties()) {
48 // SinkTrace() << "copying property " << property; 48 // SinkTrace() << "copying property " << property;
49 const auto value = domainObject.getProperty(property); 49 const auto value = domainObject.getProperty(property);
@@ -57,7 +57,7 @@ createBufferPart(const Sink::ApplicationDomain::ApplicationDomainType &domainObj
57 // Then create all porperties using the above generated builderCalls 57 // Then create all porperties using the above generated builderCalls
58 Builder builder(fbb); 58 Builder builder(fbb);
59 for (auto propertyBuilder : propertiesToAddToResource) { 59 for (auto propertyBuilder : propertiesToAddToResource) {
60 propertyBuilder(builder); 60 propertyBuilder(&builder);
61 } 61 }
62 return builder.Finish(); 62 return builder.Finish();
63} 63}
@@ -68,7 +68,7 @@ createBufferPart(const Sink::ApplicationDomain::ApplicationDomainType &domainObj
68 * After this the buffer can be extracted from the FlatBufferBuilder object. 68 * After this the buffer can be extracted from the FlatBufferBuilder object.
69 */ 69 */
70template <typename Buffer, typename BufferBuilder> 70template <typename Buffer, typename BufferBuilder>
71static void createBufferPartBuffer(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, WritePropertyMapper<BufferBuilder> &mapper) 71static void createBufferPartBuffer(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, WritePropertyMapper &mapper)
72{ 72{
73 auto pos = createBufferPart<BufferBuilder, Buffer>(domainObject, fbb, mapper); 73 auto pos = createBufferPart<BufferBuilder, Buffer>(domainObject, fbb, mapper);
74 // Because we cannot template the following call 74 // Because we cannot template the following call
@@ -178,8 +178,8 @@ public:
178 DomainTypeAdaptorFactory() 178 DomainTypeAdaptorFactory()
179 : mLocalMapper(QSharedPointer<ReadPropertyMapper>::create()), 179 : mLocalMapper(QSharedPointer<ReadPropertyMapper>::create()),
180 mResourceMapper(QSharedPointer<ReadPropertyMapper>::create()), 180 mResourceMapper(QSharedPointer<ReadPropertyMapper>::create()),
181 mLocalWriteMapper(QSharedPointer<WritePropertyMapper<LocalBuilder>>::create()), 181 mLocalWriteMapper(QSharedPointer<WritePropertyMapper>::create()),
182 mResourceWriteMapper(QSharedPointer<WritePropertyMapper<ResourceBuilder>>::create()), 182 mResourceWriteMapper(QSharedPointer<WritePropertyMapper>::create()),
183 mIndexMapper(QSharedPointer<IndexPropertyMapper>::create()) 183 mIndexMapper(QSharedPointer<IndexPropertyMapper>::create())
184 { 184 {
185 Sink::ApplicationDomain::TypeImplementation<DomainType>::configure(*mLocalMapper); 185 Sink::ApplicationDomain::TypeImplementation<DomainType>::configure(*mLocalMapper);
@@ -238,8 +238,8 @@ public:
238protected: 238protected:
239 QSharedPointer<ReadPropertyMapper> mLocalMapper; 239 QSharedPointer<ReadPropertyMapper> mLocalMapper;
240 QSharedPointer<ReadPropertyMapper> mResourceMapper; 240 QSharedPointer<ReadPropertyMapper> mResourceMapper;
241 QSharedPointer<WritePropertyMapper<LocalBuilder>> mLocalWriteMapper; 241 QSharedPointer<WritePropertyMapper> mLocalWriteMapper;
242 QSharedPointer<WritePropertyMapper<ResourceBuilder>> mResourceWriteMapper; 242 QSharedPointer<WritePropertyMapper> mResourceWriteMapper;
243 QSharedPointer<IndexPropertyMapper> mIndexMapper; 243 QSharedPointer<IndexPropertyMapper> mIndexMapper;
244}; 244};
245 245
diff --git a/common/propertymapper.h b/common/propertymapper.h
index bca45aa..fa4592b 100644
--- a/common/propertymapper.h
+++ b/common/propertymapper.h
@@ -104,13 +104,12 @@ private:
104 QHash<QByteArray, std::function<QVariant(void const *)>> mReadAccessors; 104 QHash<QByteArray, std::function<QVariant(void const *)>> mReadAccessors;
105}; 105};
106 106
107template <typename BufferBuilder>
108class WritePropertyMapper 107class WritePropertyMapper
109{ 108{
110public: 109public:
111 virtual ~WritePropertyMapper(){}; 110 virtual ~WritePropertyMapper(){};
112 111
113 virtual void setProperty(const QByteArray &key, const QVariant &value, QList<std::function<void(BufferBuilder &)>> &builderCalls, flatbuffers::FlatBufferBuilder &fbb) const 112 virtual void setProperty(const QByteArray &key, const QVariant &value, QList<std::function<void(void *builder)>> &builderCalls, flatbuffers::FlatBufferBuilder &fbb) const
114 { 113 {
115 if (mWriteAccessors.contains(key)) { 114 if (mWriteAccessors.contains(key)) {
116 auto accessor = mWriteAccessors.value(key); 115 auto accessor = mWriteAccessors.value(key);
@@ -123,36 +122,36 @@ public:
123 return mWriteAccessors.contains(key); 122 return mWriteAccessors.contains(key);
124 } 123 }
125 124
126 void addMapping(const QByteArray &property, const std::function<std::function<void(BufferBuilder &)>(const QVariant &, flatbuffers::FlatBufferBuilder &)> &mapping) 125 void addMapping(const QByteArray &property, const std::function<std::function<void(void *builder)>(const QVariant &, flatbuffers::FlatBufferBuilder &)> &mapping)
127 { 126 {
128 mWriteAccessors.insert(property, mapping); 127 mWriteAccessors.insert(property, mapping);
129 } 128 }
130 129
131 template <typename T> 130 template <typename T, typename BufferBuilder>
132 void addMapping(void (BufferBuilder::*f)(uint8_t)) 131 void addMapping(void (BufferBuilder::*f)(uint8_t))
133 { 132 {
134 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { 133 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(void *builder)> {
135 return [value, f](BufferBuilder &builder) { (builder.*f)(value.value<typename T::Type>()); }; 134 return [value, f](void *builder) { (static_cast<BufferBuilder*>(builder)->*f)(value.value<typename T::Type>()); };
136 }); 135 });
137 } 136 }
138 137
139 template <typename T> 138 template <typename T, typename BufferBuilder>
140 void addMapping(void (BufferBuilder::*f)(bool)) 139 void addMapping(void (BufferBuilder::*f)(bool))
141 { 140 {
142 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { 141 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(void *builder)> {
143 return [value, f](BufferBuilder &builder) { (builder.*f)(value.value<typename T::Type>()); }; 142 return [value, f](void *builder) { (static_cast<BufferBuilder*>(builder)->*f)(value.value<typename T::Type>()); };
144 }); 143 });
145 } 144 }
146 145
147 template <typename T, typename Arg> 146 template <typename T, typename BufferBuilder, typename Arg>
148 void addMapping(void (BufferBuilder::*f)(flatbuffers::Offset<Arg>)) 147 void addMapping(void (BufferBuilder::*f)(flatbuffers::Offset<Arg>))
149 { 148 {
150 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(BufferBuilder &)> { 149 addMapping(T::name, [f](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(void *builder)> {
151 auto offset = variantToProperty<typename T::Type>(value, fbb); 150 auto offset = variantToProperty<typename T::Type>(value, fbb);
152 return [offset, f](BufferBuilder &builder) { (builder.*f)(offset); }; 151 return [offset, f](void *builder) { (static_cast<BufferBuilder*>(builder)->*f)(offset); };
153 }); 152 });
154 } 153 }
155 154
156private: 155private:
157 QHash<QByteArray, std::function<std::function<void(BufferBuilder &)>(const QVariant &, flatbuffers::FlatBufferBuilder &)>> mWriteAccessors; 156 QHash<QByteArray, std::function<std::function<void(void *builder)>(const QVariant &, flatbuffers::FlatBufferBuilder &)>> mWriteAccessors;
158}; 157};
diff --git a/tests/domainadaptortest.cpp b/tests/domainadaptortest.cpp
index a17152e..c5f6e3b 100644
--- a/tests/domainadaptortest.cpp
+++ b/tests/domainadaptortest.cpp
@@ -19,7 +19,7 @@ class TestFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain::Eve
19public: 19public:
20 TestFactory() 20 TestFactory()
21 { 21 {
22 mResourceWriteMapper = QSharedPointer<WritePropertyMapper<Sink::ApplicationDomain::Buffer::EventBuilder>>::create(); 22 mResourceWriteMapper = QSharedPointer<WritePropertyMapper>::create();
23 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Event>::configure(*mResourceWriteMapper); 23 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Event>::configure(*mResourceWriteMapper);
24 } 24 }
25}; 25};
@@ -29,7 +29,7 @@ class TestMailFactory : public DomainTypeAdaptorFactory<Sink::ApplicationDomain:
29public: 29public:
30 TestMailFactory() 30 TestMailFactory()
31 { 31 {
32 mResourceWriteMapper = QSharedPointer<WritePropertyMapper<Sink::ApplicationDomain::Buffer::MailBuilder>>::create(); 32 mResourceWriteMapper = QSharedPointer<WritePropertyMapper>::create();
33 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Mail>::configure(*mResourceWriteMapper); 33 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Mail>::configure(*mResourceWriteMapper);
34 } 34 }
35}; 35};
@@ -51,7 +51,7 @@ private slots:
51 51
52 void testCreateBufferPart() 52 void testCreateBufferPart()
53 { 53 {
54 auto writeMapper = QSharedPointer<WritePropertyMapper<Sink::ApplicationDomain::Buffer::EventBuilder>>::create(); 54 auto writeMapper = QSharedPointer<WritePropertyMapper>::create();
55 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Event>::configure(*writeMapper); 55 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Event>::configure(*writeMapper);
56 56
57 Sink::ApplicationDomain::Event event; 57 Sink::ApplicationDomain::Event event;
@@ -104,7 +104,7 @@ private slots:
104 104
105 void testMail() 105 void testMail()
106 { 106 {
107 auto writeMapper = QSharedPointer<WritePropertyMapper<Sink::ApplicationDomain::Buffer::MailBuilder>>::create(); 107 auto writeMapper = QSharedPointer<WritePropertyMapper>::create();
108 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Mail>::configure(*writeMapper); 108 Sink::ApplicationDomain::TypeImplementation<Sink::ApplicationDomain::Mail>::configure(*writeMapper);
109 109
110 Sink::ApplicationDomain::Mail mail; 110 Sink::ApplicationDomain::Mail mail;