parsav  Diff

Differences From Artifact [60110bc615]:

To Artifact [12858be43d]:


     1      1   -- vim: ft=terra
     2      2   local m = {
     3         -	shorthand = {maxlen = 14}
            3  +	shorthand = {maxlen = 14};
            4  +	ll = {
            5  +		ctpop_u8 = terralib.intrinsic('llvm.ctpop.i8', uint8 -> uint8);
            6  +	};
     4      7   }
     5      8   
     6      9   local pstring = lib.mem.ptr(int8)
     7     10   
     8     11   -- swap in place -- faster on little endian
     9     12   m.netswap_ip = macro(function(ty, src, dest)
    10     13   	if ty:astype().type ~= 'integer' then error('bad type') end
................................................................................
    52     55   	elseif ch == 0x3a then ch = 37
    53     56   	elseif ch >= 0x61 and ch <= 0x7a then
    54     57   		ch = 38 + (ch - 0x61)
    55     58   	else return 0, false end
    56     59   
    57     60   	return ch, true 
    58     61   end
           62  +
           63  +terra m.pow(n: intptr, fac: intptr): intptr
           64  +	var o = n
           65  +	for i=0,fac do n = n * o end
           66  +	return n
           67  +end
    59     68   
    60     69   terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
    61     70   	var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
    62     71   	var buf: int8[m.shorthand.maxlen]
    63     72   	var ptr = [&int8](buf)
    64     73   	while val ~= 0 do
    65     74   		var v = val % 64