diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-28 12:19:52 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-28 12:19:52 +0200 |
commit | a4ce2b2eda8a2fea4263017e6868c327f22f5e47 (patch) | |
tree | 448b51e6107c0e377f3a92103bf060d128496c35 | |
parent | 6b8432a5c0647d8fbe3cda549574ae13e07bb2f4 (diff) | |
download | sink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.tar.gz sink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.zip |
Removed the template argument from the write property mapper
-rw-r--r-- | common/domain/typeimplementations.cpp | 80 | ||||
-rw-r--r-- | common/domain/typeimplementations.h | 11 | ||||
-rw-r--r-- | common/domainadaptor.h | 16 | ||||
-rw-r--r-- | common/propertymapper.h | 25 | ||||
-rw-r--r-- | tests/domainadaptortest.cpp | 8 |
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 | ||
84 | void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 84 | void 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 | ||
120 | void TypeImplementation<Folder>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 120 | void 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 | ||
129 | void TypeImplementation<Folder>::configure(IndexPropertyMapper &) | 129 | void 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 | ||
151 | void TypeImplementation<Contact>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 151 | void 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 | ||
162 | void TypeImplementation<Contact>::configure(IndexPropertyMapper &) | 162 | void 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 | ||
180 | void TypeImplementation<Addressbook>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 180 | void 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 | ||
186 | void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) | 186 | void 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 | ||
205 | void TypeImplementation<Event>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 205 | void 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 | ||
213 | void TypeImplementation<Event>::configure(IndexPropertyMapper &) | 213 | void 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 | ||
29 | class ReadPropertyMapper; | 29 | class ReadPropertyMapper; |
30 | template<typename T> | ||
31 | class WritePropertyMapper; | 30 | class WritePropertyMapper; |
32 | class IndexPropertyMapper; | 31 | class 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 | */ |
41 | template <class Builder, class Buffer> | 41 | template <class Builder, class Buffer> |
42 | flatbuffers::Offset<Buffer> | 42 | flatbuffers::Offset<Buffer> |
43 | createBufferPart(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, const WritePropertyMapper<Builder> &mapper) | 43 | createBufferPart(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 | */ |
70 | template <typename Buffer, typename BufferBuilder> | 70 | template <typename Buffer, typename BufferBuilder> |
71 | static void createBufferPartBuffer(const Sink::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, WritePropertyMapper<BufferBuilder> &mapper) | 71 | static 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: | |||
238 | protected: | 238 | protected: |
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 | ||
107 | template <typename BufferBuilder> | ||
108 | class WritePropertyMapper | 107 | class WritePropertyMapper |
109 | { | 108 | { |
110 | public: | 109 | public: |
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 | ||
156 | private: | 155 | private: |
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 | |||
19 | public: | 19 | public: |
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: | |||
29 | public: | 29 | public: |
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; |