def cli2py(space, b_obj): # TODO: support other types and find the most efficient way to # select the correct case if b_obj is None: return space.w_None w_obj = unbox(b_obj, W_Root) if w_obj is not None: return w_obj # it's already a wrapped object! b_type = b_obj.GetType() if b_type == typeof(System.Int32): intval = unbox(b_obj, ootype.Signed) return space.wrap(intval) elif b_type == typeof(System.Double): floatval = unbox(b_obj, ootype.Float) return space.wrap(floatval) elif b_type == typeof(System.Boolean): boolval = unbox(b_obj, ootype.Bool) return space.wrap(boolval) elif b_type == typeof(System.String): strval = unbox(b_obj, ootype.String) return space.wrap(strval) else: namespace, classname = split_fullname(b_type.ToString()) assemblyname = b_type.get_Assembly().get_FullName() w_cls = load_cli_class(space, assemblyname, namespace, classname) cliobj = W_CliObject(space, b_obj) return wrapper_from_cliobj(space, w_cls, cliobj)
def fn(): boxed = box(Foo()) return unbox(boxed, Foo)
def fn(flag): a = ootype.new(A) a.xx = 42 b_obj = box(a) a2 = unbox(b_obj, A) return a2.xx
def fn(x, y): myfunc = unbox(build_fn(), FUNCTYPE) a = myfunc(x, y) mytuple = (x, y) b = myfunc(*mytuple) return a + b
def fn(): x = init_array(System.Object, box(42), box(43)) return unbox(x[0], ootype.Signed) + unbox(x[1], ootype.Signed)
def fn(): b_obj = box(42) return unbox(b_obj, Foo)
def fn(): x = ArrayList() x.Add(box(42)) return unbox(x.get_Item(0), ootype.Signed)
def fn(): x = ArrayList() x.Add(box(42)) array = x.ToArray() return unbox(array[0], ootype.Signed)
def fn(): obj = Foo() b_obj = box(obj) obj2 = unbox(b_obj, Foo) return obj is obj2
def fn(): x = new_array(System.Object, 2) x[0] = box(42) x[1] = box(43) return unbox(x[0], ootype.Signed) + unbox(x[1], ootype.Signed)
def fn(): x = ArrayList() x.Add(box('foo')) return unbox(x.get_Item(0), ootype.String)
def fn(): x = box(42) return unbox(x, Foo)
def fn(flag): b_obj = System.Object() a2 = unbox(b_obj, A) return a2
def fn(): obj = Foo() x = ArrayList() x.Add(box(obj)) obj2 = unbox(x.get_Item(0), Foo) return obj is obj2
def fn(x, y): myfunc = unbox(build_fn(), FUNCTYPE) a = myfunc(x, y) mytuple = (x, y) b = myfunc(*mytuple) return a+b
def fn(): myfunc = unbox(build_fn(), FUNCTYPE) return myfunc(30, 12)
def fn(): x = box(42) return unbox(x, ootype.Signed)