From 82befbe8c04bfea16331f916d7d736df6fe304bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chojnowski?= Date: Fri, 27 Nov 2020 12:31:52 +0100 Subject: [PATCH] types: template abstract_type::validate on FragmentedView This is primarily a stylistic change. It makes the interface more consistent with deserialize(). It will also allow us to call `validate()` for collection elements in `validate_aux()`. --- types.cc | 8 ++++++-- types.hh | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/types.cc b/types.cc index 9909cc006d..aef7802d4c 100644 --- a/types.cc +++ b/types.cc @@ -1586,9 +1586,13 @@ struct validate_visitor { }; } -void abstract_type::validate(const fragmented_temporary_buffer::view& view, cql_serialization_format sf) const { - visit(*this, validate_visitor{view, sf}); +template +void abstract_type::validate(const View& view, cql_serialization_format sf) const { + visit(*this, validate_visitor{view, sf}); } +// Explicit instantiation. +template void abstract_type::validate<>(const single_fragmented_view&, cql_serialization_format) const; +template void abstract_type::validate<>(const fragmented_temporary_buffer::view&, cql_serialization_format) const; void abstract_type::validate(bytes_view v, cql_serialization_format sf) const { visit(*this, validate_visitor{single_fragmented_view(v), sf}); diff --git a/types.hh b/types.hh index 5bb19c8243..b1b4822c6f 100644 --- a/types.hh +++ b/types.hh @@ -525,7 +525,8 @@ public: data_value deserialize_value(bytes_view v) const { return deserialize_impl(single_fragmented_view(v)); }; - void validate(const fragmented_temporary_buffer::view& view, cql_serialization_format sf) const; + // Explicitly instantiated in .cc + template void validate(const View& v, cql_serialization_format sf) const; void validate(bytes_view view, cql_serialization_format sf) const; bool is_compatible_with(const abstract_type& previous) const; /*