defprotocol("pixie.stdlib", "INamed", ["-namespace", "-name"]) defprotocol("pixie.stdlib", "IAssociative", ["-assoc", "-contains-key", "-dissoc"]) defprotocol("pixie.stdlib", "ILookup", ["-val-at"]) defprotocol("pixie.stdlib", "IMapEntry", ["-key", "-val"]) defprotocol("pixie.stdlib", "IStack", ["-push", "-pop"]) defprotocol("pixie.stdlib", "IFn", ["-invoke"]) defprotocol("pixie.stdlib", "IDoc", ["-doc"]) IVector = as_var("pixie.stdlib", "IVector")(Protocol(u"IVector")) IMap = as_var("pixie.stdlib", "IMap")(Protocol(u"IMap")) defprotocol("pixie.stdlib", "IMeta", ["-with-meta", "-meta"]) defprotocol("pixie.stdlib", "ITransient", ["-persistent!"]) defprotocol("pixie.stdlib", "IToTransient", ["-transient"]) defprotocol("pixie.stdlib", "ITransientCollection", ["-conj!"]) defprotocol("pixie.stdlib", "ITransientStack", ["-push!", "-pop!"]) defprotocol("pixie.stdlib", "IDisposable", ["-dispose!"]) @as_var("pixie.stdlib.internal", "-defprotocol") def _defprotocol(name, methods):
from rpython.translator.platform import platform import pixie.vm.rt as rt from pixie.vm.string import String from pixie.vm.code import as_var from rpython.rlib.clibffi import get_libc_name import os as_var("pixie.platform", "os")(String(unicode(os.name))) as_var("pixie.platform", "name")(String(unicode(platform.name))) as_var("pixie.platform", "so-ext")(String(unicode(platform.so_ext))) as_var("pixie.platform", "lib-c-name")(String(unicode(get_libc_name())))
_immutable_fields_ = ["_numerator", "_denominator"] def __init__(self, numerator, denominator): self._numerator = numerator self._denominator = denominator def numerator(self): return self._numerator def denominator(self): return self._denominator def type(self): return Ratio._type IMath = as_var("IMath")(Protocol(u"IMath")) _add = as_var("-add")(DoublePolymorphicFn(u"-add", IMath)) _sub = as_var("-sub")(DoublePolymorphicFn(u"-sub", IMath)) _mul = as_var("-mul")(DoublePolymorphicFn(u"-mul", IMath)) _div = as_var("-div")(DoublePolymorphicFn(u"-div", IMath)) _quot = as_var("-quot")(DoublePolymorphicFn(u"-quot", IMath)) _rem = as_var("-rem")(DoublePolymorphicFn(u"-rem", IMath)) _lt = as_var("-lt")(DoublePolymorphicFn(u"-lt", IMath)) _gt = as_var("-gt")(DoublePolymorphicFn(u"-gt", IMath)) _lte = as_var("-lte")(DoublePolymorphicFn(u"-lte", IMath)) _gte = as_var("-gte")(DoublePolymorphicFn(u"-gte", IMath)) _num_eq = as_var("-num-eq")(DoublePolymorphicFn(u"-num-eq", IMath)) _num_eq.set_default_fn(wrap_fn(lambda a, b: false)) as_var("MAX-NUMBER")(Integer(100000)) # TODO: set this to a real max number
def __init__(self, i_val): self._int_val = i_val def int_val(self): return self._int_val def r_uint_val(self): return r_uint(self._int_val) def type(self): return Integer._type zero_int = Integer(0) one_int = Integer(1) IMath = as_var("IMath")(Protocol(u"IMath")) _add = as_var("-add")(DoublePolymorphicFn(u"-add", IMath)) _sub = as_var("-sub")(DoublePolymorphicFn(u"-sub", IMath)) _mul = as_var("-mul")(DoublePolymorphicFn(u"-mul", IMath)) _div = as_var("-div")(DoublePolymorphicFn(u"-div", IMath)) _num_eq = as_var("-num-eq")(DoublePolymorphicFn(u"-num-eq", IMath)) _num_eq.set_default_fn(wrap_fn(lambda a, b: false)) @extend(_add, Integer._type, Integer._type) def _add(a, b): return Integer(a.int_val() + b.int_val()) @extend(_sub, Integer._type, Integer._type) def _sub(a, b):
defprotocol("pixie.stdlib", "INamed", ["-namespace", "-name"]) defprotocol("pixie.stdlib", "IAssociative", ["-assoc", "-contains-key", "-dissoc"]) defprotocol("pixie.stdlib", "ILookup", ["-val-at"]) defprotocol("pixie.stdlib", "IMapEntry", ["-key", "-val"]) defprotocol("pixie.stdlib", "IStack", ["-push", "-pop"]) defprotocol("pixie.stdlib", "IFn", ["-invoke"]) defprotocol("pixie.stdlib", "IDoc", ["-doc"]) IVector = as_var("pixie.stdlib", "IVector")(Protocol(u"IVector")) IMap = as_var("pixie.stdlib", "IMap")(Protocol(u"IMap")) defprotocol("pixie.stdlib", "IMeta", ["-with-meta", "-meta"]) defprotocol("pixie.stdlib", "ITransient", ["-persistent!"]) defprotocol("pixie.stdlib", "IToTransient", ["-transient"]) defprotocol("pixie.stdlib", "ITransientCollection", ["-conj!"]) defprotocol("pixie.stdlib", "ITransientStack", ["-push!", "-pop!"]) defprotocol("pixie.stdlib", "IDisposable", ["-dispose!"]) @as_var("pixie.stdlib.internal", "-defprotocol")
@wrap_fn def ratio_write(obj): assert isinstance(obj, Ratio) return rt.vector(rt.wrap(obj.numerator()), rt.wrap(obj.denominator())) @wrap_fn def ratio_read(obj): return Ratio( rt.nth(obj, rt.wrap(0)).int_val(), rt.nth(obj, rt.wrap(1)).int_val()) add_marshall_handlers(Ratio._type, ratio_write, ratio_read) IMath = as_var("IMath")(Protocol(u"IMath")) _add = as_var("-add")(DoublePolymorphicFn(u"-add", IMath)) _sub = as_var("-sub")(DoublePolymorphicFn(u"-sub", IMath)) _mul = as_var("-mul")(DoublePolymorphicFn(u"-mul", IMath)) _div = as_var("-div")(DoublePolymorphicFn(u"-div", IMath)) _quot = as_var("-quot")(DoublePolymorphicFn(u"-quot", IMath)) _rem = as_var("-rem")(DoublePolymorphicFn(u"-rem", IMath)) _lt = as_var("-lt")(DoublePolymorphicFn(u"-lt", IMath)) _gt = as_var("-gt")(DoublePolymorphicFn(u"-gt", IMath)) _lte = as_var("-lte")(DoublePolymorphicFn(u"-lte", IMath)) _gte = as_var("-gte")(DoublePolymorphicFn(u"-gte", IMath)) _num_eq = as_var("-num-eq")(DoublePolymorphicFn(u"-num-eq", IMath)) _num_eq.set_default_fn(wrap_fn(lambda a, b: false)) IUncheckedMath = as_var("IUncheckedMath")(Protocol(u"IUncheckedMath")) _unchecked_add = as_var("-unchecked-add")(DoublePolymorphicFn(
from rpython.translator.platform import platform from pixie.vm.persistent_list import create_from_list from pixie.vm.string import String from pixie.vm.code import as_var from rpython.rlib.clibffi import get_libc_name import os as_var("pixie.platform", "os")(String(unicode(os.name))) as_var("pixie.platform", "name")(String(unicode(platform.name))) as_var("pixie.platform", "so-ext")(String(unicode(platform.so_ext))) as_var("pixie.platform", "lib-c-name")(String(unicode(get_libc_name()))) c_flags = [] for itm in platform.cflags: c_flags.append(String(unicode(itm))) as_var("pixie.platform", "c-flags")(create_from_list(c_flags)) link_flags = [] for itm in platform.link_flags: c_flags.append(String(unicode(itm))) as_var("pixie.platform", "link-flags")(create_from_list(link_flags))
from rpython.translator.platform import platform import pixie.vm.rt as rt from pixie.vm.string import String from pixie.vm.code import as_var import os as_var("pixie.platform", "os")(String(unicode(os.name))) as_var("pixie.platform", "name")(String(unicode(platform.name))) as_var("pixie.platform", "so-ext")(String(unicode(platform.so_ext)))