Files
clang-p2996/lldb/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.h
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

89 lines
2.4 KiB
C++

//===-- DWARFDeclContext.h --------------------------------------*- 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
//
//===----------------------------------------------------------------------===//
#ifndef SymbolFileDWARF_DWARFDeclContext_h_
#define SymbolFileDWARF_DWARFDeclContext_h_
#include <string>
#include <vector>
#include "lldb/Utility/ConstString.h"
#include "DWARFDefines.h"
// DWARFDeclContext
//
// A class that represents a declaration context all the way down to a
// DIE. This is useful when trying to find a DIE in one DWARF to a DIE
// in another DWARF file.
class DWARFDeclContext {
public:
struct Entry {
Entry() : tag(0), name(nullptr) {}
Entry(dw_tag_t t, const char *n) : tag(t), name(n) {}
bool NameMatches(const Entry &rhs) const {
if (name == rhs.name)
return true;
else if (name && rhs.name)
return strcmp(name, rhs.name) == 0;
return false;
}
// Test operator
explicit operator bool() const { return tag != 0; }
dw_tag_t tag;
const char *name;
};
DWARFDeclContext() : m_entries(), m_language(lldb::eLanguageTypeUnknown) {}
void AppendDeclContext(dw_tag_t tag, const char *name) {
m_entries.push_back(Entry(tag, name));
}
bool operator==(const DWARFDeclContext &rhs) const;
uint32_t GetSize() const { return m_entries.size(); }
Entry &operator[](uint32_t idx) {
// "idx" must be valid
return m_entries[idx];
}
const Entry &operator[](uint32_t idx) const {
// "idx" must be valid
return m_entries[idx];
}
const char *GetQualifiedName() const;
// Same as GetQaulifiedName, but the life time of the returned string will
// be that of the LLDB session.
lldb_private::ConstString GetQualifiedNameAsConstString() const {
return lldb_private::ConstString(GetQualifiedName());
}
void Clear() {
m_entries.clear();
m_qualified_name.clear();
}
lldb::LanguageType GetLanguage() const { return m_language; }
void SetLanguage(lldb::LanguageType language) { m_language = language; }
protected:
typedef std::vector<Entry> collection;
collection m_entries;
mutable std::string m_qualified_name;
lldb::LanguageType m_language;
};
#endif // SymbolFileDWARF_DWARFDeclContext_h_