#pragma once #include #include #include #include namespace internal { // u: the param of pattern // v: the param of extrude axis struct extrude_side_face_t final : subface { }; } // namespace internal namespace detail { template <> struct hasher { size_t operator()(const internal::extrude_side_face_t& subface) const { return XXH3_64bits(&subface, sizeof(subface)); } }; template <> struct eq_compare { bool operator()(const internal::extrude_side_face_t& lhs, const internal::extrude_side_face_t& rhs) const { return eq_funcs(lhs.local_to_world, rhs.local_to_world) && lhs.additional_structure[0] == rhs.additional_structure[0] && lhs.additional_structure[1] == rhs.additional_structure[1]; } }; } // namespace detail