21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
for o,desc in pairs(tbl) do
local consume = desc.consume or 0
local incr = desc.inc or 0
options.entries[#options.entries + 1] = {
field = o, type = (consume > 0) and &rawstring or
(incr > 0) and uint or bool
}
helpstr = helpstr .. string.format(' -%s --%s: %s\n',
desc[1], sanitize(o), desc[2])
end
for o,desc in pairs(tbl) do
local flag = desc[1]
local consume = desc.consume or 0
local incr = desc.inc or 0
init[#init + 1] = quote [self].[o] = [
(consume > 0 and `nil) or
................................................................................
end
end
elseif incr > 0 then
ch = quote [self].[o] = [self].[o] + incr end
else ch = quote
[self].[o] = true
end end
shortcases[#shortcases + 1] = quote
case [int8]([string.byte(flag)]) then [ch] end
end
longcases[#longcases + 1] = quote
if lib.str.cmp([arg]+2, [sanitize(o)]) == 0 then [ch] goto [skip] end
end
end
terra options:free() self.arglist:free() end
options.methods.parse = terra([self], [argc], [argv])
|
|
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
..
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
for o,desc in pairs(tbl) do
local consume = desc.consume or 0
local incr = desc.inc or 0
options.entries[#options.entries + 1] = {
field = o, type = (consume > 0) and &rawstring or
(incr > 0) and uint or bool
}
if desc[1] then
helpstr = helpstr .. string.format(' -%s --%s: %s\n',
desc[1], sanitize(o), desc[2])
else
helpstr = helpstr .. string.format(' --%s: %s\n',
sanitize(o), desc[2])
end
end
for o,desc in pairs(tbl) do
local flag = desc[1]
local consume = desc.consume or 0
local incr = desc.inc or 0
init[#init + 1] = quote [self].[o] = [
(consume > 0 and `nil) or
................................................................................
end
end
elseif incr > 0 then
ch = quote [self].[o] = [self].[o] + incr end
else ch = quote
[self].[o] = true
end end
if flag ~= nil then
shortcases[#shortcases + 1] = quote
case [int8]([string.byte(flag)]) then [ch] end
end
end
longcases[#longcases + 1] = quote
if lib.str.cmp([arg]+2, [sanitize(o)]) == 0 then [ch] goto [skip] end
end
end
terra options:free() self.arglist:free() end
options.methods.parse = terra([self], [argc], [argv])
|