Fixed type lookups to "do the right thing". Prior to this fix, looking up a type using "foo::bar" would result in a type list that contains all types that had "bar" as a basename unless the symbol file was able to match fully qualified names (which our DWARF parser does not). This fix will allow type matches to be made based on the basename and then have the types that don't match filtered out. Types by name can be fully qualified, or partially qualified with the new "bool exact_match" parameter to the Module::FindTypes() method. This fixes some issue that we discovered with dynamic type resolution as well as improves the overall type lookups in LLDB. llvm-svn: 153482
84 lines
2.1 KiB
C++
84 lines
2.1 KiB
C++
//===-- ValueObjectVariable.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_ValueObjectVariable_h_
|
|
#define liblldb_ValueObjectVariable_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/Core/ValueObject.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
//----------------------------------------------------------------------
|
|
// A ValueObject that contains a root variable that may or may not
|
|
// have children.
|
|
//----------------------------------------------------------------------
|
|
class ValueObjectVariable : public ValueObject
|
|
{
|
|
public:
|
|
static lldb::ValueObjectSP
|
|
Create (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
|
|
|
|
virtual
|
|
~ValueObjectVariable();
|
|
|
|
virtual size_t
|
|
GetByteSize();
|
|
|
|
virtual ConstString
|
|
GetTypeName();
|
|
|
|
virtual ConstString
|
|
GetQualifiedTypeName();
|
|
|
|
virtual uint32_t
|
|
CalculateNumChildren();
|
|
|
|
virtual lldb::ValueType
|
|
GetValueType() const;
|
|
|
|
virtual bool
|
|
IsInScope ();
|
|
|
|
virtual lldb::ModuleSP
|
|
GetModule();
|
|
|
|
virtual SymbolContextScope *
|
|
GetSymbolContextScope();
|
|
|
|
virtual bool
|
|
GetDeclaration (Declaration &decl);
|
|
|
|
protected:
|
|
virtual bool
|
|
UpdateValue ();
|
|
|
|
virtual clang::ASTContext *
|
|
GetClangASTImpl ();
|
|
|
|
virtual lldb::clang_type_t
|
|
GetClangTypeImpl ();
|
|
|
|
lldb::VariableSP m_variable_sp; ///< The variable that this value object is based upon
|
|
|
|
private:
|
|
ValueObjectVariable (ExecutionContextScope *exe_scope, const lldb::VariableSP &var_sp);
|
|
//------------------------------------------------------------------
|
|
// For ValueObject only
|
|
//------------------------------------------------------------------
|
|
DISALLOW_COPY_AND_ASSIGN (ValueObjectVariable);
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_ValueObjectVariable_h_
|