diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-09-24 14:14:49 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-09-24 14:14:49 +0000 |
commit | f6e339cce76c190b9007b608f1f139e60a88ff59 (patch) | |
tree | 1f30579881774e14c44566c384af9dc0c640970c /eval | |
parent | fee153c0d1dc84b9fdbb4d926bc35a7dd6e11a05 (diff) |
make a PackedMixedTensorBuilderFactory singleton also
Diffstat (limited to 'eval')
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 |