From 49fe46bce2d875ba26b51bc6ee7f771a18d1bec0 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 11 Mar 2024 21:38:10 +0300 Subject: [PATCH] Add util::array serialization --- libs/sir/include/psemek/sir/array.hpp | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 libs/sir/include/psemek/sir/array.hpp diff --git a/libs/sir/include/psemek/sir/array.hpp b/libs/sir/include/psemek/sir/array.hpp new file mode 100644 index 00000000..42c7a797 --- /dev/null +++ b/libs/sir/include/psemek/sir/array.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include +#include +#include + +namespace psemek::sir +{ + + template + requires (is_ostream_v && !is_custom_v>) + void write(Stream & s, util::array const & x) + { + write(s, x.dims()); + if constexpr (is_trivial_v) + { + write_contiguous(s, x.data(), x.size()); + } + else + { + write_sequence(s, x.begin(), x.end()); + } + } + + template + requires (is_istream_v && !is_custom_v>) + void read(Stream & s, util::array & x) + { + std::array dims; + read(s, dims); + x.resize(dims); + if constexpr (is_trivial_v) + { + read_contiguous(s, x.data(), x.size()); + } + else + { + read_sequence(s, x.begin(), x.end()); + } + } + +}