|
Java example source code file (Util.java)
The Util.java Java example source code
/**
* Copyright (c) Rich Hickey. All rights reserved.
* The use and distribution terms for this software are covered by the
* Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
* which can be found in the file epl-v10.html at the root of this distribution.
* By using this software in any fashion, you are agreeing to be bound by
* the terms of this license.
* You must not remove this notice, or any other, from this software.
**/
/* rich Apr 19, 2008 */
package clojure.lang;
import java.io.IOException;
import java.lang.ref.Reference;
import java.math.BigInteger;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.lang.ref.ReferenceQueue;
public class Util{
static public boolean equiv(Object k1, Object k2){
if(k1 == k2)
return true;
if(k1 != null)
{
if(k1 instanceof Number && k2 instanceof Number)
return Numbers.equal((Number)k1, (Number)k2);
else if(k1 instanceof IPersistentCollection || k2 instanceof IPersistentCollection)
return pcequiv(k1,k2);
return k1.equals(k2);
}
return false;
}
public interface EquivPred{
boolean equiv(Object k1, Object k2);
}
static EquivPred equivNull = new EquivPred() {
public boolean equiv(Object k1, Object k2) {
return k2 == null;
}
};
static EquivPred equivEquals = new EquivPred(){
public boolean equiv(Object k1, Object k2) {
return k1.equals(k2);
}
};
static EquivPred equivNumber = new EquivPred(){
public boolean equiv(Object k1, Object k2) {
if(k2 instanceof Number)
return Numbers.equal((Number) k1, (Number) k2);
return false;
}
};
static EquivPred equivColl = new EquivPred(){
public boolean equiv(Object k1, Object k2) {
if(k1 instanceof IPersistentCollection || k2 instanceof IPersistentCollection)
return pcequiv(k1, k2);
return k1.equals(k2);
}
};
static public EquivPred equivPred(Object k1){
if(k1 == null)
return equivNull;
else if (k1 instanceof Number)
return equivNumber;
else if (k1 instanceof String || k1 instanceof Symbol)
return equivEquals;
else if (k1 instanceof Collection || k1 instanceof Map)
return equivColl;
return equivEquals;
}
static public boolean equiv(long k1, long k2){
return k1 == k2;
}
static public boolean equiv(Object k1, long k2){
return equiv(k1, (Object)k2);
}
static public boolean equiv(long k1, Object k2){
return equiv((Object)k1, k2);
}
static public boolean equiv(double k1, double k2){
return k1 == k2;
}
static public boolean equiv(Object k1, double k2){
return equiv(k1, (Object)k2);
}
static public boolean equiv(double k1, Object k2){
return equiv((Object)k1, k2);
}
static public boolean equiv(boolean k1, boolean k2){
return k1 == k2;
}
static public boolean equiv(Object k1, boolean k2){
return equiv(k1, (Object)k2);
}
static public boolean equiv(boolean k1, Object k2){
return equiv((Object)k1, k2);
}
static public boolean equiv(char c1, char c2) {
return c1 == c2;
}
static public boolean pcequiv(Object k1, Object k2){
if(k1 instanceof IPersistentCollection)
return ((IPersistentCollection)k1).equiv(k2);
return ((IPersistentCollection)k2).equiv(k1);
}
static public boolean equals(Object k1, Object k2){
if(k1 == k2)
return true;
return k1 != null && k1.equals(k2);
}
static public boolean identical(Object k1, Object k2){
return k1 == k2;
}
static public Class classOf(Object x){
if(x != null)
return x.getClass();
return null;
}
static public int compare(Object k1, Object k2){
if(k1 == k2)
return 0;
if(k1 != null)
{
if(k2 == null)
return 1;
if(k1 instanceof Number)
return Numbers.compare((Number) k1, (Number) k2);
return ((Comparable) k1).compareTo(k2);
}
return -1;
}
static public int hash(Object o){
if(o == null)
return 0;
return o.hashCode();
}
public static int hasheq(Object o){
if(o == null)
return 0;
if(o instanceof IHashEq)
return dohasheq((IHashEq) o);
if(o instanceof Number)
return Numbers.hasheq((Number)o);
if(o instanceof String)
return Murmur3.hashInt(o.hashCode());
return o.hashCode();
}
private static int dohasheq(IHashEq o) {
return o.hasheq();
}
static public int hashCombine(int seed, int hash){
//a la boost
seed ^= hash + 0x9e3779b9 + (seed << 6) + (seed >> 2);
return seed;
}
static public boolean isPrimitive(Class c){
return c != null && c.isPrimitive() && !(c == Void.TYPE);
}
static public boolean isInteger(Object x){
return x instanceof Integer
|| x instanceof Long
|| x instanceof BigInt
|| x instanceof BigInteger;
}
static public Object ret1(Object ret, Object nil){
return ret;
}
static public ISeq ret1(ISeq ret, Object nil){
return ret;
}
static public <K,V> void clearCache(ReferenceQueue rq, ConcurrentHashMap
Other Java examples (source code examples)Here is a short list of links related to this Java Util.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.