// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "copy_multi_value_read_view.h" using vespalib::datastore::AtomicEntryRef; namespace search::attribute { template CopyMultiValueReadView::CopyMultiValueReadView(MultiValueMappingReadView mv_mapping_read_view) : _mv_mapping_read_view(mv_mapping_read_view), _copy() { } template CopyMultiValueReadView::~CopyMultiValueReadView() = default; template vespalib::ConstArrayRef CopyMultiValueReadView::get_values(uint32_t docid) const { auto raw = _mv_mapping_read_view.get(docid); if (_copy.size() < raw.size()) { _copy.resize(raw.size()); } auto dst = _copy.data(); for (auto &src : raw) { ValueType v = multivalue::get_value_ref(src); *dst = multivalue::ValueBuilder::build(v, multivalue::get_weight(src)); ++dst; } return vespalib::ConstArrayRef(_copy.data(), raw.size()); } using multivalue::WeightedValue; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView>; template class CopyMultiValueReadView, int8_t>; template class CopyMultiValueReadView, int16_t>; template class CopyMultiValueReadView, int32_t>; template class CopyMultiValueReadView, int64_t>; template class CopyMultiValueReadView, float>; template class CopyMultiValueReadView, double>; template class CopyMultiValueReadView, AtomicEntryRef>; }