summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2020-09-24 14:14:49 +0000
committerArne Juul <arnej@verizonmedia.com>2020-09-24 14:14:49 +0000
commitf6e339cce76c190b9007b608f1f139e60a88ff59 (patch)
tree1f30579881774e14c44566c384af9dc0c640970c /eval
parentfee153c0d1dc84b9fdbb4d926bc35a7dd6e11a05 (diff)
make a PackedMixedTensorBuilderFactory singleton also
Diffstat (limited to 'eval')
-rw-r--r--eval/src/tests/tensor/packed_mappings/packed_mixed_test.cpp4
-rw-r--r--eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.cpp3
-rw-r--r--eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.h5
3 files changed, 10 insertions, 2 deletions
diff --git a/eval/src/tests/tensor/packed_mappings/packed_mixed_test.cpp b/eval/src/tests/tensor/packed_mappings/packed_mixed_test.cpp
index 8ebed853df6..bc1efdaba1d 100644
--- a/eval/src/tests/tensor/packed_mappings/packed_mixed_test.cpp
+++ b/eval/src/tests/tensor/packed_mappings/packed_mixed_test.cpp
@@ -27,7 +27,7 @@ std::vector<Layout> layouts = {
TEST(PackedMixedTest, packed_mixed_tensors_can_be_converted_from_and_to_tensor_spec) {
for (const auto &layout: layouts) {
TensorSpec expect = spec(layout, N());
- std::unique_ptr<Value> value = value_from_spec(expect, PackedMixedTensorBuilderFactory());
+ std::unique_ptr<Value> value = value_from_spec(expect, PackedMixedTensorBuilderFactory::get());
TensorSpec actual = spec_from_value(*value);
EXPECT_EQ(actual, expect);
}
@@ -35,7 +35,7 @@ TEST(PackedMixedTest, packed_mixed_tensors_can_be_converted_from_and_to_tensor_s
TEST(PackedMixedTest, packed_mixed_tensors_can_be_built_and_inspected) {
ValueType type = ValueType::from_spec("tensor<float>(x{},y[2],z{})");
- PackedMixedTensorBuilderFactory factory;
+ const auto & factory = PackedMixedTensorBuilderFactory::get();
std::unique_ptr<ValueBuilder<float>> builder = factory.create_value_builder<float>(type);
float seq = 0.0;
for (vespalib::string x: {"a", "b", "c"}) {
diff --git a/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.cpp b/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.cpp
index 132eca9dc8c..48eedd86f7f 100644
--- a/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.cpp
+++ b/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.cpp
@@ -20,6 +20,9 @@ struct CreatePackedMixedTensorBuilder {
} // namespace <unnamed>
+PackedMixedTensorBuilderFactory::PackedMixedTensorBuilderFactory() = default;
+PackedMixedTensorBuilderFactory PackedMixedTensorBuilderFactory::_factory;
+
std::unique_ptr<ValueBuilderBase>
PackedMixedTensorBuilderFactory::create_value_builder_base(const ValueType &type,
size_t num_mapped_in,
diff --git a/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.h b/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.h
index b7f107d39b4..20a581e2b35 100644
--- a/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.h
+++ b/eval/src/vespa/eval/tensor/mixed/packed_mixed_tensor_builder_factory.h
@@ -11,10 +11,15 @@ namespace vespalib::eval {
* objects appropriate for the requested CellType.
*/
struct PackedMixedTensorBuilderFactory : ValueBuilderFactory {
+private:
+ PackedMixedTensorBuilderFactory();
+ static PackedMixedTensorBuilderFactory _factory;
~PackedMixedTensorBuilderFactory() override {}
protected:
std::unique_ptr<ValueBuilderBase> create_value_builder_base(const ValueType &type,
size_t num_mapped_in, size_t subspace_size_in, size_t expect_subspaces) const override;
+public:
+ static const PackedMixedTensorBuilderFactory &get() { return _factory; }
};
} // namespace