예제 #1
0
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
예제 #2
0
파일: zlib.py 프로젝트: gpaulbr/ERelp
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()