From b5cea86b468c3b62e0ff1b4e74b4976a10b40088 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 29 May 2023 13:04:43 +0300 Subject: [PATCH] Add cyclic & dihedral group serialization --- libs/group/include/psemek/group/cyclic.hpp | 19 +++++++++++++++++++ libs/group/include/psemek/group/dihedral.hpp | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/libs/group/include/psemek/group/cyclic.hpp b/libs/group/include/psemek/group/cyclic.hpp index 29b2bce8..aad2a145 100644 --- a/libs/group/include/psemek/group/cyclic.hpp +++ b/libs/group/include/psemek/group/cyclic.hpp @@ -33,6 +33,11 @@ namespace psemek::group return cyclic{value % static_cast(N)}; } + static cyclic from_repr(Repr const & value) + { + return rotation(value); + } + template >> static cyclic rotation(T const & value) { @@ -126,4 +131,18 @@ namespace psemek::group return os; } + template + void write(OStream & out, cyclic const & g) + { + write(out, g.value()); + } + + template + void read(IStream & in, cyclic & g) + { + Repr value; + read(in, value); + g = cyclic::from_repr(value); + } + } diff --git a/libs/group/include/psemek/group/dihedral.hpp b/libs/group/include/psemek/group/dihedral.hpp index 95e2e382..a1a5e364 100644 --- a/libs/group/include/psemek/group/dihedral.hpp +++ b/libs/group/include/psemek/group/dihedral.hpp @@ -67,6 +67,11 @@ namespace psemek::group } } + static dihedral from_repr(Repr const & repr) + { + return dihedral{repr % static_cast(2 * N)}; + } + Repr value() const { return repr_; @@ -179,4 +184,18 @@ namespace psemek::group return os; } + template + void write(OStream & out, dihedral const & g) + { + write(out, g.value()); + } + + template + void read(IStream & in, dihedral & g) + { + Repr value; + read(in, value); + g = dihedral::from_repr(value); + } + }