Click or drag to resize
Llvm.NET LogoIDebugTypeTNative, TDebug Interface

[This is preliminary documentation and is subject to change.]

Provides pairing of a ITypeRef with a DIType for function signatures

Namespace:  Llvm.NET.DebugInfo
Assembly:  Llvm.NET (in Llvm.NET.dll) Version: 3.8.6158
Syntax
C#
public interface IDebugType<out TNative, out TDebug> : ITypeRef, 
	IExtensiblePropertyContainer
where TNative : ITypeRef
where TDebug : DIType

Type Parameters

TNative
TDebug

The IDebugTypeTNative, TDebug type exposes the following members.

Properties
  NameDescription
Public propertyContext
Context that owns this type
(Inherited from ITypeRef.)
Public propertyDIType
Debug information type this interface is associating with NativeType
Public propertyIntegerBitWidth
Integer bit width of this type or 0 for non integer types
(Inherited from ITypeRef.)
Public propertyIsDouble (Inherited from ITypeRef.)
Public propertyIsFloat (Inherited from ITypeRef.)
Public propertyIsFloatingPoint
Flag to indicate if this type is a floating point type
(Inherited from ITypeRef.)
Public propertyIsInteger
Flag to indicate if this type is an integer
(Inherited from ITypeRef.)
Public propertyIsPointer
Flag to indicate if this type is a pointer
(Inherited from ITypeRef.)
Public propertyIsPointerPointer
FLag to indicate if this type is a pointer to a pointer
(Inherited from ITypeRef.)
Public propertyIsSequence
Flag to indicate if this type is a sequence type
(Inherited from ITypeRef.)
Public propertyIsSized
Flag to indicate if the type is sized
(Inherited from ITypeRef.)
Public propertyIsStruct
Flag to indicate if this type is a structure type
(Inherited from ITypeRef.)
Public propertyIsVoid
Flag to indicate if this type represents the void type
(Inherited from ITypeRef.)
Public propertyKind
LLVM Type kind for this type
(Inherited from ITypeRef.)
Public propertyNativeType
LLVM NativeType this interface is associating with debug info in DIType
Public propertyTypeHandle
LibLLVM handle for the type
(Inherited from ITypeRef.)
Top
Methods
  NameDescription
Public methodAddExtendedPropertyValue
Adds a value to the container
(Inherited from IExtensiblePropertyContainer.)
Public methodCreateArrayType
Array type factory for an array with elements of this type
(Inherited from ITypeRef.)
Public methodCreatePointerType
Get a IPointerType for a type that points to elements of this type in the default (0) address space
(Inherited from ITypeRef.)
Public methodCreatePointerType(UInt32)
Get a IPointerType for a type that points to elements of this type in the specified address space
(Inherited from ITypeRef.)
Public methodGetNullValue
Gets a null value (e.g. all bits == 0 ) for the type
(Inherited from ITypeRef.)
Public methodTryGetExtendedPropertyValueT
Try to get a value from the container
(Inherited from IExtensiblePropertyContainer.)
Top
Remarks

Primitive types and function signature types are all interned in LLVM, thus there won't be a strict one to one relationship between an LLVM type and corresponding language specific debug type. (e.g. unsigned char, char, byte and signed byte might all be 8 bit integer values as far as LLVM is concerned. Also, when using the pointer+alloca+memcpy pattern to pass by value the actual source debug info type is different than the LLVM function signature. This class is used to construct native type and debug info pairing to allow applications to maintain a link from their AST or IR types into the LLVM native type and debug information.

Note Note
It is important to note that the relationship between the DIType to it's NativeType properties is strictly one way. That is, there is no way to take an arbitrary ITypeRef and re-associate it with the DIType or an implementation of this interface as there may be many such mappings to choose from.
See Also