Ejemplo n.º 1
0
def supported_funcs(gv, funcs):
    supported = []
    for func in funcs:
        if func.isGenerator or not cpp.hmcpa(func):
            continue
        if func.ident in ['__setattr__', '__getattr__', '__iadd__', '__isub__', '__imul__']: # XXX
            continue
        if isinstance(func.parent, class_):
            if func.invisible or func.inherited or not gv.inhcpa(func):
                continue
        if isinstance(func.parent, class_) and func.ident in func.parent.staticmethods:
            print '*WARNING* method not exported:', func.parent.ident+'.'+func.ident
            continue
        builtins = True
        for formal in func.formals:
            try:
                cpp.typesetreprnew(func.vars[formal], func, check_extmod=True)
                cpp.typesetreprnew(func.retnode.thing, func, check_extmod=True, check_ret=True)
            except cpp.ExtmodError:
                builtins = False
        if builtins:
            supported.append(func)
        else:
            if isinstance(func.parent, class_):
                print '*WARNING* method not exported:', func.parent.ident+'.'+func.ident
            else:
                print '*WARNING* function not exported:', func.ident
    return supported
Ejemplo n.º 2
0
def supported_funcs(gv, funcs):
    supported = []
    for func in funcs:
        if func.isGenerator or not cpp.hmcpa(func):
            continue
        if func.ident in ['__setattr__', '__getattr__', '__iadd__', '__isub__', '__imul__']: # XXX
            continue
        if isinstance(func.parent, class_):
            if func.invisible or func.inherited or not gv.inhcpa(func):
                continue
        if isinstance(func.parent, class_) and func.ident in func.parent.staticmethods:
            print "*WARNING* '%s' method not exported (staticmethod)" % (func.parent.ident+'.'+func.ident)
            continue
        builtins = True
        for formal in func.formals:
            try:
                typestr.nodetypestr(func.vars[formal], func, check_extmod=True)
            except typestr.ExtmodError:
                builtins = False
                reason = "cannot convert argument '%s'" % formal
        try:
            typestr.nodetypestr(func.retnode.thing, func, check_extmod=True, check_ret=True)
        except typestr.ExtmodError:
            builtins = False
            reason = 'cannot convert return value'
        if builtins:
            supported.append(func)
        else:
            if isinstance(func.parent, class_):
                print "*WARNING* '%s' method not exported (%s)" % (func.parent.ident+'.'+func.ident, reason)
            else:
                print "*WARNING* '%s' function not exported (%s)" % (func.ident, reason)
    return supported
Ejemplo n.º 3
0
def supported_funcs(gv, funcs):
    supported = []
    for func in funcs:
        if func.isGenerator or not cpp.hmcpa(func):
            continue
        if func.ident in [
                '__setattr__', '__getattr__', '__iadd__', '__isub__',
                '__imul__'
        ]:  # XXX
            continue
        if isinstance(func.parent, class_):
            if func.invisible or func.inherited or not gv.inhcpa(func):
                continue
        if isinstance(func.parent,
                      class_) and func.ident in func.parent.staticmethods:
            print "*WARNING* '%s' method not exported (staticmethod)" % (
                func.parent.ident + '.' + func.ident)
            continue
        builtins = True
        for formal in func.formals:
            try:
                typestr.nodetypestr(func.vars[formal], func, check_extmod=True)
            except typestr.ExtmodError:
                builtins = False
                reason = "cannot convert argument '%s'" % formal
        try:
            typestr.nodetypestr(func.retnode.thing,
                                func,
                                check_extmod=True,
                                check_ret=True)
        except typestr.ExtmodError:
            builtins = False
            reason = 'cannot convert return value'
        if builtins:
            supported.append(func)
        else:
            if isinstance(func.parent, class_):
                print "*WARNING* '%s' method not exported (%s)" % (
                    func.parent.ident + '.' + func.ident, reason)
            else:
                print "*WARNING* '%s' function not exported (%s)" % (
                    func.ident, reason)
    return supported
Ejemplo n.º 4
0
def hasmethod(cl, name):  # XXX shared.py
    return name in cl.funcs and not cl.funcs[name].invisible and not cl.funcs[
        name].inherited and cpp.hmcpa(cl.funcs[name])
Ejemplo n.º 5
0
def hasmethod(cl, name): # XXX shared.py
    return name in cl.funcs and not cl.funcs[name].invisible and not cl.funcs[name].inherited and cpp.hmcpa(cl.funcs[name])