#include <Comparator.h>
Public Member Functions | |
OverlayKey | distance (const OverlayKey &x, const OverlayKey &y) const |
calculates the difference between x and y on a bidirectional ring |
OverlayKey KeyRingMetric::distance | ( | const OverlayKey & | x, | |
const OverlayKey & | y | |||
) | const [inline] |
calculates the difference between x and y on a bidirectional ring
x | first parameter | |
y | second parameter |
00097 { 00098 const OverlayKey* smaller; 00099 const OverlayKey* bigger; 00100 00101 if (x > y) 00102 { 00103 smaller = &y; 00104 bigger = &x; 00105 } 00106 else 00107 { 00108 smaller = &x; 00109 bigger = &y; 00110 } 00111 00112 OverlayKey diff1(*bigger - *smaller); 00113 OverlayKey diff2(*smaller + (OverlayKey::max() - *bigger) + 1); 00114 00115 if (diff1 > diff2) 00116 return diff2; 00117 else 00118 return diff1; 00119 }