From 08393e9e14635f1c6a6c84650c25023a0db7ed0b Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Tue, 13 Oct 2020 14:11:28 +0000 Subject: handle both engine- and factory-based tensors * use EngineOrFactory::get() instead of DefaultTensorEngine::ref() * avoid direct use of DenseTensorView etc where possible * use eval::Value instead of tensor::Tensor where possible --- streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp | 8 ++++---- streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'streamingvisitors/src') diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp index bd567964e8d..d770a4d759b 100644 --- a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp +++ b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -17,11 +18,10 @@ using namespace vespalib; using namespace vdslib; using namespace vsm; using vespalib::nbostream; +using vespalib::eval::EngineOrFactory; using vespalib::eval::Value; using vespalib::eval::DoubleValue; using vespalib::eval::TensorSpec; -using vespalib::tensor::DefaultTensorEngine; - namespace streaming { @@ -253,7 +253,7 @@ public: ~MyRankProgram(); virtual void run(uint32_t docid, const std::vector &) override { _boxed_double = std::make_unique(docid + 30); - _tensor = DefaultTensorEngine::ref().from_spec(TensorSpec("tensor(x{})").add({{"x", "a"}}, docid + 20)); + _tensor = EngineOrFactory::get().from_spec(TensorSpec("tensor(x{})").add({{"x", "a"}}, docid + 20)); _fooValue.as_number = docid + 10; _barValue.as_object = *_boxed_double; _bazValue.as_object = *_tensor; @@ -308,7 +308,7 @@ HitCollectorTest::testFeatureSet() EXPECT_TRUE(!f[2].is_double()); EXPECT_TRUE(f[2].is_data()); { - auto &engine = DefaultTensorEngine::ref(); + auto engine = EngineOrFactory::get(); nbostream buf(f[2].as_data().data, f[2].as_data().size); auto actual = engine.to_spec(*engine.decode(buf)); auto expect = TensorSpec("tensor(x{})").add({{"x", "a"}}, 23); diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp index f3850154505..12dce7d376c 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp @@ -4,8 +4,7 @@ #include #include #include -#include -#include +#include #include #include @@ -163,9 +162,9 @@ HitCollector::getFeatureSet(IRankProgram &rankProgram, for (uint32_t j = 0; j < names.size(); ++j) { if (resolver.is_object(j)) { auto obj = resolver.resolve(j).as_object(docId); - if (const auto *tensor = obj.get().as_tensor()) { + if (! obj.get().is_double()) { vespalib::nbostream buf; - tensor->engine().encode(*tensor, buf); + vespalib::eval::EngineOrFactory::get().encode(obj.get(), buf); f[j].set_data(vespalib::Memory(buf.peek(), buf.size())); } else { f[j].set_double(obj.get().as_double()); -- cgit v1.2.3