00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00038 #ifndef BLOCXX_STRICT_WEAK_ORDERING_HPP_INCLUDE_GUARD_
00039 #define BLOCXX_STRICT_WEAK_ORDERING_HPP_INCLUDE_GUARD_
00040 #include "blocxx/BLOCXX_config.h"
00041
00042 namespace BLOCXX_NAMESPACE
00043 {
00044
00045 template<class T1>
00046 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1)
00047 {
00048 return lhs1 < rhs1;
00049 }
00050 template<class T1, class T2>
00051 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00052 const T2& lhs2, const T2& rhs2)
00053 {
00054 if (lhs1 < rhs1) return true;
00055 else if (rhs1 < lhs1) return false;
00056 else return StrictWeakOrdering(lhs2, rhs2);
00057 }
00058 template<class T1, class T2, class T3>
00059 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00060 const T2& lhs2, const T2& rhs2,
00061 const T3& lhs3, const T3& rhs3)
00062 {
00063 if (lhs1 < rhs1) return true;
00064 else if (rhs1 < lhs1) return false;
00065 else return StrictWeakOrdering(lhs2, rhs2,
00066 lhs3, rhs3);
00067 }
00068 template<class T1, class T2, class T3, class T4>
00069 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00070 const T2& lhs2, const T2& rhs2,
00071 const T3& lhs3, const T3& rhs3,
00072 const T4& lhs4, const T4& rhs4)
00073 {
00074 if (lhs1 < rhs1) return true;
00075 else if (rhs1 < lhs1) return false;
00076 else return StrictWeakOrdering(lhs2, rhs2,
00077 lhs3, rhs3,
00078 lhs4, rhs4);
00079 }
00080 template<class T1, class T2, class T3, class T4, class T5>
00081 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00082 const T2& lhs2, const T2& rhs2,
00083 const T3& lhs3, const T3& rhs3,
00084 const T4& lhs4, const T4& rhs4,
00085 const T5& lhs5, const T5& rhs5)
00086 {
00087 if (lhs1 < rhs1) return true;
00088 else if (rhs1 < lhs1) return false;
00089 else return StrictWeakOrdering(lhs2, rhs2,
00090 lhs3, rhs3,
00091 lhs4, rhs4,
00092 lhs5, rhs5);
00093 }
00094 template<class T1, class T2, class T3, class T4, class T5, class T6>
00095 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00096 const T2& lhs2, const T2& rhs2,
00097 const T3& lhs3, const T3& rhs3,
00098 const T4& lhs4, const T4& rhs4,
00099 const T5& lhs5, const T5& rhs5,
00100 const T6& lhs6, const T6& rhs6)
00101 {
00102 if (lhs1 < rhs1) return true;
00103 else if (rhs1 < lhs1) return false;
00104 else return StrictWeakOrdering(lhs2, rhs2,
00105 lhs3, rhs3,
00106 lhs4, rhs4,
00107 lhs5, rhs5,
00108 lhs6, rhs6);
00109 }
00110 template<class T1, class T2, class T3, class T4, class T5, class T6, class
00111 T7>
00112 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00113 const T2& lhs2, const T2& rhs2,
00114 const T3& lhs3, const T3& rhs3,
00115 const T4& lhs4, const T4& rhs4,
00116 const T5& lhs5, const T5& rhs5,
00117 const T6& lhs6, const T6& rhs6,
00118 const T7& lhs7, const T7& rhs7)
00119 {
00120 if (lhs1 < rhs1) return true;
00121 else if (rhs1 < lhs1) return false;
00122 else return StrictWeakOrdering(lhs2, rhs2,
00123 lhs3, rhs3,
00124 lhs4, rhs4,
00125 lhs5, rhs5,
00126 lhs6, rhs6,
00127 lhs7, rhs7);
00128 }
00129 template<class T1, class T2, class T3, class T4, class T5, class T6, class
00130 T7, class T8>
00131 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00132 const T2& lhs2, const T2& rhs2,
00133 const T3& lhs3, const T3& rhs3,
00134 const T4& lhs4, const T4& rhs4,
00135 const T5& lhs5, const T5& rhs5,
00136 const T6& lhs6, const T6& rhs6,
00137 const T7& lhs7, const T7& rhs7,
00138 const T8& lhs8, const T8& rhs8)
00139 {
00140 if (lhs1 < rhs1) return true;
00141 else if (rhs1 < lhs1) return false;
00142 else return StrictWeakOrdering(lhs2, rhs2,
00143 lhs3, rhs3,
00144 lhs4, rhs4,
00145 lhs5, rhs5,
00146 lhs6, rhs6,
00147 lhs7, rhs7,
00148 lhs8, rhs8);
00149 }
00150 template<class T1, class T2, class T3, class T4, class T5, class T6, class
00151 T7, class T8, class T9>
00152 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00153 const T2& lhs2, const T2& rhs2,
00154 const T3& lhs3, const T3& rhs3,
00155 const T4& lhs4, const T4& rhs4,
00156 const T5& lhs5, const T5& rhs5,
00157 const T6& lhs6, const T6& rhs6,
00158 const T7& lhs7, const T7& rhs7,
00159 const T8& lhs8, const T8& rhs8,
00160 const T9& lhs9, const T9& rhs9)
00161 {
00162 if (lhs1 < rhs1) return true;
00163 else if (rhs1 < lhs1) return false;
00164 else return StrictWeakOrdering(lhs2, rhs2,
00165 lhs3, rhs3,
00166 lhs4, rhs4,
00167 lhs5, rhs5,
00168 lhs6, rhs6,
00169 lhs7, rhs7,
00170 lhs8, rhs8,
00171 lhs9, rhs9);
00172 }
00173 template<class T1, class T2, class T3, class T4, class T5, class T6, class
00174 T7, class T8, class T9, class T10>
00175 bool StrictWeakOrdering(const T1& lhs1, const T1& rhs1,
00176 const T2& lhs2, const T2& rhs2,
00177 const T3& lhs3, const T3& rhs3,
00178 const T4& lhs4, const T4& rhs4,
00179 const T5& lhs5, const T5& rhs5,
00180 const T6& lhs6, const T6& rhs6,
00181 const T7& lhs7, const T7& rhs7,
00182 const T8& lhs8, const T8& rhs8,
00183 const T9& lhs9, const T9& rhs9,
00184 const T10& lhs10, const T10& rhs10)
00185 {
00186 if (lhs1 < rhs1) return true;
00187 else if (rhs1 < lhs1) return false;
00188 else return StrictWeakOrdering(lhs2, rhs2,
00189 lhs3, rhs3,
00190 lhs4, rhs4,
00191 lhs5, rhs5,
00192 lhs6, rhs6,
00193 lhs7, rhs7,
00194 lhs8, rhs8,
00195 lhs9, rhs9,
00196 lhs10, rhs10);
00197 }
00198
00199 }
00200
00201 #endif