Files
clang-p2996/lldb/source/Host/common/OptionParser.cpp
Konrad Kleine 248a13057a [lldb] NFC modernize codebase with modernize-use-nullptr
Summary:
NFC = [[ https://llvm.org/docs/Lexicon.html#nfc | Non functional change ]]

This commit is the result of modernizing the LLDB codebase by using
`nullptr` instread of `0` or `NULL`. See
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
for more information.

This is the command I ran and I to fix and format the code base:

```
run-clang-tidy.py \
	-header-filter='.*' \
	-checks='-*,modernize-use-nullptr' \
	-fix ~/dev/llvm-project/lldb/.* \
	-format \
	-style LLVM \
	-p ~/llvm-builds/debug-ninja-gcc
```

NOTE: There were also changes to `llvm/utils/unittest` but I did not
include them because I felt that maybe this library shall be updated in
isolation somehow.

NOTE: I know this is a rather large commit but it is a nobrainer in most
parts.

Reviewers: martong, espindola, shafik, #lldb, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: arsenm, jvesely, nhaehnle, hiraditya, JDevlieghere, teemperor, rnkovacs, emaste, kubamracek, nemanjai, ki.stfu, javed.absar, arichardson, kbarton, jrtc27, MaskRay, atanasyan, dexonsmith, arphaman, jfb, jsji, jdoerfert, lldb-commits, llvm-commits

Tags: #lldb, #llvm

Differential Revision: https://reviews.llvm.org/D61847

llvm-svn: 361484
2019-05-23 11:14:47 +00:00

82 lines
2.3 KiB
C++

//===-- source/Host/common/OptionParser.cpp ---------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "lldb/Host/OptionParser.h"
#include "lldb/Host/HostGetOpt.h"
#include "lldb/lldb-private-types.h"
#include <vector>
using namespace lldb_private;
void OptionParser::Prepare(std::unique_lock<std::mutex> &lock) {
static std::mutex g_mutex;
lock = std::unique_lock<std::mutex>(g_mutex);
#ifdef __GLIBC__
optind = 0;
#else
optreset = 1;
optind = 1;
#endif
}
void OptionParser::EnableError(bool error) { opterr = error ? 1 : 0; }
int OptionParser::Parse(int argc, char *const argv[], llvm::StringRef optstring,
const Option *longopts, int *longindex) {
std::vector<option> opts;
while (longopts->definition != nullptr) {
option opt;
opt.flag = longopts->flag;
opt.val = longopts->val;
opt.name = longopts->definition->long_option;
opt.has_arg = longopts->definition->option_has_arg;
opts.push_back(opt);
++longopts;
}
opts.push_back(option());
std::string opt_cstr = optstring;
return getopt_long_only(argc, argv, opt_cstr.c_str(), &opts[0], longindex);
}
char *OptionParser::GetOptionArgument() { return optarg; }
int OptionParser::GetOptionIndex() { return optind; }
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 == nullptr && long_options[i].has_arg == 0 &&
long_options[i].flag == nullptr && long_options[i].val == 0) {
done = true;
} else {
if (long_options[i].flag == nullptr && 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;
}