MCPcopy Index your code
hub / github.com/clojure/clojure / Util

Class Util

src/jvm/clojure/lang/Util.java:23–281  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21import java.lang.ref.ReferenceQueue;
22
23public class Util{
24static public boolean equiv(Object k1, Object k2){
25 if(k1 == k2)
26 return true;
27 if(k1 != null)
28 {
29 if(k1 instanceof Number && k2 instanceof Number)
30 return Numbers.equal((Number)k1, (Number)k2);
31 else if(k1 instanceof IPersistentCollection || k2 instanceof IPersistentCollection)
32 return pcequiv(k1,k2);
33 return k1.equals(k2);
34 }
35 return false;
36}
37
38public interface EquivPred{
39 boolean equiv(Object k1, Object k2);
40}
41
42static EquivPred equivNull = new EquivPred() {
43 public boolean equiv(Object k1, Object k2) {
44 return k2 == null;
45 }
46 };
47
48static EquivPred equivEquals = new EquivPred(){
49 public boolean equiv(Object k1, Object k2) {
50 return k1.equals(k2);
51 }
52 };
53
54static EquivPred equivNumber = new EquivPred(){
55 public boolean equiv(Object k1, Object k2) {
56 if(k2 instanceof Number)
57 return Numbers.equal((Number) k1, (Number) k2);
58 return false;
59 }
60 };
61
62static EquivPred equivColl = new EquivPred(){
63 public boolean equiv(Object k1, Object k2) {
64 if(k1 instanceof IPersistentCollection || k2 instanceof IPersistentCollection)
65 return pcequiv(k1, k2);
66 return k1.equals(k2);
67 }
68 };
69
70static public EquivPred equivPred(Object k1){
71 if(k1 == null)
72 return equivNull;
73 else if (k1 instanceof Number)
74 return equivNumber;
75 else if (k1 instanceof String || k1 instanceof Symbol)
76 return equivEquals;
77 else if (k1 instanceof Collection || k1 instanceof Map)
78 return equivColl;
79 return equivEquals;
80}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected