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 /common/propertymapper.h | |
parent | 6b8432a5c0647d8fbe3cda549574ae13e07bb2f4 (diff) | |
download | sink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.tar.gz sink-a4ce2b2eda8a2fea4263017e6868c327f22f5e47.zip |
Removed the template argument from the write property mapper
Diffstat (limited to 'common/propertymapper.h')
-rw-r--r-- | common/propertymapper.h | 25 |
1 files changed, 12 insertions, 13 deletions
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 | }; |