From 9a9557b6431e8d27420603f4895e480d766f6ae2 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 31 May 2015 20:51:09 +0200 Subject: Use type implementation to define default buffer and buffer-builder --- common/domain/event.cpp | 20 ++++++++++---------- common/domain/event.h | 9 ++++++--- common/domainadaptor.h | 16 +++------------- examples/dummyresource/domainadaptor.h | 2 +- tests/domainadaptortest.cpp | 2 +- 5 files changed, 21 insertions(+), 28 deletions(-) diff --git a/common/domain/event.cpp b/common/domain/event.cpp index ea0931c..776fa50 100644 --- a/common/domain/event.cpp +++ b/common/domain/event.cpp @@ -56,28 +56,28 @@ void TypeImplementation::index(const Event &type) } } -QSharedPointer > TypeImplementation::initializeReadPropertyMapper() +QSharedPointer::Buffer> > TypeImplementation::initializeReadPropertyMapper() { - auto propertyMapper = QSharedPointer >::create(); - propertyMapper->addMapping("summary", [](Buffer::Event const *buffer) -> QVariant { + auto propertyMapper = QSharedPointer >::create(); + propertyMapper->addMapping("summary", [](Buffer const *buffer) -> QVariant { return propertyToVariant(buffer->summary()); }); - propertyMapper->addMapping("uid", [](Buffer::Event const *buffer) -> QVariant { + propertyMapper->addMapping("uid", [](Buffer const *buffer) -> QVariant { return propertyToVariant(buffer->uid()); }); return propertyMapper; } -QSharedPointer > TypeImplementation::initializeWritePropertyMapper() +QSharedPointer::BufferBuilder> > TypeImplementation::initializeWritePropertyMapper() { - auto propertyMapper = QSharedPointer >::create(); - propertyMapper->addMapping("summary", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function { + auto propertyMapper = QSharedPointer >::create(); + propertyMapper->addMapping("summary", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function { auto offset = variantToProperty(value, fbb); - return [offset](Buffer::EventBuilder &builder) { builder.add_summary(offset); }; + return [offset](BufferBuilder &builder) { builder.add_summary(offset); }; }); - propertyMapper->addMapping("uid", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function { + propertyMapper->addMapping("uid", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function { auto offset = variantToProperty(value, fbb); - return [offset](Buffer::EventBuilder &builder) { builder.add_uid(offset); }; + return [offset](BufferBuilder &builder) { builder.add_uid(offset); }; }); return propertyMapper; } diff --git a/common/domain/event.h b/common/domain/event.h index d4ce20e..d40e55d 100644 --- a/common/domain/event.h +++ b/common/domain/event.h @@ -41,7 +41,10 @@ namespace ApplicationDomain { * Implements all type-specific code such as updating and querying indexes. */ template<> -struct TypeImplementation { +class TypeImplementation { +public: + typedef Akonadi2::ApplicationDomain::Buffer::Event Buffer; + typedef Akonadi2::ApplicationDomain::Buffer::EventBuilder BufferBuilder; /** * Returns the potential result set based on the indexes. * @@ -49,8 +52,8 @@ struct TypeImplementation { */ static ResultSet queryIndexes(const Akonadi2::Query &query, const QByteArray &resourceInstanceIdentifier); static void index(const Event &type); - static QSharedPointer > initializeReadPropertyMapper(); - static QSharedPointer > initializeWritePropertyMapper(); + static QSharedPointer > initializeReadPropertyMapper(); + static QSharedPointer > initializeWritePropertyMapper(); }; } diff --git a/common/domainadaptor.h b/common/domainadaptor.h index 70c3a42..c9a3a01 100644 --- a/common/domainadaptor.h +++ b/common/domainadaptor.h @@ -25,7 +25,6 @@ #include #include "clientapi.h" //for domain parts -#include "event_generated.h" #include "entity_generated.h" #include "metadata_generated.h" #include "entitybuffer.h" @@ -103,17 +102,6 @@ public: QSharedPointer > mResourceMapper; }; -/** - * Initializes the local property mapper. - * - * Provide an implementation for each application domain type. - */ -template -QSharedPointer > initializeReadPropertyMapper(); - -template -QSharedPointer > initializeWritePropertyMapper(); - template class DomainTypeAdaptorFactoryInterface { @@ -128,9 +116,11 @@ public: * It defines how values are split accross local and resource buffer. * This is required by the facade the read the value, and by the pipeline preprocessors to access the domain values in a generic way. */ -template +template class DomainTypeAdaptorFactory : public DomainTypeAdaptorFactoryInterface { + typedef typename Akonadi2::ApplicationDomain::TypeImplementation::Buffer LocalBuffer; + typedef typename Akonadi2::ApplicationDomain::TypeImplementation::BufferBuilder LocalBuilder; public: DomainTypeAdaptorFactory() : mLocalMapper(Akonadi2::ApplicationDomain::TypeImplementation::initializeReadPropertyMapper()), diff --git a/examples/dummyresource/domainadaptor.h b/examples/dummyresource/domainadaptor.h index 9d351e7..0490387 100644 --- a/examples/dummyresource/domainadaptor.h +++ b/examples/dummyresource/domainadaptor.h @@ -5,7 +5,7 @@ #include "dummycalendar_generated.h" #include "entity_generated.h" -class DummyEventAdaptorFactory : public DomainTypeAdaptorFactory +class DummyEventAdaptorFactory : public DomainTypeAdaptorFactory { public: DummyEventAdaptorFactory(); diff --git a/tests/domainadaptortest.cpp b/tests/domainadaptortest.cpp index 97a78c2..ccf9a3c 100644 --- a/tests/domainadaptortest.cpp +++ b/tests/domainadaptortest.cpp @@ -13,7 +13,7 @@ #include "metadata_generated.h" #include "entity_generated.h" -class TestFactory : public DomainTypeAdaptorFactory +class TestFactory : public DomainTypeAdaptorFactory { public: TestFactory() -- cgit v1.2.3