parsav  Diff

Differences From Artifact [fe958b6645]:

To 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.hexdigit(hb: uint8): int8
           87  +	var a = hb and 0x0F
           88  +	if a < 10 then return 0x30 + a
           89  +	else return 0x61 + (a-10) end
           90  +end
           91  +
           92  +terra m.hexbyte(b: uint8): int8[2]
           93  +	return array(m.hexdigit((b and 0xF0) >> 4), m.hexdigit(b and 0x0F))
           94  +end
           95  +
           96  +terra m.hexstr(src: &uint8, str: rawstring, sz: intptr)
           97  +	for i = 0, sz do
           98  +		var d = m.hexbyte(src[i])
           99  +		str[i*2] = d[0]
          100  +		str[i*2 + 1] = d[1]
          101  +	end
          102  +end
          103  +
          104  +terra m.b32char(v: uint8): int8
          105  +	if v <= 25 then return 0x61 + v
          106  +	elseif v < 31 then return 0x32 + (v-26)
          107  +	else return 0 end
          108  +end
          109  +
          110  +terra m.b32(v: uint64, buf: rawstring) -- 5 bytes -> 8 chars
          111  +	while v > 0 do
          112  +		var val = v % 32
          113  +		v = v / 32
          114  +		@buf = m.b32char(val)
          115  +		buf = buf + 1
          116  +	end
          117  +end
          118  +
          119  +terra m.b32str(a: lib.mem.ptr(uint64))
          120  +	
          121  +end
    85    122   
    86    123   return m