Elsif

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_Elsif

LRM08 10.8

if_statement ::=
  [ /if/_label : ]
     IF condition THEN
        sequence_of_statements
     { ELSIF condition THEN
        sequence_of_statements }
     [ ELSE
        sequence_of_statements ]
     END IF [ /if/_label ] ;

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.

Condition

Field1

Iir

maybe ref

May be NULL only for an iir_kind_elsif node, and then means the else clause.

Sequential_Statement_Chain

Field4

Iir

chain

Else_Clause

Field5

Iir

owned

Must be an Iir_kind_elsif node, or NULL for no more elsif clauses.

End_Has_Identifier

Flag9

Boolean

owned

Layout flag: true if ‘end’ is followed by the identifier.

Covered_Flag

Flag10

Boolean

owned

Set during elaboration when the statement is executed.

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] "Elsif" [style=filled fillcolor="#eeeeec" label="{Elsif|{<Parent> Parent|<Condition> Condition|<Sequential_Statement_Chain> Sequential_Statement_Chain|<Else_Clause> Else_Clause|<End_Has_Identifier> End_Has_Identifier|<Covered_Flag> Covered_Flag|<Is_Ref> Is_Ref}}"] "Elsif__Parent" [shape=box label="Iir"] "Elsif":Parent -> "Elsif__Parent" [color="#3465a4" style=dashed] "Elsif__Condition" [shape=box label="Iir"] "Elsif":Condition -> "Elsif__Condition" [color="#3465a4" style=dotted] "Elsif__Sequential_Statement_Chain" [shape=box label="Iir"] "Elsif":Sequential_Statement_Chain -> "Elsif__Sequential_Statement_Chain" [color="#4e9a06"] "Elsif__Else_Clause" [shape=box label="Iir"] "Elsif":Else_Clause -> "Elsif__Else_Clause" [color="#000000"] }