[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Domain::operator<
From: |
Allan Stokes |
Subject: |
Domain::operator< |
Date: |
Tue, 26 Jun 2001 00:26:46 -0700 |
Hello,
I spent my time today converting my Domain notes into a DocBook document.
At this point the bottom half of the document resembles a code review, the
top half of the document discusses concepts.
While I was checking into equivalence and ordering I came across this
function definition from Domain.h:
template<class T>
bool operator<(const T &d2) const {
CTAssert(Dim == DomainTraits<T>::dimensions);
for (int i = 0; i < Dim; i++)
if (domain_m[i] >= DomainTraits<T>::getDomain(d2, i))
return false;
return true;
}
This is not a complete ordering relation.
3 4 < 3 5 : false
3 5 < 3 4 : false
3 5 == 3 4 : false
I also see that operator!=, operator>, operator<=, operator>= are all
defined individually rather than have just operator== and operator< and
everything else defined in terms of these.
Is this meant to be an ordering relation? Or this is this just a typo? Is
there any situation where it matters how domains are ordered?
I also noted that there is a CTAssert() that both domains have the same Dim.
This creates a separate equivalence class and ordering relation for each N.
Since Domain<N> and Domain<M> are different types where N!=M this could be
the right choice.
However, the way these function signatures are set up we aren't checking
that T is the same type of Domain (Grid, Interval, etc.) as *this. Is there
a reason why having the same dimensions in the types is more important that
having the same domain types?
Allan
- Domain::operator<,
Allan Stokes <=