diff options
author | emaste <emaste@FreeBSD.org> | 2013-12-03 19:23:54 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2013-12-03 19:23:54 +0000 |
commit | e75cbd9d8d61004a7f53a7bc08490fa932daa589 (patch) | |
tree | ba627d06612b80ba6e3256d311edf689335b6603 /contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp | |
parent | 6221ad905044551fac57fb9353660c4e20e86c1d (diff) | |
parent | 0f31a1ef7ecf609d469ee5b34b3f0cb24ae3492d (diff) | |
download | FreeBSD-src-e75cbd9d8d61004a7f53a7bc08490fa932daa589.zip FreeBSD-src-e75cbd9d8d61004a7f53a7bc08490fa932daa589.tar.gz |
Update LLDB to upstream r196259 snapshot
Sponsored by: DARPA, AFRL
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp b/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp index 287292e..ead044f 100644 --- a/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp +++ b/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp @@ -38,24 +38,70 @@ OptionParser::EnableError(bool error) } int -OptionParser::Parse(int argc, char * const argv [], - const char *optstring, - const Option *longopts, int *longindex) +OptionParser::Parse (int argc, + char * const argv [], + const char *optstring, + const Option *longopts, + int *longindex) { return getopt_long_only(argc, argv, optstring, (const option*)longopts, longindex); } -char* OptionParser::GetOptionArgument() +char* +OptionParser::GetOptionArgument() { return optarg; } -int OptionParser::GetOptionIndex() +int +OptionParser::GetOptionIndex() { return optind; } -int OptionParser::GetOptionErrorCause() +int +OptionParser::GetOptionErrorCause() { return optopt; } + +std::string +OptionParser::GetShortOptionString(struct option *long_options) +{ + std::string s; + int i=0; + bool done = false; + while (!done) + { + if (long_options[i].name == 0 && + long_options[i].has_arg == 0 && + long_options[i].flag == 0 && + long_options[i].val == 0) + { + done = true; + } + else + { + if (long_options[i].flag == NULL && + isalpha(long_options[i].val)) + { + s.append(1, (char)long_options[i].val); + switch (long_options[i].has_arg) + { + default: + case no_argument: + break; + + case optional_argument: + s.append(2, ':'); + break; + case required_argument: + s.append(1, ':'); + break; + } + } + ++i; + } + } + return s; +} |