1212// limitations under the License.
1313
1414#include < cstdint>
15- #include < string>
1615#include < vector>
1716
18- #include " ortools/base/commandlineflags.h"
19- #include " ortools/base/logging.h"
17+ #include " absl/flags/declare.h"
18+ #include " absl/flags/flag.h"
19+ #include " absl/hash/hash.h"
20+ #include " absl/log/check.h"
2021#include " ortools/base/stl_util.h"
21- #include " ortools/base/types.h"
2222#include " ortools/constraint_solver/constraint_solver.h"
2323#include " ortools/constraint_solver/constraint_solveri.h"
2424
@@ -55,33 +55,6 @@ bool IsEqual(const std::vector<T*>& a1, const std::vector<T*>& a2) {
5555 return true ;
5656}
5757
58- template <class A1 , class A2 >
59- uint64_t Hash2 (const A1& a1, const A2& a2) {
60- uint64_t a = Hash1 (a1);
61- uint64_t b = uint64_t {0xe08c1d668b756f82 }; // more of the golden ratio
62- uint64_t c = Hash1 (a2);
63- mix (a, b, c);
64- return c;
65- }
66-
67- template <class A1 , class A2 , class A3 >
68- uint64_t Hash3 (const A1& a1, const A2& a2, const A3& a3) {
69- uint64_t a = Hash1 (a1);
70- uint64_t b = Hash1 (a2);
71- uint64_t c = Hash1 (a3);
72- mix (a, b, c);
73- return c;
74- }
75-
76- template <class A1 , class A2 , class A3 , class A4 >
77- uint64_t Hash4 (const A1& a1, const A2& a2, const A3& a3, const A4& a4) {
78- uint64_t a = Hash1 (a1);
79- uint64_t b = Hash1 (a2);
80- uint64_t c = Hash2 (a3, a4);
81- mix (a, b, c);
82- return c;
83- }
84-
8558template <class C >
8659void Double (C*** array_ptr, int * size_ptr) {
8760 DCHECK (array_ptr != nullptr );
@@ -229,7 +202,7 @@ class Cache2 {
229202 }
230203
231204 C* Find (const A1& a1, const A2& a2) const {
232- uint64_t code = Hash2 (a1, a2) % size_;
205+ uint64_t code = absl::HashOf (a1, a2) % size_;
233206 Cell* tmp = array_[code];
234207 while (tmp) {
235208 C* const result = tmp->ReturnsIfEqual (a1, a2);
@@ -242,7 +215,7 @@ class Cache2 {
242215 }
243216
244217 void UnsafeInsert (const A1& a1, const A2& a2, C* const c) {
245- const int position = Hash2 (a1, a2) % size_;
218+ const int position = absl::HashOf (a1, a2) % size_;
246219 Cell* const cell = new Cell (a1, a2, c, array_[position]);
247220 array_[position] = cell;
248221 if (++num_items_ > 2 * size_) {
@@ -263,7 +236,7 @@ class Cache2 {
263236 return nullptr ;
264237 }
265238
266- uint64_t Hash () const { return Hash2 (a1_, a2_); }
239+ uint64_t Hash () const { return absl::HashOf (a1_, a2_); }
267240
268241 void set_next (Cell* const next) { next_ = next; }
269242
@@ -318,7 +291,7 @@ class Cache3 {
318291 }
319292
320293 C* Find (const A1& a1, const A2& a2, const A3& a3) const {
321- uint64_t code = Hash3 (a1, a2, a3) % size_;
294+ uint64_t code = absl::HashOf (a1, a2, a3) % size_;
322295 Cell* tmp = array_[code];
323296 while (tmp) {
324297 C* const result = tmp->ReturnsIfEqual (a1, a2, a3);
@@ -331,7 +304,7 @@ class Cache3 {
331304 }
332305
333306 void UnsafeInsert (const A1& a1, const A2& a2, const A3& a3, C* const c) {
334- const int position = Hash3 (a1, a2, a3) % size_;
307+ const int position = absl::HashOf (a1, a2, a3) % size_;
335308 Cell* const cell = new Cell (a1, a2, a3, c, array_[position]);
336309 array_[position] = cell;
337310 if (++num_items_ > 2 * size_) {
@@ -353,7 +326,7 @@ class Cache3 {
353326 return nullptr ;
354327 }
355328
356- uint64_t Hash () const { return Hash3 (a1_, a2_, a3_); }
329+ uint64_t Hash () const { return absl::HashOf (a1_, a2_, a3_); }
357330
358331 void set_next (Cell* const next) { next_ = next; }
359332
0 commit comments