1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
-- vim: ft=terra
local m = {
shorthand = {maxlen = 14};
ll = {
ctpop_u8 = terralib.intrinsic('llvm.ctpop.i8', uint8 -> uint8);
};
}
local pstring = lib.mem.ptr(int8)
-- swap in place -- faster on little endian
m.netswap_ip = macro(function(ty, src, dest)
if ty:astype().type ~= 'integer' then error('bad type') end
local bytes = ty:astype().bytes
................................................................................
var o = n
for i=0,fac do n = n * o end
return n
end
terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
var buf: int8[m.shorthand.maxlen]
var ptr = [&int8](buf)
while val ~= 0 do
var v = val % 64
@ptr = lst[v]
ptr = ptr + 1
val = val / 64
end
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-- vim: ft=terra
local m = {
shorthand = {maxlen = 14};
}
m.shorthand.t = int8[m.shorthand.maxlen]
local pstring = lib.mem.ptr(int8)
-- swap in place -- faster on little endian
m.netswap_ip = macro(function(ty, src, dest)
if ty:astype().type ~= 'integer' then error('bad type') end
local bytes = ty:astype().bytes
................................................................................
var o = n
for i=0,fac do n = n * o end
return n
end
terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
var buf: m.shorthand.t
var ptr = [&int8](buf)
while val ~= 0 do
var v = val % 64
@ptr = lst[v]
ptr = ptr + 1
val = val / 64
end
|