|
1 /* |
|
2 * Copyright 2010 Google Inc. |
|
3 * |
|
4 * Use of this source code is governed by a BSD-style license that can be |
|
5 * found in the LICENSE file. |
|
6 */ |
|
7 |
|
8 #ifndef GrKey_DEFINED |
|
9 #define GrKey_DEFINED |
|
10 |
|
11 class GrKey : public SkRefCnt { |
|
12 public: |
|
13 SK_DECLARE_INST_COUNT(GrKey) |
|
14 |
|
15 typedef intptr_t Hash; |
|
16 |
|
17 explicit GrKey(Hash hash) : fHash(hash) {} |
|
18 |
|
19 intptr_t getHash() const { return fHash; } |
|
20 |
|
21 bool operator<(const GrKey& rh) const { |
|
22 return fHash < rh.fHash || (fHash == rh.fHash && this->lt(rh)); |
|
23 } |
|
24 bool operator==(const GrKey& rh) const { |
|
25 return fHash == rh.fHash && this->eq(rh); |
|
26 } |
|
27 |
|
28 protected: |
|
29 virtual bool lt(const GrKey& rh) const = 0; |
|
30 virtual bool eq(const GrKey& rh) const = 0; |
|
31 |
|
32 private: |
|
33 const Hash fHash; |
|
34 |
|
35 typedef SkRefCnt INHERITED; |
|
36 }; |
|
37 |
|
38 #endif |