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