14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVELEMENT_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVELEMENT_H
24namespace logicalview {
79 IsMemberPointerResolved,
86 HasReferenceExtension,
87 HasReferenceSpecification,
110 size_t NameIndex = 0;
111 size_t QualifiedNameIndex = 0;
112 size_t FilenameIndex = 0;
120 void setFileLine(
LVElement *Specification);
123 void resolveQualifiedName();
134 :
LVObject(), SubclassID(
ID), AccessibilityCode(0), InlineCode(0),
174 bool isNamed()
const override {
return NameIndex != 0; }
176 bool isFiled()
const override {
return FilenameIndex != 0; }
218 virtual bool isRoot()
const {
return false; }
239 virtual bool isBase()
const {
return false; }
251 virtual std::pair<unsigned, unsigned>
getBounds()
const {
return {}; }
273 AccessibilityCode =
Code.value();
291 VirtualityCode =
Code.value();
305 Element->setIsReferencedType();
Pass interface - Implemented by all 'passes'.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
PROPERTY(Property, IsTypedefReduced)
virtual void setCount(int64_t Value)
size_t getNameIndex() const
PROPERTY(Property, IsEnumClass)
void setAccessibilityCode(codeview::MemberAccess Access)
std::string discriminatorAsString() const
PROPERTY(Property, IsScoped)
LVScope * traverseParents(LVScopeGetFunction GetFunction) const
virtual void setCallLineNumber(uint32_t Number)
PROPERTY(Property, HasReferenceSpecification)
virtual bool isTemplateParam() const
virtual LVScope * getCompileUnitParent() const
StringRef getQualifiedName() const
virtual void setReference(LVScope *Scope)
void resolveFullname(LVElement *BaseType, StringRef Name=emptyString())
PROPERTY(Property, IsType)
virtual ~LVElement()=default
virtual void setReference(LVSymbol *Symbol)
PROPERTY(Property, IsMemberPointerResolved)
virtual void setBitSize(uint32_t Size)
PROPERTY(Property, IsInlinedAbstract)
virtual void setLinkageName(StringRef LinkageName)
virtual void setProducer(StringRef ProducerName)
LVScope * getFunctionParent() const
static LVElementDispatch & getDispatch()
virtual void setUpperBound(int64_t Value)
virtual void setDiscriminator(uint32_t Value)
virtual bool isRoot() const
virtual size_t getCallFilenameIndex() const
virtual void setLowerBound(int64_t Value)
virtual void updateLevel(LVScope *Parent, bool Moved=false)
LVElement(LVSubclassID ID)
virtual int64_t getCount() const
LVElement(const LVElement &)=delete
virtual void resolveName()
StringRef virtualityString(uint32_t Virtuality=dwarf::DW_VIRTUALITY_none) const
bool isFiled() const override
uint32_t getInlineCode() const
StringRef typeAsString() const
virtual uint32_t getDiscriminator() const
virtual StringRef getValue() const
virtual bool isBase() const
virtual void setValue(StringRef Value)
void setFilename(StringRef Filename)
void setInlineCode(uint32_t Code)
void setQualifiedName(StringRef Name)
PROPERTY(Property, InvalidFilename)
StringRef externalString() const
virtual void setReference(LVElement *Element)
bool getIsKindScope() const
PROPERTY(Property, IsLine)
PROPERTY(Property, HasAugmentedName)
virtual StringRef getLinkageName() const
void setName(StringRef ElementName) override
void setGenericType(LVElement *Element)
virtual bool isCompileUnit() const
virtual size_t getValueIndex() const
PROPERTY(Property, IsSymbol)
PROPERTY(Property, HasReferenceExtension)
StringRef getName() const override
virtual int64_t getUpperBound() const
PROPERTY(Property, HasReference)
LVType * getTypeAsType() const
LVElement & operator=(const LVElement &)=delete
LVElement * getType() const
bool referenceMatch(const LVElement *Element) const
PROPERTY(Property, IsStatic)
PROPERTY(Property, IsArrayResolved)
virtual StringRef getProducer() const
PROPERTY(Property, IsAnonymous)
PROPERTY(Property, IsInlined)
void setAccessibilityCode(uint32_t Access)
virtual uint32_t getCallLineNumber() const
uint32_t getAccessibilityCode() const
PROPERTY(Property, IsNested)
virtual uint32_t getBitSize() const
PROPERTY(Property, HasType)
void setVirtualityCode(uint32_t Virtuality)
virtual void setReference(LVType *Type)
void setFile(LVElement *Reference=nullptr)
void setType(LVElement *Element=nullptr)
StringRef getTypeName() const
void printLinkageName(raw_ostream &OS, bool Full, LVElement *Parent, LVScope *Scope) const
StringRef getTypeQualifiedName() const
PROPERTY(Property, IsReferencedType)
virtual void report(LVComparePass Pass)
PROPERTY(Property, IsSystem)
virtual int64_t getLowerBound() const
PROPERTY(Property, IsArtificial)
bool getIsKindType() const
StringRef accessibilityString(uint32_t Access=dwarf::DW_ACCESS_private) const
void setFilenameIndex(size_t Index)
PROPERTY(Property, IncludeInPrint)
bool equals(const LVElement *Element) const
StringRef inlineCodeString(uint32_t Code) const
virtual std::pair< unsigned, unsigned > getBounds() const
uint32_t getVirtualityCode() const
PROPERTY(Property, QualifiedResolved)
size_t getFilenameIndex() const
std::string typeOffsetAsString() const
bool isTyped() const override
void printFileIndex(raw_ostream &OS, bool Full=true) const override
PROPERTY(Property, HasReferenceAbstract)
virtual void setCallFilenameIndex(size_t Index)
StringRef getPathname() const
PROPERTY(Property, IsScope)
size_t getQualifiedNameIndex() const
virtual bool removeElement(LVElement *Element)
PROPERTY(Property, IsExternal)
void setVirtualityCode(codeview::MethodKind Virtuality)
PROPERTY(Property, OffsetFromTypeIndex)
virtual size_t getLinkageNameIndex() const
PROPERTY(Property, TransformName)
PROPERTY(Property, IsScopedAlready)
LVSubclassID getSubclassID() const
bool isNamed() const override
void printReference(raw_ostream &OS, bool Full, LVElement *Parent) const
virtual void resolveExtra()
LVScope * getTypeAsScope() const
virtual void setBounds(unsigned Lower, unsigned Upper)
PROPERTY(Property, IsTemplateResolved)
virtual void resolveReferences()
StringRef getString(size_t Index) const
size_t getIndex(StringRef Key)
This class implements an extremely fast bulk output stream that can only output to a stream.
MethodKind
Part of member attribute flags. (CV_methodprop_e)
MemberAccess
Source-level access specifier. (CV_access_e)
LVStringPool & getStringPool()
std::set< LVElementKind > LVElementKindSet
bool(LVScope::*)() const LVScopeGetFunction
@ LV_SCOPE_FUNCTION_INLINED
std::vector< LVElementGetFunction > LVElementRequest
std::map< LVElementKind, LVElementGetFunction > LVElementDispatch
This is an optimization pass for GlobalISel generic memory operations.