summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2013-12-03 19:23:54 +0000
committeremaste <emaste@FreeBSD.org>2013-12-03 19:23:54 +0000
commite75cbd9d8d61004a7f53a7bc08490fa932daa589 (patch)
treeba627d06612b80ba6e3256d311edf689335b6603 /contrib/llvm/tools/lldb/source/Host/common/OptionParser.cpp
parent6221ad905044551fac57fb9353660c4e20e86c1d (diff)
parent0f31a1ef7ecf609d469ee5b34b3f0cb24ae3492d (diff)
downloadFreeBSD-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.cpp58
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;
+}
OpenPOWER on IntegriCloud