def int_better_applicable(val, cand_cl, cl, parm_ar, j): """ >>> import Dbg >>> import jarray >>> a=jarray.zeros(1,lang.Object) >>> int_better_applicable(1,lang.Integer.TYPE,core.PyObject,a,0) 1 >>> Dbg.types(a) == jarray.array([lang.Integer],lang.Class) 1 >>> int_better_applicable(1,lang.Boolean.TYPE,lang.Integer,a,0) 1 >>> Dbg.types(a) == jarray.array([lang.Boolean],lang.Class) 1 >>> int_better_applicable(1,lang.Number,core.PyInteger,a,0) 1 >>> Dbg.types(a) == jarray.array([lang.Integer],lang.Class) 1 >>> int_better_applicable(1,core.PyInteger,lang.Number,a,0) -1 >>> int_better_applicable(1,core.PyInteger,io.Serializable,a,0) 1 >>> Dbg.types(a) == jarray.array([core.PyInteger],lang.Class) 1 >>> int_better_applicable(1,lang.Object,None,a,0) 1 >>> Dbg.types(a) == jarray.array([lang.Integer],lang.Class) 1 """ if cl is cand_cl: return 0 # no conversion # primitive types if cl is lang.Long.TYPE: return -1 if cand_cl is lang.Long.TYPE: if parm_ar: parm_ar[j] = lang.Long(val) return 1 if cl is lang.Integer.TYPE: return -1 if cand_cl is lang.Integer.TYPE: if parm_ar: parm_ar[j] = lang.Integer(val) return 1 if cl is lang.Short.TYPE: return -1 if cand_cl is lang.Short.TYPE: if parm_ar: parm_ar[j] = lang.Short(val) return 1 if cl is lang.Byte.TYPE: return -1 if cand_cl is lang.Byte.TYPE: if parm_ar: parm_ar[j] = lang.Byte(val) return 1 if cl is lang.Double.TYPE: return -1 if cand_cl is lang.Double.TYPE: if parm_ar: parm_ar[j] = lang.Double(val) return 1 if cl is lang.Float.TYPE: return -1 if cand_cl is lang.Float.TYPE: if parm_ar: parm_ar[j] = lang.Float(val) return 1 if cl is lang.Boolean.TYPE: return -1 if cand_cl is lang.Boolean.TYPE: if parm_ar: parm_ar[j] = lang.Boolean(val) return 1 # wrappers if cl is lang.Long: return -1 if cand_cl is lang.Long: if parm_ar: parm_ar[j] = lang.Long(val) return 1 if cl is lang.Integer: return -1 if cand_cl is lang.Integer: if parm_ar: parm_ar[j] = lang.Integer(val) return 1 if cl is lang.Short: return -1 if cand_cl is lang.Short: if parm_ar: parm_ar[j] = lang.Short(val) return 1 if cl is lang.Byte: return -1 if cand_cl is lang.Byte: if parm_ar: parm_ar[j] = lang.Byte(val) return 1 if cl is lang.Double: return -1 if cand_cl is lang.Double: if parm_ar: parm_ar[j] = lang.Double(val) return 1 if cl is lang.Float: return -1 if cand_cl is lang.Float: if parm_ar: parm_ar[j] = lang.Float(val) return 1 if cl is lang.Boolean: return -1 if cand_cl is lang.Boolean: if parm_ar: parm_ar[j] = lang.Boolean(val) return 1 if cl is lang.Number: return -1 if cand_cl is lang.Number: if parm_ar: parm_ar[j] = val return 1 if cl and is_ass_from(cand_cl, cl): return -1 if is_ass_from(core.PyObject, cand_cl): if parm_ar: noconv_(val, parm_ar, j) return 1 if cand_cl is lang.Object: if parm_ar: parm_ar[j] = val return 1 if cand_cl is io.Serializable: if parm_ar: parm_ar[j] = val return 1 return -1
def adler32(string, value=1): if value != 1: raise ValueError, "adler32 only support start value of 1" checksum = util.zip.Adler32() checksum.update(lang.String.getBytes(string)) return lang.Long(checksum.getValue()).intValue()