From 1222848bd48c7aeb7756ecb47a92943311a4283b Mon Sep 17 00:00:00 2001 From: Gabriel Studer <gabriel.studer@unibas.ch> Date: Tue, 21 Feb 2023 11:34:42 +0100 Subject: [PATCH] define __hash__ for ResNum makes it usable as key in a dict --- modules/mol/base/pymod/export_residue.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/mol/base/pymod/export_residue.cc b/modules/mol/base/pymod/export_residue.cc index 9016f9d02..7a0883e7f 100644 --- a/modules/mol/base/pymod/export_residue.cc +++ b/modules/mol/base/pymod/export_residue.cc @@ -71,6 +71,19 @@ namespace { } b->SetChemClass(ChemClass(st[0])); } + + struct H { + std::size_t operator()(const ost::mol::ResNum& n) const { + std::size_t h1 = std::hash<int>{}(n.GetNum()); + std::size_t h2 = std::hash<char>{}(n.GetInsCode()); + return h1 ^ (h2 << 1); + } + }; + + int ResNumHash(const ost::mol::ResNum& n) { + return H{}(n); + } + } void export_Residue() @@ -118,6 +131,7 @@ void export_Residue() .add_property("ins_code", &ResNum::GetInsCode) .def("__str__", &ResNum::AsString) .def("__repr__", &ResNum::AsString) + .def("__hash__", &ResNumHash) .def(self<self) .def(self>self) .def(self>=self) -- GitLab