// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "enumerated_multi_value_read_view.h" using vespalib::datastore::AtomicEntryRef; namespace search::attribute { template EnumeratedMultiValueReadView::EnumeratedMultiValueReadView(MultiValueMappingReadView mv_mapping_read_view, const EnumStoreT& enum_store) : _mv_mapping_read_view(mv_mapping_read_view), _enum_store(enum_store), _copy() { } template EnumeratedMultiValueReadView::~EnumeratedMultiValueReadView() = default; template vespalib::ConstArrayRef EnumeratedMultiValueReadView::get_values(uint32_t docid) const { auto raw = _mv_mapping_read_view.get(docid); if (_copy.size() < raw.size()) [[unlikely]] { _copy.resize(raw.size()); } auto dst = _copy.data(); for (auto &src : raw) { EnumEntryType v = _enum_store.get_value(multivalue::get_value_ref(src).load_acquire()); *dst = multivalue::ValueBuilder::build(v, multivalue::get_weight(src)); ++dst; } return vespalib::ConstArrayRef(_copy.data(), raw.size()); } using multivalue::WeightedValue; using WeightedAtomicEntryRef = WeightedValue; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, WeightedAtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; template class EnumeratedMultiValueReadView, AtomicEntryRef>; }