diff --git a/absl-flat_hash_map.cc b/absl-flat_hash_map.cc new file mode 100644 index 0000000000..fd7944b6e4 --- /dev/null +++ b/absl-flat_hash_map.cc @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2020 ScyllaDB + */ + +/* + * This file is part of Scylla. + * + * Scylla is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Scylla is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Scylla. If not, see . + */ + +#include "absl-flat_hash_map.hh" + +size_t sstring_hash::operator()(std::string_view v) const noexcept { + return absl::Hash{}(v); +} diff --git a/absl-flat_hash_map.hh b/absl-flat_hash_map.hh new file mode 100644 index 0000000000..82a0aeb6bc --- /dev/null +++ b/absl-flat_hash_map.hh @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2020 ScyllaDB + */ + +/* + * This file is part of Scylla. + * + * Scylla is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Scylla is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Scylla. If not, see . + */ + +#pragma once + +#include +#include + +using namespace seastar; + +struct sstring_hash { + using is_transparent = void; + size_t operator()(std::string_view v) const noexcept; +}; + +struct sstring_eq { + using is_transparent = void; + bool operator()(std::string_view a, std::string_view b) const noexcept { + return a == b; + } +}; + +template +struct flat_hash_map : public absl::flat_hash_map { +}; + +template +struct flat_hash_map + : public absl::flat_hash_map {}; diff --git a/configure.py b/configure.py index afb585e2ff..5eebfb53bc 100755 --- a/configure.py +++ b/configure.py @@ -492,6 +492,7 @@ extra_cxxflags = {} cassandra_interface = Thrift(source='interface/cassandra.thrift', service='Cassandra') scylla_core = (['database.cc', + 'absl-flat_hash_map.cc', 'table.cc', 'atomic_cell.cc', 'collection_mutation.cc',