1 //===-- source/Host/common/OptionParser.cpp ---------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Host/OptionParser.h"
11 #include "lldb/Host/HostGetOpt.h"
12 #include "lldb/lldb-private-types.h"
16 using namespace lldb_private;
19 OptionParser::Prepare(std::unique_lock<std::mutex> &lock)
21 static std::mutex g_mutex;
22 lock = std::unique_lock<std::mutex>(g_mutex);
32 OptionParser::EnableError(bool error)
34 opterr = error ? 1 : 0;
38 OptionParser::Parse (int argc,
40 const char *optstring,
41 const Option *longopts,
44 std::vector<option> opts;
45 while (longopts->definition != nullptr)
48 opt.flag = longopts->flag;
49 opt.val = longopts->val;
50 opt.name = longopts->definition->long_option;
51 opt.has_arg = longopts->definition->option_has_arg;
55 opts.push_back(option());
56 return getopt_long_only(argc, argv, optstring, &opts[0], longindex);
60 OptionParser::GetOptionArgument()
66 OptionParser::GetOptionIndex()
72 OptionParser::GetOptionErrorCause()
78 OptionParser::GetShortOptionString(struct option *long_options)
85 if (long_options[i].name == 0 &&
86 long_options[i].has_arg == 0 &&
87 long_options[i].flag == 0 &&
88 long_options[i].val == 0)
94 if (long_options[i].flag == NULL &&
95 isalpha(long_options[i].val))
97 s.append(1, (char)long_options[i].val);
98 switch (long_options[i].has_arg)
104 case optional_argument:
107 case required_argument: