parsav  Diff

Differences From Artifact [f642fd73ba]:

To Artifact [f661c3d77e]:


    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