aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/bbox.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetLib/src/bbox.cc')
-rw-r--r--Carpet/CarpetLib/src/bbox.cc46
1 files changed, 46 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/bbox.cc b/Carpet/CarpetLib/src/bbox.cc
index d2ea8dd7d..a0041edae 100644
--- a/Carpet/CarpetLib/src/bbox.cc
+++ b/Carpet/CarpetLib/src/bbox.cc
@@ -328,6 +328,44 @@ void bbox<T,D>::output (ostream& os) const {
+// Comparison
+
+namespace std {
+ // ==
+ template<typename T, int D>
+ bool equal_to<bbox<T,D> >::operator()(const bbox<T,D>& x, const bbox<T,D>& y)
+ const
+ {
+ if (x.empty() and y.empty()) return true;
+ if (x.empty() or y.empty()) return false;
+ /*const*/ equal_to<vect<T,D> > vect_equal_to;
+ if (not vect_equal_to(x.stride(), y.stride())) return false;
+ if (not vect_equal_to(x.lower(), y.lower())) return false;
+ if (not vect_equal_to(x.upper(), y.upper())) return false;
+ return true;
+ }
+
+ // <
+ template<typename T, int D>
+ bool less<bbox<T,D> >::operator()(const bbox<T,D>& x, const bbox<T,D>& y)
+ const
+ {
+ // Empty bboxes compare less than any non-empty bbox
+ if (y.empty()) return false;
+ if (x.empty()) return true;
+ /*const*/ less<vect<T,D> > vect_less;
+ if (vect_less(x.stride(), y.stride())) return true;
+ if (vect_less(y.stride(), x.stride())) return false;
+ if (vect_less(x.lower(), y.lower())) return true;
+ if (vect_less(y.lower(), x.lower())) return false;
+ if (vect_less(x.upper(), y.upper())) return true;
+ if (vect_less(y.upper(), x.upper())) return false;
+ return false;
+ }
+}
+
+
+
// Note: We need all dimensions all the time.
template class bbox<int,0>;
template class bbox<int,1>;
@@ -335,3 +373,11 @@ template class bbox<int,2>;
template class bbox<int,3>;
template class bbox<int,4>;
template class bbox<CCTK_REAL,dim>;
+
+namespace std {
+ template struct less<bbox<int,0> >;
+ template struct less<bbox<int,1> >;
+ template struct less<bbox<int,2> >;
+ template struct less<bbox<int,3> >;
+ template struct less<bbox<int,4> >;
+}