*** to conform to clang-format’s LLVM style. This kind of mass change has
*** two obvious implications:
Firstly, merging this particular commit into a downstream fork may be a huge
effort. Alternatively, it may be worth merging all changes up to this commit,
performing the same reformatting operation locally, and then discarding the
merge for this particular commit. The commands used to accomplish this
reformatting were as follows (with current working directory as the root of
the repository):
find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} +
find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ;
The version of clang-format used was 3.9.0, and autopep8 was 1.2.4.
Secondly, “blame” style tools will generally point to this commit instead of
a meaningful prior commit. There are alternatives available that will attempt
to look through this change and find the appropriate prior commit. YMMV.
llvm-svn: 280751
97 lines
3.5 KiB
C++
97 lines
3.5 KiB
C++
//===-- ClangPersistentVariables.h ------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_ClangPersistentVariables_h_
|
|
#define liblldb_ClangPersistentVariables_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
#include "llvm/ADT/DenseMap.h"
|
|
|
|
// Project includes
|
|
#include "ClangExpressionVariable.h"
|
|
#include "ClangModulesDeclVendor.h"
|
|
|
|
#include "lldb/Expression/ExpressionVariable.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
//----------------------------------------------------------------------
|
|
/// @class ClangPersistentVariables ClangPersistentVariables.h
|
|
/// "lldb/Expression/ClangPersistentVariables.h"
|
|
/// @brief Manages persistent values that need to be preserved between
|
|
/// expression invocations.
|
|
///
|
|
/// A list of variables that can be accessed and updated by any expression. See
|
|
/// ClangPersistentVariable for more discussion. Also provides an increasing,
|
|
/// 0-based counter for naming result variables.
|
|
//----------------------------------------------------------------------
|
|
class ClangPersistentVariables : public PersistentExpressionState {
|
|
public:
|
|
ClangPersistentVariables();
|
|
|
|
~ClangPersistentVariables() override = default;
|
|
|
|
//------------------------------------------------------------------
|
|
// llvm casting support
|
|
//------------------------------------------------------------------
|
|
static bool classof(const PersistentExpressionState *pv) {
|
|
return pv->getKind() == PersistentExpressionState::eKindClang;
|
|
}
|
|
|
|
lldb::ExpressionVariableSP
|
|
CreatePersistentVariable(const lldb::ValueObjectSP &valobj_sp) override;
|
|
|
|
lldb::ExpressionVariableSP CreatePersistentVariable(
|
|
ExecutionContextScope *exe_scope, const ConstString &name,
|
|
const CompilerType &compiler_type, lldb::ByteOrder byte_order,
|
|
uint32_t addr_byte_size) override;
|
|
|
|
//----------------------------------------------------------------------
|
|
/// Return the next entry in the sequence of strings "$0", "$1", ... for
|
|
/// use naming persistent expression convenience variables.
|
|
///
|
|
/// @return
|
|
/// A string that contains the next persistent variable name.
|
|
//----------------------------------------------------------------------
|
|
ConstString GetNextPersistentVariableName() override;
|
|
|
|
void RemovePersistentVariable(lldb::ExpressionVariableSP variable) override;
|
|
|
|
void RegisterPersistentDecl(const ConstString &name, clang::NamedDecl *decl);
|
|
|
|
clang::NamedDecl *GetPersistentDecl(const ConstString &name);
|
|
|
|
void AddHandLoadedClangModule(ClangModulesDeclVendor::ModuleID module) {
|
|
m_hand_loaded_clang_modules.push_back(module);
|
|
}
|
|
|
|
const ClangModulesDeclVendor::ModuleVector &GetHandLoadedClangModules() {
|
|
return m_hand_loaded_clang_modules;
|
|
}
|
|
|
|
private:
|
|
uint32_t m_next_persistent_variable_id; ///< The counter used by
|
|
///GetNextResultName().
|
|
|
|
typedef llvm::DenseMap<const char *, clang::NamedDecl *> PersistentDeclMap;
|
|
PersistentDeclMap
|
|
m_persistent_decls; ///< Persistent entities declared by the user.
|
|
|
|
ClangModulesDeclVendor::ModuleVector
|
|
m_hand_loaded_clang_modules; ///< These are Clang modules we hand-loaded;
|
|
///these are the highest-
|
|
///< priority source for macros.
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_ClangPersistentVariables_h_
|