summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2019-09-04 14:24:17 +0000
committerGeir Storli <geirst@verizonmedia.com>2019-09-04 14:24:17 +0000
commit46aa638f210d1d71c907e2ed9a3911c60dc26ea0 (patch)
treecd2f8ed6faec82014e9b780098432051b8ffbe50 /searchlib
parentee33074f9bd713e7bccb65d0c2decfe280b4aa7b (diff)
Change writeValues() to take ConstArrayRef.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.h5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumstore.hpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/i_enum_store.h2
5 files changed, 9 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.cpp b/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.cpp
index 0cd30c2b5cb..d45d6fa8c7c 100644
--- a/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enum_store_dictionary.cpp
@@ -50,14 +50,14 @@ EnumStoreDictionary<DictionaryT>::writeAllValues(BufferWriter& writer,
typename DictionaryT::Iterator it(rootRef, this->_dict.getAllocator());
while (it.valid()) {
if (idxs.size() >= idxs.capacity()) {
- _enumStore.writeValues(writer, &idxs[0], idxs.size());
+ _enumStore.writeValues(writer, vespalib::ConstArrayRef(&idxs[0], idxs.size()));
idxs.clear();
}
idxs.push_back(it.getKey());
++it;
}
if (!idxs.empty()) {
- _enumStore.writeValues(writer, &idxs[0], idxs.size());
+ _enumStore.writeValues(writer, vespalib::ConstArrayRef(&idxs[0], idxs.size()));
}
}
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
index 98631d91ca2..0ef0b9d416b 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.cpp
@@ -12,11 +12,9 @@ namespace search {
template <>
void
EnumStoreT<StringEntryType>::writeValues(BufferWriter& writer,
- const Index* idxs,
- size_t count) const
+ const vespalib::ConstArrayRef<Index>& idxs) const
{
- for (size_t i = 0; i < count; ++i) {
- Index idx = idxs[i];
+ for (const auto& idx : idxs) {
const char* src = _store.get(idx);
size_t sz = strlen(src) + 1;
writer.write(src, sz);
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.h b/searchlib/src/vespa/searchlib/attribute/enumstore.h
index 82b9d4cacac..4404e67b834 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.h
@@ -232,7 +232,7 @@ public:
}
// TODO: Change to sending enum indexes as const array ref.
- void writeValues(BufferWriter &writer, const Index *idxs, size_t count) const override;
+ void writeValues(BufferWriter& writer, const vespalib::ConstArrayRef<Index>& idxs) const override;
bool foldedChange(const Index &idx1, const Index &idx2) const override;
bool findEnum(DataType value, IEnumStore::EnumHandle &e) const;
std::vector<IEnumStore::EnumHandle> findFoldedEnums(DataType value) const;
@@ -256,8 +256,7 @@ class datastore::DataStoreT<IEnumStore::Index>;
template <>
void
EnumStoreT<StringEntryType>::writeValues(BufferWriter& writer,
- const IEnumStore::Index* idxs,
- size_t count) const;
+ const vespalib::ConstArrayRef<IEnumStore::Index>& idxs) const;
template <>
ssize_t
diff --git a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
index 3b63618e7de..ff0f88ff817 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumstore.hpp
@@ -131,10 +131,9 @@ EnumStoreT<EntryType>::NonEnumeratedLoader::~NonEnumeratedLoader() = default;
template <class EntryType>
void
-EnumStoreT<EntryType>::writeValues(BufferWriter& writer, const Index* idxs, size_t count) const
+EnumStoreT<EntryType>::writeValues(BufferWriter& writer, const vespalib::ConstArrayRef<Index>& idxs) const
{
- for (size_t i = 0; i < count; ++i) {
- Index idx = idxs[i];
+ for (const auto& idx : idxs) {
writer.write(&_store.get(idx), sizeof(DataType));
}
}
diff --git a/searchlib/src/vespa/searchlib/attribute/i_enum_store.h b/searchlib/src/vespa/searchlib/attribute/i_enum_store.h
index a01a0393d4d..3e9e1d2a543 100644
--- a/searchlib/src/vespa/searchlib/attribute/i_enum_store.h
+++ b/searchlib/src/vespa/searchlib/attribute/i_enum_store.h
@@ -50,7 +50,7 @@ public:
virtual ~IEnumStore() = default;
- virtual void writeValues(BufferWriter& writer, const Index* idxs, size_t count) const = 0;
+ virtual void writeValues(BufferWriter& writer, const vespalib::ConstArrayRef<Index>& idxs) const = 0;
virtual ssize_t load_unique_values(const void* src, size_t available, IndexVector& idx) = 0;
virtual void fixupRefCount(Index idx, uint32_t refCount) = 0;
virtual void fixupRefCounts(const EnumVector& histogram) = 0;