61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
end
terra options:free() self.arglist:free() end
options.methods.parse = terra([self], [argc], [argv])
[init]
var parseopts = true
var [optstack] = 0
var [subcmd] = [ opts.subcmd or 0 ]
self.arglist = lib.mem.heapa(rawstring, argc)
var finalargc = 0
for [idx]=1,argc do
var [arg] = argv[idx]
if optstack > 0 then optstack = optstack - 1 goto [skip] end
if arg[0] == @'-' and parseopts then
if arg[1] == @'-' then -- long option
if arg[2] == 0 then -- last option
................................................................................
subcmd = subcmd - 1
if subcmd == 0 then parseopts = false end
end
end
::[skip]::
end
[verifiers]
if finalargc == 0 then self.arglist:free()
else self.arglist:resize(finalargc) end
end
options.helptxt = { opts = helpstr, flags = flagstr }
end
return options
end
|
|
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
end
terra options:free() self.arglist:free() end
options.methods.parse = terra([self], [argc], [argv])
[init]
var parseopts = true
var [optstack] = 0
var [subcmd] = [ opts.subcmd or 0 ]
self.arglist = lib.mem.heapa(rawstring, argc + 1)
var finalargc = 0
for [idx]=1,argc do
var [arg] = argv[idx]
if optstack > 0 then optstack = optstack - 1 goto [skip] end
if arg[0] == @'-' and parseopts then
if arg[1] == @'-' then -- long option
if arg[2] == 0 then -- last option
................................................................................
subcmd = subcmd - 1
if subcmd == 0 then parseopts = false end
end
end
::[skip]::
end
[verifiers]
self.arglist.ptr[finalargc] = nil -- for lazy-ass argv compat
if finalargc == 0 then self.arglist:free()
else self.arglist:resize(finalargc) end
end
options.helptxt = { opts = helpstr, flags = flagstr }
end
return options
end
|