Other nodes (Range_Expression … Subtype_Definition)
The diagrams below draw one box per node kind, with one port per field. The edge colours say how a link is held; they
are listed in full on the Fields page.
digraph {
rankdir="LR"
nodesep=0.1
node [shape=point width=0.06 color="#888a85"]
edge [fontname="monospace" fontsize=10 minlen=3]
l0a -> l0b [label="owned" color="#000000"]
l1a -> l1b [label="ref" color="#3465a4" style=dashed]
l2a -> l2b [label="maybe ref" color="#3465a4" style=dotted]
l3a -> l3b [label="of ref" color="#3465a4" style=dashed]
l4a -> l4b [label="of maybe ref" color="#3465a4" style=dotted]
l5a -> l5b [label="forward ref" color="#f57900" style=dashed]
l6a -> l6b [label="maybe forward ref" color="#f57900" style=dotted]
l7a -> l7b [label="chain" color="#4e9a06"]
l8a -> l8b [label="chain next" color="#4e9a06" style=bold]
}
Iir_Kind_Range_Expression
Format: Short
Accessor
Field
Type
Access
Description
Left_Limit_Expr
Field2
Iir
owned
There are two fields for both limits: those that own the node (Left_Limit_Expr and Right_Limit_Expr) and those that reference the node (Left_Limit and Right_Limit). Always use the reference (they cannot be Null_Iir, while the owner nodes can be Null_Iir. Set the owner nodes only for owning purpose.
Right_Limit_Expr
Field3
Iir
owned
—
Range_Origin
Field0
Iir
owned
—
Type
Field1
Iir
ref
—
Left_Limit
Field4
Iir
ref
—
Right_Limit
Field5
Iir
ref
—
Expr_Staticness
State1
Iir_Staticness
owned
Expression staticness, defined by rules of LRM 7.4
Direction
Flag1
Direction_Type
owned
—
digraph {
rankdir="LR"
node [shape=record fontname="monospace" fontsize=10]
edge [fontname="monospace" fontsize=9]
"Range_Expression" [style=filled fillcolor="#eeeeec" label="{Range_Expression|{<Left_Limit_Expr> Left_Limit_Expr|<Right_Limit_Expr> Right_Limit_Expr|<Range_Origin> Range_Origin|<Type> Type|<Left_Limit> Left_Limit|<Right_Limit> Right_Limit|<Expr_Staticness> Expr_Staticness|<Direction> Direction}}"]
"Range_Expression__Left_Limit_Expr" [shape=box label="Iir"]
"Range_Expression":Left_Limit_Expr -> "Range_Expression__Left_Limit_Expr" [color="#000000"]
"Range_Expression__Right_Limit_Expr" [shape=box label="Iir"]
"Range_Expression":Right_Limit_Expr -> "Range_Expression__Right_Limit_Expr" [color="#000000"]
"Range_Expression__Range_Origin" [shape=box label="Iir"]
"Range_Expression":Range_Origin -> "Range_Expression__Range_Origin" [color="#000000"]
"Range_Expression__Type" [shape=box label="Iir"]
"Range_Expression":Type -> "Range_Expression__Type" [color="#3465a4" style=dashed]
"Range_Expression__Left_Limit" [shape=box label="Iir"]
"Range_Expression":Left_Limit -> "Range_Expression__Left_Limit" [color="#3465a4" style=dashed]
"Range_Expression__Right_Limit" [shape=box label="Iir"]
"Range_Expression":Right_Limit -> "Range_Expression__Right_Limit" [color="#3465a4" style=dashed]
}
Iir_Kind_Protected_Type_Body
Format: Short
Accessor
Field
Type
Access
Description
Parent
Field0
Iir
ref
Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop.
Declaration_Chain
Field1
Iir
chain
—
Chain
Field2
Iir
chain next
—
Identifier
Field3
Name_Id
owned
Get/Set the identifier of a declaration. Can also be used instead of get/set_label.
Protected_Type_Declaration
Field4
Iir
ref
Corresponding protected type declaration of a protected type body.
Attribute_Value_Chain
Field5
Iir
ref
Chain of attribute values for declared items. To be used with Get/Set_Value_Chain. There is no order, therefore, a new attribute value may be always prepended.
End_Has_Reserved_Id
Flag8
Boolean
owned
Layout flag: true if ‘end’ is followed by the reserved identifier.
End_Has_Identifier
Flag9
Boolean
owned
Layout flag: true if ‘end’ is followed by the identifier.
digraph {
rankdir="LR"
node [shape=record fontname="monospace" fontsize=10]
edge [fontname="monospace" fontsize=9]
"Protected_Type_Body" [style=filled fillcolor="#eeeeec" label="{Protected_Type_Body|{<Parent> Parent|<Declaration_Chain> Declaration_Chain|<Chain> Chain|<Identifier> Identifier|<Protected_Type_Declaration> Protected_Type_Declaration|<Attribute_Value_Chain> Attribute_Value_Chain|<End_Has_Reserved_Id> End_Has_Reserved_Id|<End_Has_Identifier> End_Has_Identifier}}"]
"Protected_Type_Body__Parent" [shape=box label="Iir"]
"Protected_Type_Body":Parent -> "Protected_Type_Body__Parent" [color="#3465a4" style=dashed]
"Protected_Type_Body__Declaration_Chain" [shape=box label="Iir"]
"Protected_Type_Body":Declaration_Chain -> "Protected_Type_Body__Declaration_Chain" [color="#4e9a06"]
"Protected_Type_Body__Chain" [shape=box label="Iir"]
"Protected_Type_Body":Chain -> "Protected_Type_Body__Chain" [color="#4e9a06" style=bold]
"Protected_Type_Body__Protected_Type_Declaration" [shape=box label="Iir"]
"Protected_Type_Body":Protected_Type_Declaration -> "Protected_Type_Body__Protected_Type_Declaration" [color="#3465a4" style=dashed]
"Protected_Type_Body__Attribute_Value_Chain" [shape=box label="Iir"]
"Protected_Type_Body":Attribute_Value_Chain -> "Protected_Type_Body__Attribute_Value_Chain" [color="#3465a4" style=dashed]
}
Iir_Kind_Wildcard_Type_Definition
A wildcard type doesn’t correspond to a type defined by VHDL. It is used only during analysis to temporary set the type
of an entity when the type is not precisely known but restricted to some class of types. Eg: the type of an aggregate
is not known before being determined by the context, but can only be an array or a record. Wildcard types are statically
created by std_package and the set of restrictions depends on the node. See std_package.ads
Format: Short
Accessor
Field
Type
Access
Description
Type_Declarator
Field3
Iir
ref
The type declarator which declares the type definition DEF. Can also be a nature declarator for composite nature definition.
Resolved_Flag
Flag1
Boolean
owned
Get/Set the resolved flag of a subtype definition. A subtype definition may be resolved either because a resolution_indication is present in the subtype_indication, or because all elements type are resolved.
Signal_Type_Flag
Flag2
Boolean
owned
Get/Set the signal_type flag of a type/subtype definition. This flags indicates whether the type can be used as a signal type. Access types, file types and composite types whose a sub-element is an access type cannot be used as a signal type.
Type_Staticness
State1
Iir_Staticness
owned
—
digraph {
rankdir="LR"
node [shape=record fontname="monospace" fontsize=10]
edge [fontname="monospace" fontsize=9]
"Wildcard_Type_Definition" [style=filled fillcolor="#eeeeec" label="{Wildcard_Type_Definition|{<Type_Declarator> Type_Declarator|<Resolved_Flag> Resolved_Flag|<Signal_Type_Flag> Signal_Type_Flag|<Type_Staticness> Type_Staticness}}"]
"Wildcard_Type_Definition__Type_Declarator" [shape=box label="Iir"]
"Wildcard_Type_Definition":Type_Declarator -> "Wildcard_Type_Definition__Type_Declarator" [color="#3465a4" style=dashed]
}
Iir_Kind_Foreign_Vector_Type_Definition
A one dimensional array representing a vector defined in a foreign language.
FIXME: add constraint state, add length
Format: Medium
Accessor
Field
Type
Access
Description
Type_Declarator
Field3
Iir
ref
The type declarator which declares the type definition DEF. Can also be a nature declarator for composite nature definition.
digraph {
rankdir="LR"
node [shape=record fontname="monospace" fontsize=10]
edge [fontname="monospace" fontsize=9]
"Foreign_Vector_Type_Definition" [style=filled fillcolor="#eeeeec" label="{Foreign_Vector_Type_Definition|{<Type_Declarator> Type_Declarator}}"]
"Foreign_Vector_Type_Definition__Type_Declarator" [shape=box label="Iir"]
"Foreign_Vector_Type_Definition":Type_Declarator -> "Foreign_Vector_Type_Definition__Type_Declarator" [color="#3465a4" style=dashed]
}
Iir_Kind_Subtype_Definition
Such a node is only created by parse and transformed into the correct kind (enumeration_subtype, integer_subtype…) by
sem.
Format: Medium
Accessor
Field
Type
Access
Description
Range_Constraint
Field1
Iir
maybe ref
—
Subtype_Type_Mark
Field2
Iir
owned
The type_mark that appeared in the subtype indication. This is a name. May be null_iir if there is no type mark (as in an iterator).
Type_Declarator
Field3
Iir
ref
The type declarator which declares the type definition DEF. Can also be a nature declarator for composite nature definition.
Parent_Type
Field4
Iir
ref
—
Resolution_Indication
Field5
Iir
owned
Either a resolution function name, an array_element_resolution or a record_resolution
Tolerance
Field7
Iir
owned
—
Is_Ref
Flag12
Boolean
owned
Set to True if Maybe_Ref fields are references. This cannot be shared with Has_Identifier_List as: Is_Ref is set to True on all items but the first, while Has_Identifier_List is set to True on all items but the last. Furthermore Is_Ref appears in nodes where Has_Identifier_List is not present.
digraph {
rankdir="LR"
node [shape=record fontname="monospace" fontsize=10]
edge [fontname="monospace" fontsize=9]
"Subtype_Definition" [style=filled fillcolor="#eeeeec" label="{Subtype_Definition|{<Range_Constraint> Range_Constraint|<Subtype_Type_Mark> Subtype_Type_Mark|<Type_Declarator> Type_Declarator|<Parent_Type> Parent_Type|<Resolution_Indication> Resolution_Indication|<Tolerance> Tolerance|<Is_Ref> Is_Ref}}"]
"Subtype_Definition__Range_Constraint" [shape=box label="Iir"]
"Subtype_Definition":Range_Constraint -> "Subtype_Definition__Range_Constraint" [color="#3465a4" style=dotted]
"Subtype_Definition__Subtype_Type_Mark" [shape=box label="Iir"]
"Subtype_Definition":Subtype_Type_Mark -> "Subtype_Definition__Subtype_Type_Mark" [color="#000000"]
"Subtype_Definition__Type_Declarator" [shape=box label="Iir"]
"Subtype_Definition":Type_Declarator -> "Subtype_Definition__Type_Declarator" [color="#3465a4" style=dashed]
"Subtype_Definition__Parent_Type" [shape=box label="Iir"]
"Subtype_Definition":Parent_Type -> "Subtype_Definition__Parent_Type" [color="#3465a4" style=dashed]
"Subtype_Definition__Resolution_Indication" [shape=box label="Iir"]
"Subtype_Definition":Resolution_Indication -> "Subtype_Definition__Resolution_Indication" [color="#000000"]
"Subtype_Definition__Tolerance" [shape=box label="Iir"]
"Subtype_Definition":Tolerance -> "Subtype_Definition__Tolerance" [color="#000000"]
}