1 package com
.intellij
.slicer
;
3 import gnu
.trove
.THashMap
;
4 import gnu
.trove
.TObjectHashingStrategy
;
10 */ // rehash map on each PSI modification since SmartPsiPointer's hashCode() and equals() are changed
12 private final Map
<SliceUsage
, SliceNode
> myDuplicates
= new THashMap
<SliceUsage
, SliceNode
>(USAGEINFO_EQUALITY
);
13 private static final TObjectHashingStrategy
<SliceUsage
> USAGEINFO_EQUALITY
= new TObjectHashingStrategy
<SliceUsage
>() {
14 public int computeHashCode(SliceUsage object
) {
15 return object
.getUsageInfo().hashCode();
18 public boolean equals(SliceUsage o1
, SliceUsage o2
) {
19 return o1
.getUsageInfo().equals(o2
.getUsageInfo());
22 private static final TObjectHashingStrategy
<SliceNode
> SLICE_NODE_EQUALITY
= new TObjectHashingStrategy
<SliceNode
>() {
23 public int computeHashCode(SliceNode object
) {
24 return object
.getValue().getUsageInfo().hashCode();
27 public boolean equals(SliceNode o1
, SliceNode o2
) {
28 return o1
.getValue().getUsageInfo().equals(o2
.getValue().getUsageInfo());
32 public SliceNode
putNodeCheckDupe(SliceNode node
) {
33 SliceUsage usage
= node
.getValue();
34 SliceNode eq
= myDuplicates
.get(usage
);
36 myDuplicates
.put(usage
, node
);