Differences From
Artifact [f642fd73ba]:
78 78 for i = 0, len do
79 79 var v, ok = m.shorthand.cval(s[i])
80 80 if ok == false then return 0, false end
81 81 val = (val * 64) + v
82 82 end
83 83 return val, true
84 84 end
85 +
86 +terra m.truncate64(val: &uint8, len: intptr): uint64
87 + var r: uint64 = 0
88 + for i=0, len do
89 + r = r << 3
90 + r = r + @val
91 + val = val + 1
92 + end
93 + return r
94 +end
95 +
96 +m.biggest = macro(function(a,b)
97 + local ty = a.tree.type
98 + if b.tree.type.bytes > ty.bytes then ty = b.tree.type end
99 + return quote
100 + var _a = [a]
101 + var _b = [b]
102 + var r: ty if _a > _b then r = _a else r = _b end
103 + in r end
104 +end)
105 +
106 +m.smallest = macro(function(a,b)
107 + local ty = a.tree.type
108 + if b.tree.type.bytes < ty.bytes then ty = b.tree.type end
109 + return quote
110 + var _a = [a]
111 + var _b = [b]
112 + var r: ty if _a < _b then r = _a else r = _b end
113 + in r end
114 +end)
85 115
86 116 terra m.hexdigit(hb: uint8): int8
87 117 var a = hb and 0x0F
88 118 if a < 10 then return 0x30 + a
89 119 else return 0x61 + (a-10) end
90 120 end
91 121