Repository: marmotta Updated Branches: refs/heads/develop 767ef4a75 -> 4eb074dcb
backport implementation of std::make_unique from C++14 and use it Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/4eb074dc Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/4eb074dc Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/4eb074dc Branch: refs/heads/develop Commit: 4eb074dcb9936259ce111f991760ada8fd741d75 Parents: 767ef4a Author: Sebastian Schaffert <[email protected]> Authored: Sun Dec 20 11:33:32 2015 +0100 Committer: Sebastian Schaffert <[email protected]> Committed: Sun Dec 20 11:33:32 2015 +0100 ---------------------------------------------------------------------- .../backend/persistence/leveldb_persistence.cc | 25 +++++++++----------- .../backend/persistence/leveldb_service.cc | 5 ++-- libraries/ostrich/backend/util/CMakeLists.txt | 2 +- libraries/ostrich/backend/util/iterator.h | 2 +- libraries/ostrich/backend/util/unique.h | 23 ++++++++++++++++++ 5 files changed, 38 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/4eb074dc/libraries/ostrich/backend/persistence/leveldb_persistence.cc ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/persistence/leveldb_persistence.cc b/libraries/ostrich/backend/persistence/leveldb_persistence.cc index 852f152..365397e 100644 --- a/libraries/ostrich/backend/persistence/leveldb_persistence.cc +++ b/libraries/ostrich/backend/persistence/leveldb_persistence.cc @@ -28,6 +28,7 @@ #include "leveldb_persistence.h" #include "model/rdf_operators.h" #include "util/murmur3.h" +#include "util/unique.h" #define CHECK_STATUS(s) CHECK(s.ok()) << "Writing to database failed: " << s.ToString() @@ -387,16 +388,14 @@ std::unique_ptr<LevelDBPersistence::NamespaceIterator> LevelDBPersistence::GetNa leveldb::Status s = db->Get(leveldb::ReadOptions(), key, &value); if (s.ok()) { ns.ParseFromString(value); - return std::unique_ptr<NamespaceIterator>( - new util::SingletonIterator<Namespace>(ns)); + return util::make_unique<util::SingletonIterator<Namespace>>(std::move(ns)); } else { - return std::unique_ptr<NamespaceIterator>( - new util::EmptyIterator<Namespace>()); + return util::make_unique<util::EmptyIterator<Namespace>>(); } } else { // Pattern was empty, iterate over all namespaces and report them. - return std::unique_ptr<NamespaceIterator>( - new LevelDBIterator<Namespace>(db_ns_prefix->NewIterator(leveldb::ReadOptions()))); + return util::make_unique<LevelDBIterator<Namespace>>( + db_ns_prefix->NewIterator(leveldb::ReadOptions())); } } @@ -481,16 +480,14 @@ std::unique_ptr<LevelDBPersistence::StatementIterator> LevelDBPersistence::GetSt if (query.NeedsFilter()) { DLOG(INFO) << "Retrieving statements with filter."; - return std::unique_ptr<StatementIterator>( - new util::FilteringIterator<Statement>( - new StatementRangeIterator( - db->NewIterator(leveldb::ReadOptions()), query.MinKey(), query.MaxKey()), - [&pattern](const Statement& stmt) -> bool { return Matches(pattern, stmt); })); + return util::make_unique<util::FilteringIterator<Statement>>( + new StatementRangeIterator( + db->NewIterator(leveldb::ReadOptions()), query.MinKey(), query.MaxKey()), + [&pattern](const Statement& stmt) -> bool { return Matches(pattern, stmt); }); } else { DLOG(INFO) << "Retrieving statements without filter."; - return std::unique_ptr<StatementIterator>( - new StatementRangeIterator( - db->NewIterator(leveldb::ReadOptions()), query.MinKey(), query.MaxKey())); + return util::make_unique<StatementRangeIterator>( + db->NewIterator(leveldb::ReadOptions()), query.MinKey(), query.MaxKey()); } } http://git-wip-us.apache.org/repos/asf/marmotta/blob/4eb074dc/libraries/ostrich/backend/persistence/leveldb_service.cc ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/persistence/leveldb_service.cc b/libraries/ostrich/backend/persistence/leveldb_service.cc index 9ab9fd8..c11b002 100644 --- a/libraries/ostrich/backend/persistence/leveldb_service.cc +++ b/libraries/ostrich/backend/persistence/leveldb_service.cc @@ -21,6 +21,7 @@ #include <unordered_set> #include <model/rdf_operators.h> #include <util/iterator.h> +#include <util/unique.h> using grpc::Status; using grpc::StatusCode; @@ -230,9 +231,7 @@ grpc::Status LevelDBSparqlService::TupleQuery( grpc::ServerContext* context, const spq::SparqlRequest* query, grpc::ServerWriter<spq::SparqlResponse>* result) { - SparqlService svc( - std::unique_ptr<TripleSource>( - new LevelDBTripleSource(persistence))); + SparqlService svc(util::make_unique<LevelDBTripleSource>(persistence)); svc.TupleQuery(query->query(), [&result](const SparqlService::RowType& row) { spq::SparqlResponse response; http://git-wip-us.apache.org/repos/asf/marmotta/blob/4eb074dc/libraries/ostrich/backend/util/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/util/CMakeLists.txt b/libraries/ostrich/backend/util/CMakeLists.txt index f573c3c..ac87cd8 100644 --- a/libraries/ostrich/backend/util/CMakeLists.txt +++ b/libraries/ostrich/backend/util/CMakeLists.txt @@ -1,3 +1,3 @@ include_directories(.. ${CMAKE_CURRENT_BINARY_DIR}/..) -add_library(marmotta_util murmur3.cc murmur3.h split.cc split.h iterator.h) \ No newline at end of file +add_library(marmotta_util murmur3.cc murmur3.h split.cc split.h iterator.h unique.h) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/marmotta/blob/4eb074dc/libraries/ostrich/backend/util/iterator.h ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/util/iterator.h b/libraries/ostrich/backend/util/iterator.h index fd29cc4..0f08531 100644 --- a/libraries/ostrich/backend/util/iterator.h +++ b/libraries/ostrich/backend/util/iterator.h @@ -88,7 +88,7 @@ class EmptyIterator : public CloseableIterator<T> { template<typename T> class SingletonIterator : public CloseableIterator<T> { public: - SingletonIterator(T& value) : value(value), incremented(false) { } + SingletonIterator(T&& value) : value(value), incremented(false) { } const T &next() override { if (!incremented) { http://git-wip-us.apache.org/repos/asf/marmotta/blob/4eb074dc/libraries/ostrich/backend/util/unique.h ---------------------------------------------------------------------- diff --git a/libraries/ostrich/backend/util/unique.h b/libraries/ostrich/backend/util/unique.h new file mode 100644 index 0000000..d212af2 --- /dev/null +++ b/libraries/ostrich/backend/util/unique.h @@ -0,0 +1,23 @@ +// +// Created by wastl on 20.12.15. +// + +#include <memory> + +#ifndef MARMOTTA_UNIQUE_H +#define MARMOTTA_UNIQUE_H +namespace marmotta { +namespace util { + +/** + * Backport of C++14 make_unique implementation. + */ +template<typename T, typename ...Args> +std::unique_ptr<T> make_unique( Args&& ...args ) +{ + return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) ); +} + +} // namespace util +} // namespace marmotta +#endif //MARMOTTA_UNIQUE_H
