[LLVMdev] LLVM CommandLine Library modifications
Allen Lee
al at allenlee.net
Sun Jan 27 18:34:08 PST 2013
Hi,
I recently decided to convert the argument parsing of a llvm project of
mine to the official LLVM CommandLine library. Specifically, my program
takes as as the first positional argument a command, which has to be in a
set of commands (similar to git). EG
myprog [options] <command> [command's arguments]
In LLVM CommandLine lingo, I needed a Positional argument with a Enum Value
mapping. Unfortunately for me, positionals and value mapping don't mix.
This:
static cl::opt<Commands>
Command(cl::Positional,
cl::Required,
cl::init(INVALID),
cl::desc("<command>"),
cl::value_desc("Commands:"),
cl::values(....));
compiles and runs, but the program doesn't parse the <command> argument in
the expected way. Rather than do the smart thing, which would have been to
write a custom parser class, I decided to dig into CommandLine and fix the
problem at the source. And after spending way too long stepping through
CommandLine, I have a ugly hack that allows the cl::Positional flag and
values() to play nicely together.
So my questions are:
1. Would anyone find this useful - should I submit my changes to the trunk?
.. and if the answer to 1. is non-negative
2. How should I test the changes? They work for my limited use cases, but I
have no idea I didn't break existing LLVM tools.
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130127/e77a15ca/attachment.html>
More information about the llvm-dev
mailing list