-- Meta description of nodes. -- Copyright (C) 2014 Tristan Gingold -- -- GHDL is free software; you can redistribute it and/or modify it under -- the terms of the GNU General Public License as published by the Free -- Software Foundation; either version 2, or (at your option) any later -- version. -- -- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or -- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- for more details. -- -- You should have received a copy of the GNU General Public License -- along with GHDL; see the file COPYING. If not, write to the Free -- Software Foundation, 59 Temple Place - Suite 330, Boston, MA -- 02111-1307, USA. package body Nodes_Meta is Fields_Type : constant array (Fields_Enum) of Types_Enum := ( Field_First_Design_Unit => Type_Iir, Field_Last_Design_Unit => Type_Iir, Field_Library_Declaration => Type_Iir, Field_File_Time_Stamp => Type_Time_Stamp_Id, Field_Analysis_Time_Stamp => Type_Time_Stamp_Id, Field_Library => Type_Iir, Field_File_Dependence_List => Type_Iir_List, Field_Design_File_Filename => Type_Name_Id, Field_Design_File_Directory => Type_Name_Id, Field_Design_File => Type_Iir, Field_Design_File_Chain => Type_Iir, Field_Library_Directory => Type_Name_Id, Field_Date => Type_Date_Type, Field_Context_Items => Type_Iir, Field_Dependence_List => Type_Iir_List, Field_Analysis_Checks_List => Type_Iir_List, Field_Date_State => Type_Date_State_Type, Field_Guarded_Target_State => Type_Tri_State_Type, Field_Library_Unit => Type_Iir, Field_Hash_Chain => Type_Iir, Field_Design_Unit_Source_Pos => Type_Source_Ptr, Field_Design_Unit_Source_Line => Type_Int32, Field_Design_Unit_Source_Col => Type_Int32, Field_Value => Type_Iir_Int64, Field_Enum_Pos => Type_Iir_Int32, Field_Physical_Literal => Type_Iir, Field_Physical_Unit_Value => Type_Iir, Field_Fp_Value => Type_Iir_Fp64, Field_Simple_Aggregate_List => Type_Iir_List, Field_String8_Id => Type_String8_Id, Field_String_Length => Type_Int32, Field_Bit_String_Base => Type_Base_Type, Field_Has_Signed => Type_Boolean, Field_Has_Sign => Type_Boolean, Field_Has_Length => Type_Boolean, Field_Literal_Origin => Type_Iir, Field_Range_Origin => Type_Iir, Field_Literal_Subtype => Type_Iir, Field_Entity_Class => Type_Token_Type, Field_Entity_Name_List => Type_Iir_List, Field_Attribute_Designator => Type_Iir, Field_Attribute_Specification_Chain => Type_Iir, Field_Attribute_Specification => Type_Iir, Field_Signal_List => Type_Iir_List, Field_Designated_Entity => Type_Iir, Field_Formal => Type_Iir, Field_Actual => Type_Iir, Field_In_Conversion => Type_Iir, Field_Out_Conversion => Type_Iir, Field_Whole_Association_Flag => Type_Boolean, Field_Collapse_Signal_Flag => Type_Boolean, Field_Artificial_Flag => Type_Boolean, Field_Open_Flag => Type_Boolean, Field_After_Drivers_Flag => Type_Boolean, Field_We_Value => Type_Iir, Field_Time => Type_Iir, Field_Associated_Expr => Type_Iir, Field_Associated_Chain => Type_Iir, Field_Choice_Name => Type_Iir, Field_Choice_Expression => Type_Iir, Field_Choice_Range => Type_Iir, Field_Same_Alternative_Flag => Type_Boolean, Field_Architecture => Type_Iir, Field_Block_Specification => Type_Iir, Field_Prev_Block_Configuration => Type_Iir, Field_Configuration_Item_Chain => Type_Iir, Field_Attribute_Value_Chain => Type_Iir, Field_Spec_Chain => Type_Iir, Field_Attribute_Value_Spec_Chain => Type_Iir, Field_Entity_Name => Type_Iir, Field_Package => Type_Iir, Field_Package_Body => Type_Iir, Field_Need_Body => Type_Boolean, Field_Block_Configuration => Type_Iir, Field_Concurrent_Statement_Chain => Type_Iir, Field_Chain => Type_Iir, Field_Port_Chain => Type_Iir, Field_Generic_Chain => Type_Iir, Field_Type => Type_Iir, Field_Subtype_Indication => Type_Iir, Field_Discrete_Range => Type_Iir, Field_Type_Definition => Type_Iir, Field_Subtype_Definition => Type_Iir, Field_Nature => Type_Iir, Field_Mode => Type_Iir_Mode, Field_Guarded_Signal_Flag => Type_Boolean, Field_Signal_Kind => Type_Iir_Signal_Kind, Field_Base_Name => Type_Iir, Field_Interface_Declaration_Chain => Type_Iir, Field_Subprogram_Specification => Type_Iir, Field_Sequential_Statement_Chain => Type_Iir, Field_Subprogram_Body => Type_Iir, Field_Overload_Number => Type_Iir_Int32, Field_Subprogram_Depth => Type_Iir_Int32, Field_Subprogram_Hash => Type_Iir_Int32, Field_Impure_Depth => Type_Iir_Int32, Field_Return_Type => Type_Iir, Field_Implicit_Definition => Type_Iir_Predefined_Functions, Field_Type_Reference => Type_Iir, Field_Default_Value => Type_Iir, Field_Deferred_Declaration => Type_Iir, Field_Deferred_Declaration_Flag => Type_Boolean, Field_Shared_Flag => Type_Boolean, Field_Design_Unit => Type_Iir, Field_Block_Statement => Type_Iir, Field_Signal_Driver => Type_Iir, Field_Declaration_Chain => Type_Iir, Field_File_Logical_Name => Type_Iir, Field_File_Open_Kind => Type_Iir, Field_Element_Position => Type_Iir_Index32, Field_Element_Declaration => Type_Iir, Field_Selected_Element => Type_Iir, Field_Use_Clause_Chain => Type_Iir, Field_Selected_Name => Type_Iir, Field_Type_Declarator => Type_Iir, Field_Enumeration_Literal_List => Type_Iir_List, Field_Entity_Class_Entry_Chain => Type_Iir, Field_Group_Constituent_List => Type_Iir_List, Field_Unit_Chain => Type_Iir, Field_Primary_Unit => Type_Iir, Field_Identifier => Type_Name_Id, Field_Label => Type_Name_Id, Field_Visible_Flag => Type_Boolean, Field_Range_Constraint => Type_Iir, Field_Direction => Type_Iir_Direction, Field_Left_Limit => Type_Iir, Field_Right_Limit => Type_Iir, Field_Base_Type => Type_Iir, Field_Resolution_Indication => Type_Iir, Field_Record_Element_Resolution_Chain => Type_Iir, Field_Tolerance => Type_Iir, Field_Plus_Terminal => Type_Iir, Field_Minus_Terminal => Type_Iir, Field_Simultaneous_Left => Type_Iir, Field_Simultaneous_Right => Type_Iir, Field_Text_File_Flag => Type_Boolean, Field_Only_Characters_Flag => Type_Boolean, Field_Type_Staticness => Type_Iir_Staticness, Field_Constraint_State => Type_Iir_Constraint, Field_Index_Subtype_List => Type_Iir_List, Field_Index_Subtype_Definition_List => Type_Iir_List, Field_Element_Subtype_Indication => Type_Iir, Field_Element_Subtype => Type_Iir, Field_Index_Constraint_List => Type_Iir_List, Field_Array_Element_Constraint => Type_Iir, Field_Elements_Declaration_List => Type_Iir_List, Field_Designated_Type => Type_Iir, Field_Designated_Subtype_Indication => Type_Iir, Field_Index_List => Type_Iir_List, Field_Reference => Type_Iir, Field_Nature_Declarator => Type_Iir, Field_Across_Type => Type_Iir, Field_Through_Type => Type_Iir, Field_Target => Type_Iir, Field_Waveform_Chain => Type_Iir, Field_Guard => Type_Iir, Field_Delay_Mechanism => Type_Iir_Delay_Mechanism, Field_Reject_Time_Expression => Type_Iir, Field_Sensitivity_List => Type_Iir_List, Field_Process_Origin => Type_Iir, Field_Condition_Clause => Type_Iir, Field_Timeout_Clause => Type_Iir, Field_Postponed_Flag => Type_Boolean, Field_Callees_List => Type_Iir_List, Field_Passive_Flag => Type_Boolean, Field_Resolution_Function_Flag => Type_Boolean, Field_Wait_State => Type_Tri_State_Type, Field_All_Sensitized_State => Type_Iir_All_Sensitized, Field_Seen_Flag => Type_Boolean, Field_Pure_Flag => Type_Boolean, Field_Foreign_Flag => Type_Boolean, Field_Resolved_Flag => Type_Boolean, Field_Signal_Type_Flag => Type_Boolean, Field_Has_Signal_Flag => Type_Boolean, Field_Purity_State => Type_Iir_Pure_State, Field_Elab_Flag => Type_Boolean, Field_Index_Constraint_Flag => Type_Boolean, Field_Assertion_Condition => Type_Iir, Field_Report_Expression => Type_Iir, Field_Severity_Expression => Type_Iir, Field_Instantiated_Unit => Type_Iir, Field_Generic_Map_Aspect_Chain => Type_Iir, Field_Port_Map_Aspect_Chain => Type_Iir, Field_Configuration_Name => Type_Iir, Field_Component_Configuration => Type_Iir, Field_Configuration_Specification => Type_Iir, Field_Default_Binding_Indication => Type_Iir, Field_Default_Configuration_Declaration => Type_Iir, Field_Expression => Type_Iir, Field_Allocator_Designated_Type => Type_Iir, Field_Selected_Waveform_Chain => Type_Iir, Field_Conditional_Waveform_Chain => Type_Iir, Field_Guard_Expression => Type_Iir, Field_Guard_Decl => Type_Iir, Field_Guard_Sensitivity_List => Type_Iir_List, Field_Block_Block_Configuration => Type_Iir, Field_Package_Header => Type_Iir, Field_Block_Header => Type_Iir, Field_Uninstantiated_Package_Name => Type_Iir, Field_Generate_Block_Configuration => Type_Iir, Field_Generate_Statement_Body => Type_Iir, Field_Alternative_Label => Type_Name_Id, Field_Generate_Else_Clause => Type_Iir, Field_Condition => Type_Iir, Field_Else_Clause => Type_Iir, Field_Parameter_Specification => Type_Iir, Field_Parent => Type_Iir, Field_Loop_Label => Type_Iir, Field_Component_Name => Type_Iir, Field_Instantiation_List => Type_Iir_List, Field_Entity_Aspect => Type_Iir, Field_Default_Entity_Aspect => Type_Iir, Field_Default_Generic_Map_Aspect_Chain => Type_Iir, Field_Default_Port_Map_Aspect_Chain => Type_Iir, Field_Binding_Indication => Type_Iir, Field_Named_Entity => Type_Iir, Field_Alias_Declaration => Type_Iir, Field_Expr_Staticness => Type_Iir_Staticness, Field_Error_Origin => Type_Iir, Field_Operand => Type_Iir, Field_Left => Type_Iir, Field_Right => Type_Iir, Field_Unit_Name => Type_Iir, Field_Name => Type_Iir, Field_Group_Template_Name => Type_Iir, Field_Name_Staticness => Type_Iir_Staticness, Field_Prefix => Type_Iir, Field_Signature_Prefix => Type_Iir, Field_Slice_Subtype => Type_Iir, Field_Suffix => Type_Iir, Field_Index_Subtype => Type_Iir, Field_Parameter => Type_Iir, Field_Actual_Type => Type_Iir, Field_Associated_Interface => Type_Iir, Field_Association_Chain => Type_Iir, Field_Individual_Association_Chain => Type_Iir, Field_Aggregate_Info => Type_Iir, Field_Sub_Aggregate_Info => Type_Iir, Field_Aggr_Dynamic_Flag => Type_Boolean, Field_Aggr_Min_Length => Type_Iir_Int32, Field_Aggr_Low_Limit => Type_Iir, Field_Aggr_High_Limit => Type_Iir, Field_Aggr_Others_Flag => Type_Boolean, Field_Aggr_Named_Flag => Type_Boolean, Field_Value_Staticness => Type_Iir_Staticness, Field_Association_Choices_Chain => Type_Iir, Field_Case_Statement_Alternative_Chain => Type_Iir, Field_Choice_Staticness => Type_Iir_Staticness, Field_Procedure_Call => Type_Iir, Field_Implementation => Type_Iir, Field_Parameter_Association_Chain => Type_Iir, Field_Method_Object => Type_Iir, Field_Subtype_Type_Mark => Type_Iir, Field_Type_Conversion_Subtype => Type_Iir, Field_Type_Mark => Type_Iir, Field_File_Type_Mark => Type_Iir, Field_Return_Type_Mark => Type_Iir, Field_Incomplete_Type_List => Type_Iir_List, Field_Has_Disconnect_Flag => Type_Boolean, Field_Has_Active_Flag => Type_Boolean, Field_Is_Within_Flag => Type_Boolean, Field_Type_Marks_List => Type_Iir_List, Field_Implicit_Alias_Flag => Type_Boolean, Field_Alias_Signature => Type_Iir, Field_Attribute_Signature => Type_Iir, Field_Overload_List => Type_Iir_List, Field_Simple_Name_Identifier => Type_Name_Id, Field_Simple_Name_Subtype => Type_Iir, Field_Protected_Type_Body => Type_Iir, Field_Protected_Type_Declaration => Type_Iir, Field_End_Location => Type_Location_Type, Field_Use_Flag => Type_Boolean, Field_End_Has_Reserved_Id => Type_Boolean, Field_End_Has_Identifier => Type_Boolean, Field_End_Has_Postponed => Type_Boolean, Field_Has_Label => Type_Boolean, Field_Has_Begin => Type_Boolean, Field_Has_End => Type_Boolean, Field_Has_Is => Type_Boolean, Field_Has_Pure => Type_Boolean, Field_Has_Body => Type_Boolean, Field_Has_Identifier_List => Type_Boolean, Field_Has_Mode => Type_Boolean, Field_Has_Class => Type_Boolean, Field_Is_Ref => Type_Boolean, Field_Psl_Property => Type_PSL_Node, Field_Psl_Declaration => Type_PSL_Node, Field_Psl_Expression => Type_PSL_Node, Field_Psl_Boolean => Type_PSL_Node, Field_PSL_Clock => Type_PSL_Node, Field_PSL_NFA => Type_PSL_NFA ); function Get_Field_Type (F : Fields_Enum) return Types_Enum is begin return Fields_Type (F); end Get_Field_Type; function Get_Field_Image (F : Fields_Enum) return String is begin case F is when Field_First_Design_Unit => return "first_design_unit"; when Field_Last_Design_Unit => return "last_design_unit"; when Field_Library_Declaration => return "library_declaration"; when Field_File_Time_Stamp => return "file_time_stamp"; when Field_Analysis_Time_Stamp => return "analysis_time_stamp"; when Field_Library => return "library"; when Field_File_Dependence_List => return "file_dependence_list"; when Field_Design_File_Filename => return "design_file_filename"; when Field_Design_File_Directory => return "design_file_directory"; when Field_Design_File => return "design_file"; when Field_Design_File_Chain => return "design_file_chain"; when Field_Library_Directory => return "library_directory"; when Field_Date => return "date"; when Field_Context_Items => return "context_items"; when Field_Dependence_List => return "dependence_list"; when Field_Analysis_Checks_List => return "analysis_checks_list"; when Field_Date_State => return "date_state"; when Field_Guarded_Target_State => return "guarded_target_state"; when Field_Library_Unit => return "library_unit"; when Field_Hash_Chain => return "hash_chain"; when Field_Design_Unit_Source_Pos => return "design_unit_source_pos"; when Field_Design_Unit_Source_Line => return "design_unit_source_line"; when Field_Design_Unit_Source_Col => return "design_unit_source_col"; when Field_Value => return "value"; when Field_Enum_Pos => return "enum_pos"; when Field_Physical_Literal => return "physical_literal"; when Field_Physical_Unit_Value => return "physical_unit_value"; when Field_Fp_Value => return "fp_value"; when Field_Simple_Aggregate_List => return "simple_aggregate_list"; when Field_String8_Id => return "string8_id"; when Field_String_Length => return "string_length"; when Field_Bit_String_Base => return "bit_string_base"; when Field_Has_Signed => return "has_signed"; when Field_Has_Sign => return "has_sign"; when Field_Has_Length => return "has_length"; when Field_Literal_Origin => return "literal_origin"; when Field_Range_Origin => return "range_origin"; when Field_Literal_Subtype => return "literal_subtype"; when Field_Entity_Class => return "entity_class"; when Field_Entity_Name_List => return "entity_name_list"; when Field_Attribute_Designator => return "attribute_designator"; when Field_Attribute_Specification_Chain => return "attribute_specification_chain"; when Field_Attribute_Specification => return "attribute_specification"; when Field_Signal_List => return "signal_list"; when Field_Designated_Entity => return "designated_entity"; when Field_Formal => return "formal"; when Field_Actual => return "actual"; when Field_In_Conversion => return "in_conversion"; when Field_Out_Conversion => return "out_conversion"; when Field_Whole_Association_Flag => return "whole_association_flag"; when Field_Collapse_Signal_Flag => return "collapse_signal_flag"; when Field_Artificial_Flag => return "artificial_flag"; when Field_Open_Flag => return "open_flag"; when Field_After_Drivers_Flag => return "after_drivers_flag"; when Field_We_Value => return "we_value"; when Field_Time => return "time"; when Field_Associated_Expr => return "associated_expr"; when Field_Associated_Chain => return "associated_chain"; when Field_Choice_Name => return "choice_name"; when Field_Choice_Expression => return "choice_expression"; when Field_Choice_Range => return "choice_range"; when Field_Same_Alternative_Flag => return "same_alternative_flag"; when Field_Architecture => return "architecture"; when Field_Block_Specification => return "block_specification"; when Field_Prev_Block_Configuration => return "prev_block_configuration"; when Field_Configuration_Item_Chain => return "configuration_item_chain"; when Field_Attribute_Value_Chain => return "attribute_value_chain"; when Field_Spec_Chain => return "spec_chain"; when Field_Attribute_Value_Spec_Chain => return "attribute_value_spec_chain"; when Field_Entity_Name => return "entity_name"; when Field_Package => return "package"; when Field_Package_Body => return "package_body"; when Field_Need_Body => return "need_body"; when Field_Block_Configuration => return "block_configuration"; when Field_Concurrent_Statement_Chain => return "concurrent_statement_chain"; when Field_Chain => return "chain"; when Field_Port_Chain => return "port_chain"; when Field_Generic_Chain => return "generic_chain"; when Field_Type => return "type"; when Field_Subtype_Indication => return "subtype_indication"; when Field_Discrete_Range => return "discrete_range"; when Field_Type_Definition => return "type_definition"; when Field_Subtype_Definition => return "subtype_definition"; when Field_Nature => return "nature"; when Field_Mode => return "mode"; when Field_Guarded_Signal_Flag => return "guarded_signal_flag"; when Field_Signal_Kind => return "signal_kind"; when Field_Base_Name => return "base_name"; when Field_Interface_Declaration_Chain => return "interface_declaration_chain"; when Field_Subprogram_Specification => return "subprogram_specification"; when Field_Sequential_Statement_Chain => return "sequential_statement_chain"; when Field_Subprogram_Body => return "subprogram_body"; when Field_Overload_Number => return "overload_number"; when Field_Subprogram_Depth => return "subprogram_depth"; when Field_Subprogram_Hash => return "subprogram_hash"; when Field_Impure_Depth => return "impure_depth"; when Field_Return_Type => return "return_type"; when Field_Implicit_Definition => return "implicit_definition"; when Field_Type_Reference => return "type_reference"; when Field_Default_Value => return "default_value"; when Field_Deferred_Declaration => return "deferred_declaration"; when Field_Deferred_Declaration_Flag => return "deferred_declaration_flag"; when Field_Shared_Flag => return "shared_flag"; when Field_Design_Unit => return "design_unit"; when Field_Block_Statement => return "block_statement"; when Field_Signal_Driver => return "signal_driver"; when Field_Declaration_Chain => return "declaration_chain"; when Field_File_Logical_Name => return "file_logical_name"; when Field_File_Open_Kind => return "file_open_kind"; when Field_Element_Position => return "element_position"; when Field_Element_Declaration => return "element_declaration"; when Field_Selected_Element => return "selected_element"; when Field_Use_Clause_Chain => return "use_clause_chain"; when Field_Selected_Name => return "selected_name"; when Field_Type_Declarator => return "type_declarator"; when Field_Enumeration_Literal_List => return "enumeration_literal_list"; when Field_Entity_Class_Entry_Chain => return "entity_class_entry_chain"; when Field_Group_Constituent_List => return "group_constituent_list"; when Field_Unit_Chain => return "unit_chain"; when Field_Primary_Unit => return "primary_unit"; when Field_Identifier => return "identifier"; when Field_Label => return "label"; when Field_Visible_Flag => return "visible_flag"; when Field_Range_Constraint => return "range_constraint"; when Field_Direction => return "direction"; when Field_Left_Limit => return "left_limit"; when Field_Right_Limit => return "right_limit"; when Field_Base_Type => return "base_type"; when Field_Resolution_Indication => return "resolution_indication"; when Field_Record_Element_Resolution_Chain => return "record_element_resolution_chain"; when Field_Tolerance => return "tolerance"; when Field_Plus_Terminal => return "plus_terminal"; when Field_Minus_Terminal => return "minus_terminal"; when Field_Simultaneous_Left => return "simultaneous_left"; when Field_Simultaneous_Right => return "simultaneous_right"; when Field_Text_File_Flag => return "text_file_flag"; when Field_Only_Characters_Flag => return "only_characters_flag"; when Field_Type_Staticness => return "type_staticness"; when Field_Constraint_State => return "constraint_state"; when Field_Index_Subtype_List => return "index_subtype_list"; when Field_Index_Subtype_Definition_List => return "index_subtype_definition_list"; when Field_Element_Subtype_Indication => return "element_subtype_indication"; when Field_Element_Subtype => return "element_subtype"; when Field_Index_Constraint_List => return "index_constraint_list"; when Field_Array_Element_Constraint => return "array_element_constraint"; when Field_Elements_Declaration_List => return "elements_declaration_list"; when Field_Designated_Type => return "designated_type"; when Field_Designated_Subtype_Indication => return "designated_subtype_indication"; when Field_Index_List => return "index_list"; when Field_Reference => return "reference"; when Field_Nature_Declarator => return "nature_declarator"; when Field_Across_Type => return "across_type"; when Field_Through_Type => return "through_type"; when Field_Target => return "target"; when Field_Waveform_Chain => return "waveform_chain"; when Field_Guard => return "guard"; when Field_Delay_Mechanism => return "delay_mechanism"; when Field_Reject_Time_Expression => return "reject_time_expression"; when Field_Sensitivity_List => return "sensitivity_list"; when Field_Process_Origin => return "process_origin"; when Field_Condition_Clause => return "condition_clause"; when Field_Timeout_Clause => return "timeout_clause"; when Field_Postponed_Flag => return "postponed_flag"; when Field_Callees_List => return "callees_list"; when Field_Passive_Flag => return "passive_flag"; when Field_Resolution_Function_Flag => return "resolution_function_flag"; when Field_Wait_State => return "wait_state"; when Field_All_Sensitized_State => return "all_sensitized_state"; when Field_Seen_Flag => return "seen_flag"; when Field_Pure_Flag => return "pure_flag"; when Field_Foreign_Flag => return "foreign_flag"; when Field_Resolved_Flag => return "resolved_flag"; when Field_Signal_Type_Flag => return "signal_type_flag"; when Field_Has_Signal_Flag => return "has_signal_flag"; when Field_Purity_State => return "purity_state"; when Field_Elab_Flag => return "elab_flag"; when Field_Index_Constraint_Flag => return "index_constraint_flag"; when Field_Assertion_Condition => return "assertion_condition"; when Field_Report_Expression => return "report_expression"; when Field_Severity_Expression => return "severity_expression"; when Field_Instantiated_Unit => return "instantiated_unit"; when Field_Generic_Map_Aspect_Chain => return "generic_map_aspect_chain"; when Field_Port_Map_Aspect_Chain => return "port_map_aspect_chain"; when Field_Configuration_Name => return "configuration_name"; when Field_Component_Configuration => return "component_configuration"; when Field_Configuration_Specification => return "configuration_specification"; when Field_Default_Binding_Indication => return "default_binding_indication"; when Field_Default_Configuration_Declaration => return "default_configuration_declaration"; when Field_Expression => return "expression"; when Field_Allocator_Designated_Type => return "allocator_designated_type"; when Field_Selected_Waveform_Chain => return "selected_waveform_chain"; when Field_Conditional_Waveform_Chain => return "conditional_waveform_chain"; when Field_Guard_Expression => return "guard_expression"; when Field_Guard_Decl => return "guard_decl"; when Field_Guard_Sensitivity_List => return "guard_sensitivity_list"; when Field_Block_Block_Configuration => return "block_block_configuration"; when Field_Package_Header => return "package_header"; when Field_Block_Header => return "block_header"; when Field_Uninstantiated_Package_Name => return "uninstantiated_package_name"; when Field_Generate_Block_Configuration => return "generate_block_configuration"; when Field_Generate_Statement_Body => return "generate_statement_body"; when Field_Alternative_Label => return "alternative_label"; when Field_Generate_Else_Clause => return "generate_else_clause"; when Field_Condition => return "condition"; when Field_Else_Clause => return "else_clause"; when Field_Parameter_Specification => return "parameter_specification"; when Field_Parent => return "parent"; when Field_Loop_Label => return "loop_label"; when Field_Component_Name => return "component_name"; when Field_Instantiation_List => return "instantiation_list"; when Field_Entity_Aspect => return "entity_aspect"; when Field_Default_Entity_Aspect => return "default_entity_aspect"; when Field_Default_Generic_Map_Aspect_Chain => return "default_generic_map_aspect_chain"; when Field_Default_Port_Map_Aspect_Chain => return "default_port_map_aspect_chain"; when Field_Binding_Indication => return "binding_indication"; when Field_Named_Entity => return "named_entity"; when Field_Alias_Declaration => return "alias_declaration"; when Field_Expr_Staticness => return "expr_staticness"; when Field_Error_Origin => return "error_origin"; when Field_Operand => return "operand"; when Field_Left => return "left"; when Field_Right => return "right"; when Field_Unit_Name => return "unit_name"; when Field_Name => return "name"; when Field_Group_Template_Name => return "group_template_name"; when Field_Name_Staticness => return "name_staticness"; when Field_Prefix => return "prefix"; when Field_Signature_Prefix => return "signature_prefix"; when Field_Slice_Subtype => return "slice_subtype"; when Field_Suffix => return "suffix"; when Field_Index_Subtype => return "index_subtype"; when Field_Parameter => return "parameter"; when Field_Actual_Type => return "actual_type"; when Field_Associated_Interface => return "associated_interface"; when Field_Association_Chain => return "association_chain"; when Field_Individual_Association_Chain => return "individual_association_chain"; when Field_Aggregate_Info => return "aggregate_info"; when Field_Sub_Aggregate_Info => return "sub_aggregate_info"; when Field_Aggr_Dynamic_Flag => return "aggr_dynamic_flag"; when Field_Aggr_Min_Length => return "aggr_min_length"; when Field_Aggr_Low_Limit => return "aggr_low_limit"; when Field_Aggr_High_Limit => return "aggr_high_limit"; when Field_Aggr_Others_Flag => return "aggr_others_flag"; when Field_Aggr_Named_Flag => return "aggr_named_flag"; when Field_Value_Staticness => return "value_staticness"; when Field_Association_Choices_Chain => return "association_choices_chain"; when Field_Case_Statement_Alternative_Chain => return "case_statement_alternative_chain"; when Field_Choice_Staticness => return "choice_staticness"; when Field_Procedure_Call => return "procedure_call"; when Field_Implementation => return "implementation"; when Field_Parameter_Association_Chain => return "parameter_association_chain"; when Field_Method_Object => return "method_object"; when Field_Subtype_Type_Mark => return "subtype_type_mark"; when Field_Type_Conversion_Subtype => return "type_conversion_subtype"; when Field_Type_Mark => return "type_mark"; when Field_File_Type_Mark => return "file_type_mark"; when Field_Return_Type_Mark => return "return_type_mark"; when Field_Incomplete_Type_List => return "incomplete_type_list"; when Field_Has_Disconnect_Flag => return "has_disconnect_flag"; when Field_Has_Active_Flag => return "has_active_flag"; when Field_Is_Within_Flag => return "is_within_flag"; when Field_Type_Marks_List => return "type_marks_list"; when Field_Implicit_Alias_Flag => return "implicit_alias_flag"; when Field_Alias_Signature => return "alias_signature"; when Field_Attribute_Signature => return "attribute_signature"; when Field_Overload_List => return "overload_list"; when Field_Simple_Name_Identifier => return "simple_name_identifier"; when Field_Simple_Name_Subtype => return "simple_name_subtype"; when Field_Protected_Type_Body => return "protected_type_body"; when Field_Protected_Type_Declaration => return "protected_type_declaration"; when Field_End_Location => return "end_location"; when Field_Use_Flag => return "use_flag"; when Field_End_Has_Reserved_Id => return "end_has_reserved_id"; when Field_End_Has_Identifier => return "end_has_identifier"; when Field_End_Has_Postponed => return "end_has_postponed"; when Field_Has_Label => return "has_label"; when Field_Has_Begin => return "has_begin"; when Field_Has_End => return "has_end"; when Field_Has_Is => return "has_is"; when Field_Has_Pure => return "has_pure"; when Field_Has_Body => return "has_body"; when Field_Has_Identifier_List => return "has_identifier_list"; when Field_Has_Mode => return "has_mode"; when Field_Has_Class => return "has_class"; when Field_Is_Ref => return "is_ref"; when Field_Psl_Property => return "psl_property"; when Field_Psl_Declaration => return "psl_declaration"; when Field_Psl_Expression => return "psl_expression"; when Field_Psl_Boolean => return "psl_boolean"; when Field_PSL_Clock => return "psl_clock"; when Field_PSL_NFA => return "psl_nfa"; end case; end Get_Field_Image; function Get_Iir_Image (K : Iir_Kind) return String is begin case K is when Iir_Kind_Unused => return "unused"; when Iir_Kind_Error => return "error"; when Iir_Kind_Design_File => return "design_file"; when Iir_Kind_Design_Unit => return "design_unit"; when Iir_Kind_Library_Clause => return "library_clause"; when Iir_Kind_Use_Clause => return "use_clause"; when Iir_Kind_Integer_Literal => return "integer_literal"; when Iir_Kind_Floating_Point_Literal => return "floating_point_literal"; when Iir_Kind_Null_Literal => return "null_literal"; when Iir_Kind_String_Literal8 => return "string_literal8"; when Iir_Kind_Physical_Int_Literal => return "physical_int_literal"; when Iir_Kind_Physical_Fp_Literal => return "physical_fp_literal"; when Iir_Kind_Simple_Aggregate => return "simple_aggregate"; when Iir_Kind_Overflow_Literal => return "overflow_literal"; when Iir_Kind_Waveform_Element => return "waveform_element"; when Iir_Kind_Conditional_Waveform => return "conditional_waveform"; when Iir_Kind_Association_Element_By_Expression => return "association_element_by_expression"; when Iir_Kind_Association_Element_By_Individual => return "association_element_by_individual"; when Iir_Kind_Association_Element_Open => return "association_element_open"; when Iir_Kind_Association_Element_Package => return "association_element_package"; when Iir_Kind_Choice_By_Others => return "choice_by_others"; when Iir_Kind_Choice_By_Expression => return "choice_by_expression"; when Iir_Kind_Choice_By_Range => return "choice_by_range"; when Iir_Kind_Choice_By_None => return "choice_by_none"; when Iir_Kind_Choice_By_Name => return "choice_by_name"; when Iir_Kind_Entity_Aspect_Entity => return "entity_aspect_entity"; when Iir_Kind_Entity_Aspect_Configuration => return "entity_aspect_configuration"; when Iir_Kind_Entity_Aspect_Open => return "entity_aspect_open"; when Iir_Kind_Block_Configuration => return "block_configuration"; when Iir_Kind_Block_Header => return "block_header"; when Iir_Kind_Component_Configuration => return "component_configuration"; when Iir_Kind_Binding_Indication => return "binding_indication"; when Iir_Kind_Entity_Class => return "entity_class"; when Iir_Kind_Attribute_Value => return "attribute_value"; when Iir_Kind_Signature => return "signature"; when Iir_Kind_Aggregate_Info => return "aggregate_info"; when Iir_Kind_Procedure_Call => return "procedure_call"; when Iir_Kind_Record_Element_Constraint => return "record_element_constraint"; when Iir_Kind_Array_Element_Resolution => return "array_element_resolution"; when Iir_Kind_Record_Resolution => return "record_resolution"; when Iir_Kind_Record_Element_Resolution => return "record_element_resolution"; when Iir_Kind_Attribute_Specification => return "attribute_specification"; when Iir_Kind_Disconnection_Specification => return "disconnection_specification"; when Iir_Kind_Configuration_Specification => return "configuration_specification"; when Iir_Kind_Access_Type_Definition => return "access_type_definition"; when Iir_Kind_Incomplete_Type_Definition => return "incomplete_type_definition"; when Iir_Kind_File_Type_Definition => return "file_type_definition"; when Iir_Kind_Protected_Type_Declaration => return "protected_type_declaration"; when Iir_Kind_Record_Type_Definition => return "record_type_definition"; when Iir_Kind_Array_Type_Definition => return "array_type_definition"; when Iir_Kind_Array_Subtype_Definition => return "array_subtype_definition"; when Iir_Kind_Record_Subtype_Definition => return "record_subtype_definition"; when Iir_Kind_Access_Subtype_Definition => return "access_subtype_definition"; when Iir_Kind_Physical_Subtype_Definition => return "physical_subtype_definition"; when Iir_Kind_Floating_Subtype_Definition => return "floating_subtype_definition"; when Iir_Kind_Integer_Subtype_Definition => return "integer_subtype_definition"; when Iir_Kind_Enumeration_Subtype_Definition => return "enumeration_subtype_definition"; when Iir_Kind_Enumeration_Type_Definition => return "enumeration_type_definition"; when Iir_Kind_Integer_Type_Definition => return "integer_type_definition"; when Iir_Kind_Floating_Type_Definition => return "floating_type_definition"; when Iir_Kind_Physical_Type_Definition => return "physical_type_definition"; when Iir_Kind_Range_Expression => return "range_expression"; when Iir_Kind_Protected_Type_Body => return "protected_type_body"; when Iir_Kind_Subtype_Definition => return "subtype_definition"; when Iir_Kind_Scalar_Nature_Definition => return "scalar_nature_definition"; when Iir_Kind_Overload_List => return "overload_list"; when Iir_Kind_Type_Declaration => return "type_declaration"; when Iir_Kind_Anonymous_Type_Declaration => return "anonymous_type_declaration"; when Iir_Kind_Subtype_Declaration => return "subtype_declaration"; when Iir_Kind_Nature_Declaration => return "nature_declaration"; when Iir_Kind_Subnature_Declaration => return "subnature_declaration"; when Iir_Kind_Package_Declaration => return "package_declaration"; when Iir_Kind_Package_Instantiation_Declaration => return "package_instantiation_declaration"; when Iir_Kind_Package_Body => return "package_body"; when Iir_Kind_Configuration_Declaration => return "configuration_declaration"; when Iir_Kind_Entity_Declaration => return "entity_declaration"; when Iir_Kind_Architecture_Body => return "architecture_body"; when Iir_Kind_Package_Header => return "package_header"; when Iir_Kind_Unit_Declaration => return "unit_declaration"; when Iir_Kind_Library_Declaration => return "library_declaration"; when Iir_Kind_Component_Declaration => return "component_declaration"; when Iir_Kind_Attribute_Declaration => return "attribute_declaration"; when Iir_Kind_Group_Template_Declaration => return "group_template_declaration"; when Iir_Kind_Group_Declaration => return "group_declaration"; when Iir_Kind_Element_Declaration => return "element_declaration"; when Iir_Kind_Non_Object_Alias_Declaration => return "non_object_alias_declaration"; when Iir_Kind_Psl_Declaration => return "psl_declaration"; when Iir_Kind_Terminal_Declaration => return "terminal_declaration"; when Iir_Kind_Free_Quantity_Declaration => return "free_quantity_declaration"; when Iir_Kind_Across_Quantity_Declaration => return "across_quantity_declaration"; when Iir_Kind_Through_Quantity_Declaration => return "through_quantity_declaration"; when Iir_Kind_Enumeration_Literal => return "enumeration_literal"; when Iir_Kind_Function_Declaration => return "function_declaration"; when Iir_Kind_Procedure_Declaration => return "procedure_declaration"; when Iir_Kind_Function_Body => return "function_body"; when Iir_Kind_Procedure_Body => return "procedure_body"; when Iir_Kind_Object_Alias_Declaration => return "object_alias_declaration"; when Iir_Kind_File_Declaration => return "file_declaration"; when Iir_Kind_Guard_Signal_Declaration => return "guard_signal_declaration"; when Iir_Kind_Signal_Declaration => return "signal_declaration"; when Iir_Kind_Variable_Declaration => return "variable_declaration"; when Iir_Kind_Constant_Declaration => return "constant_declaration"; when Iir_Kind_Iterator_Declaration => return "iterator_declaration"; when Iir_Kind_Interface_Constant_Declaration => return "interface_constant_declaration"; when Iir_Kind_Interface_Variable_Declaration => return "interface_variable_declaration"; when Iir_Kind_Interface_Signal_Declaration => return "interface_signal_declaration"; when Iir_Kind_Interface_File_Declaration => return "interface_file_declaration"; when Iir_Kind_Interface_Package_Declaration => return "interface_package_declaration"; when Iir_Kind_Identity_Operator => return "identity_operator"; when Iir_Kind_Negation_Operator => return "negation_operator"; when Iir_Kind_Absolute_Operator => return "absolute_operator"; when Iir_Kind_Not_Operator => return "not_operator"; when Iir_Kind_Condition_Operator => return "condition_operator"; when Iir_Kind_Reduction_And_Operator => return "reduction_and_operator"; when Iir_Kind_Reduction_Or_Operator => return "reduction_or_operator"; when Iir_Kind_Reduction_Nand_Operator => return "reduction_nand_operator"; when Iir_Kind_Reduction_Nor_Operator => return "reduction_nor_operator"; when Iir_Kind_Reduction_Xor_Operator => return "reduction_xor_operator"; when Iir_Kind_Reduction_Xnor_Operator => return "reduction_xnor_operator"; when Iir_Kind_And_Operator => return "and_operator"; when Iir_Kind_Or_Operator => return "or_operator"; when Iir_Kind_Nand_Operator => return "nand_operator"; when Iir_Kind_Nor_Operator => return "nor_operator"; when Iir_Kind_Xor_Operator => return "xor_operator"; when Iir_Kind_Xnor_Operator => return "xnor_operator"; when Iir_Kind_Equality_Operator => return "equality_operator"; when Iir_Kind_Inequality_Operator => return "inequality_operator"; when Iir_Kind_Less_Than_Operator => return "less_than_operator"; when Iir_Kind_Less_Than_Or_Equal_Operator => return "less_than_or_equal_operator"; when Iir_Kind_Greater_Than_Operator => return "greater_than_operator"; when Iir_Kind_Greater_Than_Or_Equal_Operator => return "greater_than_or_equal_operator"; when Iir_Kind_Match_Equality_Operator => return "match_equality_operator"; when Iir_Kind_Match_Inequality_Operator => return "match_inequality_operator"; when Iir_Kind_Match_Less_Than_Operator => return "match_less_than_operator"; when Iir_Kind_Match_Less_Than_Or_Equal_Operator => return "match_less_than_or_equal_operator"; when Iir_Kind_Match_Greater_Than_Operator => return "match_greater_than_operator"; when Iir_Kind_Match_Greater_Than_Or_Equal_Operator => return "match_greater_than_or_equal_operator"; when Iir_Kind_Sll_Operator => return "sll_operator"; when Iir_Kind_Sla_Operator => return "sla_operator"; when Iir_Kind_Srl_Operator => return "srl_operator"; when Iir_Kind_Sra_Operator => return "sra_operator"; when Iir_Kind_Rol_Operator => return "rol_operator"; when Iir_Kind_Ror_Operator => return "ror_operator"; when Iir_Kind_Addition_Operator => return "addition_operator"; when Iir_Kind_Substraction_Operator => return "substraction_operator"; when Iir_Kind_Concatenation_Operator => return "concatenation_operator"; when Iir_Kind_Multiplication_Operator => return "multiplication_operator"; when Iir_Kind_Division_Operator => return "division_operator"; when Iir_Kind_Modulus_Operator => return "modulus_operator"; when Iir_Kind_Remainder_Operator => return "remainder_operator"; when Iir_Kind_Exponentiation_Operator => return "exponentiation_operator"; when Iir_Kind_Function_Call => return "function_call"; when Iir_Kind_Aggregate => return "aggregate"; when Iir_Kind_Parenthesis_Expression => return "parenthesis_expression"; when Iir_Kind_Qualified_Expression => return "qualified_expression"; when Iir_Kind_Type_Conversion => return "type_conversion"; when Iir_Kind_Allocator_By_Expression => return "allocator_by_expression"; when Iir_Kind_Allocator_By_Subtype => return "allocator_by_subtype"; when Iir_Kind_Selected_Element => return "selected_element"; when Iir_Kind_Dereference => return "dereference"; when Iir_Kind_Implicit_Dereference => return "implicit_dereference"; when Iir_Kind_Slice_Name => return "slice_name"; when Iir_Kind_Indexed_Name => return "indexed_name"; when Iir_Kind_Psl_Expression => return "psl_expression"; when Iir_Kind_Sensitized_Process_Statement => return "sensitized_process_statement"; when Iir_Kind_Process_Statement => return "process_statement"; when Iir_Kind_Concurrent_Conditional_Signal_Assignment => return "concurrent_conditional_signal_assignment"; when Iir_Kind_Concurrent_Selected_Signal_Assignment => return "concurrent_selected_signal_assignment"; when Iir_Kind_Concurrent_Assertion_Statement => return "concurrent_assertion_statement"; when Iir_Kind_Psl_Default_Clock => return "psl_default_clock"; when Iir_Kind_Psl_Assert_Statement => return "psl_assert_statement"; when Iir_Kind_Psl_Cover_Statement => return "psl_cover_statement"; when Iir_Kind_Concurrent_Procedure_Call_Statement => return "concurrent_procedure_call_statement"; when Iir_Kind_Block_Statement => return "block_statement"; when Iir_Kind_If_Generate_Statement => return "if_generate_statement"; when Iir_Kind_For_Generate_Statement => return "for_generate_statement"; when Iir_Kind_Component_Instantiation_Statement => return "component_instantiation_statement"; when Iir_Kind_Simple_Simultaneous_Statement => return "simple_simultaneous_statement"; when Iir_Kind_Generate_Statement_Body => return "generate_statement_body"; when Iir_Kind_If_Generate_Else_Clause => return "if_generate_else_clause"; when Iir_Kind_Signal_Assignment_Statement => return "signal_assignment_statement"; when Iir_Kind_Null_Statement => return "null_statement"; when Iir_Kind_Assertion_Statement => return "assertion_statement"; when Iir_Kind_Report_Statement => return "report_statement"; when Iir_Kind_Wait_Statement => return "wait_statement"; when Iir_Kind_Variable_Assignment_Statement => return "variable_assignment_statement"; when Iir_Kind_Return_Statement => return "return_statement"; when Iir_Kind_For_Loop_Statement => return "for_loop_statement"; when Iir_Kind_While_Loop_Statement => return "while_loop_statement"; when Iir_Kind_Next_Statement => return "next_statement"; when Iir_Kind_Exit_Statement => return "exit_statement"; when Iir_Kind_Case_Statement => return "case_statement"; when Iir_Kind_Procedure_Call_Statement => return "procedure_call_statement"; when Iir_Kind_If_Statement => return "if_statement"; when Iir_Kind_Elsif => return "elsif"; when Iir_Kind_Character_Literal => return "character_literal"; when Iir_Kind_Simple_Name => return "simple_name"; when Iir_Kind_Selected_Name => return "selected_name"; when Iir_Kind_Operator_Symbol => return "operator_symbol"; when Iir_Kind_Selected_By_All_Name => return "selected_by_all_name"; when Iir_Kind_Parenthesis_Name => return "parenthesis_name"; when Iir_Kind_Base_Attribute => return "base_attribute"; when Iir_Kind_Left_Type_Attribute => return "left_type_attribute"; when Iir_Kind_Right_Type_Attribute => return "right_type_attribute"; when Iir_Kind_High_Type_Attribute => return "high_type_attribute"; when Iir_Kind_Low_Type_Attribute => return "low_type_attribute"; when Iir_Kind_Ascending_Type_Attribute => return "ascending_type_attribute"; when Iir_Kind_Image_Attribute => return "image_attribute"; when Iir_Kind_Value_Attribute => return "value_attribute"; when Iir_Kind_Pos_Attribute => return "pos_attribute"; when Iir_Kind_Val_Attribute => return "val_attribute"; when Iir_Kind_Succ_Attribute => return "succ_attribute"; when Iir_Kind_Pred_Attribute => return "pred_attribute"; when Iir_Kind_Leftof_Attribute => return "leftof_attribute"; when Iir_Kind_Rightof_Attribute => return "rightof_attribute"; when Iir_Kind_Delayed_Attribute => return "delayed_attribute"; when Iir_Kind_Stable_Attribute => return "stable_attribute"; when Iir_Kind_Quiet_Attribute => return "quiet_attribute"; when Iir_Kind_Transaction_Attribute => return "transaction_attribute"; when Iir_Kind_Event_Attribute => return "event_attribute"; when Iir_Kind_Active_Attribute => return "active_attribute"; when Iir_Kind_Last_Event_Attribute => return "last_event_attribute"; when Iir_Kind_Last_Active_Attribute => return "last_active_attribute"; when Iir_Kind_Last_Value_Attribute => return "last_value_attribute"; when Iir_Kind_Driving_Attribute => return "driving_attribute"; when Iir_Kind_Driving_Value_Attribute => return "driving_value_attribute"; when Iir_Kind_Behavior_Attribute => return "behavior_attribute"; when Iir_Kind_Structure_Attribute => return "structure_attribute"; when Iir_Kind_Simple_Name_Attribute => return "simple_name_attribute"; when Iir_Kind_Instance_Name_Attribute => return "instance_name_attribute"; when Iir_Kind_Path_Name_Attribute => return "path_name_attribute"; when Iir_Kind_Left_Array_Attribute => return "left_array_attribute"; when Iir_Kind_Right_Array_Attribute => return "right_array_attribute"; when Iir_Kind_High_Array_Attribute => return "high_array_attribute"; when Iir_Kind_Low_Array_Attribute => return "low_array_attribute"; when Iir_Kind_Length_Array_Attribute => return "length_array_attribute"; when Iir_Kind_Ascending_Array_Attribute => return "ascending_array_attribute"; when Iir_Kind_Range_Array_Attribute => return "range_array_attribute"; when Iir_Kind_Reverse_Range_Array_Attribute => return "reverse_range_array_attribute"; when Iir_Kind_Attribute_Name => return "attribute_name"; end case; end Get_Iir_Image; function Get_Field_Attribute (F : Fields_Enum) return Field_Attribute is begin case F is when Field_First_Design_Unit => return Attr_Chain; when Field_Last_Design_Unit => return Attr_Ref; when Field_Library_Declaration => return Attr_None; when Field_File_Time_Stamp => return Attr_None; when Field_Analysis_Time_Stamp => return Attr_None; when Field_Library => return Attr_Ref; when Field_File_Dependence_List => return Attr_None; when Field_Design_File_Filename => return Attr_None; when Field_Design_File_Directory => return Attr_None; when Field_Design_File => return Attr_Ref; when Field_Design_File_Chain => return Attr_Chain; when Field_Library_Directory => return Attr_None; when Field_Date => return Attr_None; when Field_Context_Items => return Attr_Chain; when Field_Dependence_List => return Attr_Of_Ref; when Field_Analysis_Checks_List => return Attr_None; when Field_Date_State => return Attr_None; when Field_Guarded_Target_State => return Attr_None; when Field_Library_Unit => return Attr_None; when Field_Hash_Chain => return Attr_Ref; when Field_Design_Unit_Source_Pos => return Attr_None; when Field_Design_Unit_Source_Line => return Attr_None; when Field_Design_Unit_Source_Col => return Attr_None; when Field_Value => return Attr_None; when Field_Enum_Pos => return Attr_None; when Field_Physical_Literal => return Attr_None; when Field_Physical_Unit_Value => return Attr_None; when Field_Fp_Value => return Attr_None; when Field_Simple_Aggregate_List => return Attr_None; when Field_String8_Id => return Attr_None; when Field_String_Length => return Attr_None; when Field_Bit_String_Base => return Attr_None; when Field_Has_Signed => return Attr_None; when Field_Has_Sign => return Attr_None; when Field_Has_Length => return Attr_None; when Field_Literal_Origin => return Attr_None; when Field_Range_Origin => return Attr_None; when Field_Literal_Subtype => return Attr_None; when Field_Entity_Class => return Attr_None; when Field_Entity_Name_List => return Attr_None; when Field_Attribute_Designator => return Attr_None; when Field_Attribute_Specification_Chain => return Attr_None; when Field_Attribute_Specification => return Attr_Ref; when Field_Signal_List => return Attr_None; when Field_Designated_Entity => return Attr_Ref; when Field_Formal => return Attr_None; when Field_Actual => return Attr_None; when Field_In_Conversion => return Attr_None; when Field_Out_Conversion => return Attr_None; when Field_Whole_Association_Flag => return Attr_None; when Field_Collapse_Signal_Flag => return Attr_None; when Field_Artificial_Flag => return Attr_None; when Field_Open_Flag => return Attr_None; when Field_After_Drivers_Flag => return Attr_None; when Field_We_Value => return Attr_None; when Field_Time => return Attr_None; when Field_Associated_Expr => return Attr_None; when Field_Associated_Chain => return Attr_Chain; when Field_Choice_Name => return Attr_None; when Field_Choice_Expression => return Attr_None; when Field_Choice_Range => return Attr_None; when Field_Same_Alternative_Flag => return Attr_None; when Field_Architecture => return Attr_None; when Field_Block_Specification => return Attr_None; when Field_Prev_Block_Configuration => return Attr_Ref; when Field_Configuration_Item_Chain => return Attr_Chain; when Field_Attribute_Value_Chain => return Attr_Chain; when Field_Spec_Chain => return Attr_None; when Field_Attribute_Value_Spec_Chain => return Attr_None; when Field_Entity_Name => return Attr_None; when Field_Package => return Attr_Ref; when Field_Package_Body => return Attr_Ref; when Field_Need_Body => return Attr_None; when Field_Block_Configuration => return Attr_None; when Field_Concurrent_Statement_Chain => return Attr_Chain; when Field_Chain => return Attr_Chain_Next; when Field_Port_Chain => return Attr_Chain; when Field_Generic_Chain => return Attr_Chain; when Field_Type => return Attr_Ref; when Field_Subtype_Indication => return Attr_Maybe_Ref; when Field_Discrete_Range => return Attr_None; when Field_Type_Definition => return Attr_None; when Field_Subtype_Definition => return Attr_None; when Field_Nature => return Attr_None; when Field_Mode => return Attr_None; when Field_Guarded_Signal_Flag => return Attr_None; when Field_Signal_Kind => return Attr_None; when Field_Base_Name => return Attr_Ref; when Field_Interface_Declaration_Chain => return Attr_Chain; when Field_Subprogram_Specification => return Attr_Ref; when Field_Sequential_Statement_Chain => return Attr_Chain; when Field_Subprogram_Body => return Attr_Ref; when Field_Overload_Number => return Attr_None; when Field_Subprogram_Depth => return Attr_None; when Field_Subprogram_Hash => return Attr_None; when Field_Impure_Depth => return Attr_None; when Field_Return_Type => return Attr_Ref; when Field_Implicit_Definition => return Attr_None; when Field_Type_Reference => return Attr_Ref; when Field_Default_Value => return Attr_Maybe_Ref; when Field_Deferred_Declaration => return Attr_None; when Field_Deferred_Declaration_Flag => return Attr_None; when Field_Shared_Flag => return Attr_None; when Field_Design_Unit => return Attr_None; when Field_Block_Statement => return Attr_None; when Field_Signal_Driver => return Attr_None; when Field_Declaration_Chain => return Attr_Chain; when Field_File_Logical_Name => return Attr_None; when Field_File_Open_Kind => return Attr_None; when Field_Element_Position => return Attr_None; when Field_Element_Declaration => return Attr_None; when Field_Selected_Element => return Attr_Ref; when Field_Use_Clause_Chain => return Attr_None; when Field_Selected_Name => return Attr_None; when Field_Type_Declarator => return Attr_Ref; when Field_Enumeration_Literal_List => return Attr_None; when Field_Entity_Class_Entry_Chain => return Attr_Chain; when Field_Group_Constituent_List => return Attr_None; when Field_Unit_Chain => return Attr_Chain; when Field_Primary_Unit => return Attr_Ref; when Field_Identifier => return Attr_None; when Field_Label => return Attr_None; when Field_Visible_Flag => return Attr_None; when Field_Range_Constraint => return Attr_None; when Field_Direction => return Attr_None; when Field_Left_Limit => return Attr_None; when Field_Right_Limit => return Attr_None; when Field_Base_Type => return Attr_Ref; when Field_Resolution_Indication => return Attr_None; when Field_Record_Element_Resolution_Chain => return Attr_Chain; when Field_Tolerance => return Attr_None; when Field_Plus_Terminal => return Attr_None; when Field_Minus_Terminal => return Attr_None; when Field_Simultaneous_Left => return Attr_None; when Field_Simultaneous_Right => return Attr_None; when Field_Text_File_Flag => return Attr_None; when Field_Only_Characters_Flag => return Attr_None; when Field_Type_Staticness => return Attr_None; when Field_Constraint_State => return Attr_None; when Field_Index_Subtype_List => return Attr_Ref; when Field_Index_Subtype_Definition_List => return Attr_None; when Field_Element_Subtype_Indication => return Attr_None; when Field_Element_Subtype => return Attr_Ref; when Field_Index_Constraint_List => return Attr_None; when Field_Array_Element_Constraint => return Attr_None; when Field_Elements_Declaration_List => return Attr_None; when Field_Designated_Type => return Attr_Ref; when Field_Designated_Subtype_Indication => return Attr_None; when Field_Index_List => return Attr_None; when Field_Reference => return Attr_None; when Field_Nature_Declarator => return Attr_None; when Field_Across_Type => return Attr_None; when Field_Through_Type => return Attr_None; when Field_Target => return Attr_None; when Field_Waveform_Chain => return Attr_Chain; when Field_Guard => return Attr_None; when Field_Delay_Mechanism => return Attr_None; when Field_Reject_Time_Expression => return Attr_None; when Field_Sensitivity_List => return Attr_None; when Field_Process_Origin => return Attr_None; when Field_Condition_Clause => return Attr_None; when Field_Timeout_Clause => return Attr_None; when Field_Postponed_Flag => return Attr_None; when Field_Callees_List => return Attr_Of_Ref; when Field_Passive_Flag => return Attr_None; when Field_Resolution_Function_Flag => return Attr_None; when Field_Wait_State => return Attr_None; when Field_All_Sensitized_State => return Attr_None; when Field_Seen_Flag => return Attr_None; when Field_Pure_Flag => return Attr_None; when Field_Foreign_Flag => return Attr_None; when Field_Resolved_Flag => return Attr_None; when Field_Signal_Type_Flag => return Attr_None; when Field_Has_Signal_Flag => return Attr_None; when Field_Purity_State => return Attr_None; when Field_Elab_Flag => return Attr_None; when Field_Index_Constraint_Flag => return Attr_None; when Field_Assertion_Condition => return Attr_None; when Field_Report_Expression => return Attr_None; when Field_Severity_Expression => return Attr_None; when Field_Instantiated_Unit => return Attr_None; when Field_Generic_Map_Aspect_Chain => return Attr_Chain; when Field_Port_Map_Aspect_Chain => return Attr_Chain; when Field_Configuration_Name => return Attr_None; when Field_Component_Configuration => return Attr_None; when Field_Configuration_Specification => return Attr_None; when Field_Default_Binding_Indication => return Attr_None; when Field_Default_Configuration_Declaration => return Attr_None; when Field_Expression => return Attr_None; when Field_Allocator_Designated_Type => return Attr_Ref; when Field_Selected_Waveform_Chain => return Attr_Chain; when Field_Conditional_Waveform_Chain => return Attr_Chain; when Field_Guard_Expression => return Attr_None; when Field_Guard_Decl => return Attr_None; when Field_Guard_Sensitivity_List => return Attr_None; when Field_Block_Block_Configuration => return Attr_None; when Field_Package_Header => return Attr_None; when Field_Block_Header => return Attr_None; when Field_Uninstantiated_Package_Name => return Attr_None; when Field_Generate_Block_Configuration => return Attr_None; when Field_Generate_Statement_Body => return Attr_None; when Field_Alternative_Label => return Attr_None; when Field_Generate_Else_Clause => return Attr_None; when Field_Condition => return Attr_None; when Field_Else_Clause => return Attr_None; when Field_Parameter_Specification => return Attr_None; when Field_Parent => return Attr_Ref; when Field_Loop_Label => return Attr_None; when Field_Component_Name => return Attr_None; when Field_Instantiation_List => return Attr_None; when Field_Entity_Aspect => return Attr_None; when Field_Default_Entity_Aspect => return Attr_None; when Field_Default_Generic_Map_Aspect_Chain => return Attr_Chain; when Field_Default_Port_Map_Aspect_Chain => return Attr_Chain; when Field_Binding_Indication => return Attr_None; when Field_Named_Entity => return Attr_Ref; when Field_Alias_Declaration => return Attr_None; when Field_Expr_Staticness => return Attr_None; when Field_Error_Origin => return Attr_None; when Field_Operand => return Attr_None; when Field_Left => return Attr_None; when Field_Right => return Attr_None; when Field_Unit_Name => return Attr_None; when Field_Name => return Attr_None; when Field_Group_Template_Name => return Attr_None; when Field_Name_Staticness => return Attr_None; when Field_Prefix => return Attr_None; when Field_Signature_Prefix => return Attr_Ref; when Field_Slice_Subtype => return Attr_None; when Field_Suffix => return Attr_None; when Field_Index_Subtype => return Attr_None; when Field_Parameter => return Attr_None; when Field_Actual_Type => return Attr_None; when Field_Associated_Interface => return Attr_Ref; when Field_Association_Chain => return Attr_Chain; when Field_Individual_Association_Chain => return Attr_Chain; when Field_Aggregate_Info => return Attr_None; when Field_Sub_Aggregate_Info => return Attr_None; when Field_Aggr_Dynamic_Flag => return Attr_None; when Field_Aggr_Min_Length => return Attr_None; when Field_Aggr_Low_Limit => return Attr_None; when Field_Aggr_High_Limit => return Attr_None; when Field_Aggr_Others_Flag => return Attr_None; when Field_Aggr_Named_Flag => return Attr_None; when Field_Value_Staticness => return Attr_None; when Field_Association_Choices_Chain => return Attr_Chain; when Field_Case_Statement_Alternative_Chain => return Attr_Chain; when Field_Choice_Staticness => return Attr_None; when Field_Procedure_Call => return Attr_None; when Field_Implementation => return Attr_Ref; when Field_Parameter_Association_Chain => return Attr_Chain; when Field_Method_Object => return Attr_None; when Field_Subtype_Type_Mark => return Attr_None; when Field_Type_Conversion_Subtype => return Attr_None; when Field_Type_Mark => return Attr_None; when Field_File_Type_Mark => return Attr_None; when Field_Return_Type_Mark => return Attr_None; when Field_Incomplete_Type_List => return Attr_None; when Field_Has_Disconnect_Flag => return Attr_None; when Field_Has_Active_Flag => return Attr_None; when Field_Is_Within_Flag => return Attr_None; when Field_Type_Marks_List => return Attr_None; when Field_Implicit_Alias_Flag => return Attr_None; when Field_Alias_Signature => return Attr_None; when Field_Attribute_Signature => return Attr_None; when Field_Overload_List => return Attr_Of_Ref; when Field_Simple_Name_Identifier => return Attr_None; when Field_Simple_Name_Subtype => return Attr_None; when Field_Protected_Type_Body => return Attr_None; when Field_Protected_Type_Declaration => return Attr_None; when Field_End_Location => return Attr_None; when Field_Use_Flag => return Attr_None; when Field_End_Has_Reserved_Id => return Attr_None; when Field_End_Has_Identifier => return Attr_None; when Field_End_Has_Postponed => return Attr_None; when Field_Has_Label => return Attr_None; when Field_Has_Begin => return Attr_None; when Field_Has_End => return Attr_None; when Field_Has_Is => return Attr_None; when Field_Has_Pure => return Attr_None; when Field_Has_Body => return Attr_None; when Field_Has_Identifier_List => return Attr_None; when Field_Has_Mode => return Attr_None; when Field_Has_Class => return Attr_None; when Field_Is_Ref => return Attr_None; when Field_Psl_Property => return Attr_None; when Field_Psl_Declaration => return Attr_None; when Field_Psl_Expression => return Attr_None; when Field_Psl_Boolean => return Attr_None; when Field_PSL_Clock => return Attr_None; when Field_PSL_NFA => return Attr_None; end case; end Get_Field_Attribute; Fields_Of_Iir : constant Fields_Array := ( -- Iir_Kind_Unused -- Iir_Kind_Error Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Expr_Staticness, Field_Error_Origin, Field_Type, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Design_File Field_Design_File_Directory, Field_Design_File_Filename, Field_Analysis_Time_Stamp, Field_File_Time_Stamp, Field_Elab_Flag, Field_File_Dependence_List, Field_Chain, Field_First_Design_Unit, Field_Library, Field_Last_Design_Unit, -- Iir_Kind_Design_Unit Field_Design_Unit_Source_Pos, Field_Design_Unit_Source_Line, Field_Design_Unit_Source_Col, Field_Identifier, Field_Date, Field_End_Location, Field_Elab_Flag, Field_Date_State, Field_Context_Items, Field_Chain, Field_Library_Unit, Field_Analysis_Checks_List, Field_Design_File, Field_Hash_Chain, Field_Dependence_List, -- Iir_Kind_Library_Clause Field_Identifier, Field_Has_Identifier_List, Field_Library_Declaration, Field_Chain, Field_Parent, -- Iir_Kind_Use_Clause Field_Selected_Name, Field_Chain, Field_Use_Clause_Chain, Field_Parent, -- Iir_Kind_Integer_Literal Field_Value, Field_Expr_Staticness, Field_Literal_Origin, Field_Type, -- Iir_Kind_Floating_Point_Literal Field_Fp_Value, Field_Expr_Staticness, Field_Literal_Origin, Field_Type, -- Iir_Kind_Null_Literal Field_Expr_Staticness, Field_Type, -- Iir_Kind_String_Literal8 Field_String_Length, Field_String8_Id, Field_Has_Signed, Field_Has_Sign, Field_Has_Length, Field_Bit_String_Base, Field_Expr_Staticness, Field_Literal_Origin, Field_Literal_Subtype, Field_Type, -- Iir_Kind_Physical_Int_Literal Field_Value, Field_Expr_Staticness, Field_Literal_Origin, Field_Unit_Name, Field_Type, -- Iir_Kind_Physical_Fp_Literal Field_Fp_Value, Field_Expr_Staticness, Field_Literal_Origin, Field_Unit_Name, Field_Type, -- Iir_Kind_Simple_Aggregate Field_Expr_Staticness, Field_Literal_Origin, Field_Literal_Subtype, Field_Simple_Aggregate_List, Field_Type, -- Iir_Kind_Overflow_Literal Field_Expr_Staticness, Field_Literal_Origin, Field_Type, -- Iir_Kind_Waveform_Element Field_We_Value, Field_Chain, Field_Time, -- Iir_Kind_Conditional_Waveform Field_Condition, Field_Chain, Field_Waveform_Chain, -- Iir_Kind_Association_Element_By_Expression Field_Whole_Association_Flag, Field_Collapse_Signal_Flag, Field_Formal, Field_Chain, Field_Actual, Field_In_Conversion, Field_Out_Conversion, -- Iir_Kind_Association_Element_By_Individual Field_Whole_Association_Flag, Field_Collapse_Signal_Flag, Field_Formal, Field_Chain, Field_Actual_Type, Field_Individual_Association_Chain, -- Iir_Kind_Association_Element_Open Field_Whole_Association_Flag, Field_Collapse_Signal_Flag, Field_Artificial_Flag, Field_Formal, Field_Chain, -- Iir_Kind_Association_Element_Package Field_Whole_Association_Flag, Field_Collapse_Signal_Flag, Field_Formal, Field_Chain, Field_Actual, Field_Associated_Interface, -- Iir_Kind_Choice_By_Others Field_Same_Alternative_Flag, Field_Chain, Field_Associated_Expr, Field_Associated_Chain, Field_Parent, -- Iir_Kind_Choice_By_Expression Field_Same_Alternative_Flag, Field_Choice_Staticness, Field_Chain, Field_Associated_Expr, Field_Associated_Chain, Field_Choice_Expression, Field_Parent, -- Iir_Kind_Choice_By_Range Field_Same_Alternative_Flag, Field_Choice_Staticness, Field_Chain, Field_Associated_Expr, Field_Associated_Chain, Field_Choice_Range, Field_Parent, -- Iir_Kind_Choice_By_None Field_Same_Alternative_Flag, Field_Chain, Field_Associated_Expr, Field_Associated_Chain, Field_Parent, -- Iir_Kind_Choice_By_Name Field_Same_Alternative_Flag, Field_Chain, Field_Associated_Expr, Field_Associated_Chain, Field_Choice_Name, Field_Parent, -- Iir_Kind_Entity_Aspect_Entity Field_Entity_Name, Field_Architecture, -- Iir_Kind_Entity_Aspect_Configuration Field_Configuration_Name, -- Iir_Kind_Entity_Aspect_Open -- Iir_Kind_Block_Configuration Field_Declaration_Chain, Field_Chain, Field_Configuration_Item_Chain, Field_Block_Specification, Field_Parent, Field_Prev_Block_Configuration, -- Iir_Kind_Block_Header Field_Generic_Chain, Field_Port_Chain, Field_Generic_Map_Aspect_Chain, Field_Port_Map_Aspect_Chain, -- Iir_Kind_Component_Configuration Field_Instantiation_List, Field_Chain, Field_Binding_Indication, Field_Component_Name, Field_Block_Configuration, Field_Parent, -- Iir_Kind_Binding_Indication Field_Default_Entity_Aspect, Field_Entity_Aspect, Field_Default_Generic_Map_Aspect_Chain, Field_Default_Port_Map_Aspect_Chain, Field_Generic_Map_Aspect_Chain, Field_Port_Map_Aspect_Chain, -- Iir_Kind_Entity_Class Field_Entity_Class, Field_Chain, -- Iir_Kind_Attribute_Value Field_Expr_Staticness, Field_Name_Staticness, Field_Spec_Chain, Field_Chain, Field_Type, Field_Designated_Entity, Field_Attribute_Specification, Field_Base_Name, -- Iir_Kind_Signature Field_Type_Marks_List, Field_Return_Type_Mark, Field_Signature_Prefix, -- Iir_Kind_Aggregate_Info Field_Aggr_Min_Length, Field_Aggr_Others_Flag, Field_Aggr_Dynamic_Flag, Field_Aggr_Named_Flag, Field_Sub_Aggregate_Info, Field_Aggr_Low_Limit, Field_Aggr_High_Limit, -- Iir_Kind_Procedure_Call Field_Prefix, Field_Parameter_Association_Chain, Field_Method_Object, Field_Implementation, -- Iir_Kind_Record_Element_Constraint Field_Identifier, Field_Element_Position, Field_Visible_Flag, Field_Element_Declaration, Field_Parent, Field_Type, -- Iir_Kind_Array_Element_Resolution Field_Resolution_Indication, -- Iir_Kind_Record_Resolution Field_Record_Element_Resolution_Chain, -- Iir_Kind_Record_Element_Resolution Field_Identifier, Field_Chain, Field_Resolution_Indication, -- Iir_Kind_Attribute_Specification Field_Entity_Class, Field_Entity_Name_List, Field_Chain, Field_Attribute_Value_Spec_Chain, Field_Expression, Field_Attribute_Designator, Field_Attribute_Specification_Chain, Field_Parent, -- Iir_Kind_Disconnection_Specification Field_Chain, Field_Signal_List, Field_Type_Mark, Field_Expression, Field_Parent, -- Iir_Kind_Configuration_Specification Field_Instantiation_List, Field_Chain, Field_Binding_Indication, Field_Component_Name, Field_Parent, -- Iir_Kind_Access_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Type_Staticness, Field_Designated_Subtype_Indication, Field_Designated_Type, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Incomplete_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Incomplete_Type_List, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_File_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Text_File_Flag, Field_Type_Staticness, Field_File_Type_Mark, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Protected_Type_Declaration Field_Resolved_Flag, Field_Signal_Type_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Type_Staticness, Field_Declaration_Chain, Field_Protected_Type_Body, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Record_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Type_Staticness, Field_Constraint_State, Field_Elements_Declaration_List, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Array_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Index_Constraint_Flag, Field_Type_Staticness, Field_Constraint_State, Field_Element_Subtype_Indication, Field_Index_Subtype_Definition_List, Field_Element_Subtype, Field_Type_Declarator, Field_Base_Type, Field_Index_Subtype_List, -- Iir_Kind_Array_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Index_Constraint_Flag, Field_Type_Staticness, Field_Constraint_State, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Index_Constraint_List, Field_Tolerance, Field_Array_Element_Constraint, Field_Element_Subtype, Field_Type_Declarator, Field_Base_Type, Field_Index_Subtype_List, -- Iir_Kind_Record_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Constraint_State, Field_Elements_Declaration_List, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Tolerance, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Access_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Type_Staticness, Field_Subtype_Type_Mark, Field_Designated_Subtype_Indication, Field_Designated_Type, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Physical_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Range_Constraint, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Floating_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Range_Constraint, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Tolerance, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Integer_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Range_Constraint, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Enumeration_Subtype_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Range_Constraint, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Enumeration_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Only_Characters_Flag, Field_Type_Staticness, Field_Range_Constraint, Field_Enumeration_Literal_List, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Integer_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Floating_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_Type_Staticness, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Physical_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, Field_Has_Signal_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Type_Staticness, Field_Unit_Chain, Field_Type_Declarator, Field_Base_Type, -- Iir_Kind_Range_Expression Field_Expr_Staticness, Field_Direction, Field_Left_Limit, Field_Right_Limit, Field_Range_Origin, Field_Type, -- Iir_Kind_Protected_Type_Body Field_Identifier, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Chain, Field_Protected_Type_Declaration, Field_Parent, -- Iir_Kind_Subtype_Definition Field_Range_Constraint, Field_Subtype_Type_Mark, Field_Resolution_Indication, Field_Tolerance, -- Iir_Kind_Scalar_Nature_Definition Field_Reference, Field_Nature_Declarator, Field_Across_Type, Field_Through_Type, -- Iir_Kind_Overload_List Field_Overload_List, -- Iir_Kind_Type_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Type_Definition, Field_Chain, Field_Parent, -- Iir_Kind_Anonymous_Type_Declaration Field_Identifier, Field_Type_Definition, Field_Chain, Field_Subtype_Definition, Field_Parent, -- Iir_Kind_Subtype_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Is_Ref, Field_Chain, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Nature_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Nature, Field_Chain, Field_Parent, -- Iir_Kind_Subnature_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Nature, Field_Chain, Field_Parent, -- Iir_Kind_Package_Declaration Field_Identifier, Field_Need_Body, Field_Visible_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Attribute_Value_Chain, Field_Package_Header, Field_Parent, Field_Package_Body, -- Iir_Kind_Package_Instantiation_Declaration Field_Identifier, Field_Visible_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Attribute_Value_Chain, Field_Uninstantiated_Package_Name, Field_Generic_Chain, Field_Generic_Map_Aspect_Chain, Field_Parent, Field_Package_Body, -- Iir_Kind_Package_Body Field_Identifier, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Attribute_Value_Chain, Field_Parent, Field_Package, -- Iir_Kind_Configuration_Declaration Field_Identifier, Field_Visible_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Entity_Name, Field_Attribute_Value_Chain, Field_Block_Configuration, Field_Parent, -- Iir_Kind_Entity_Declaration Field_Identifier, Field_Has_Begin, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Attribute_Value_Chain, Field_Concurrent_Statement_Chain, Field_Generic_Chain, Field_Port_Chain, Field_Parent, -- Iir_Kind_Architecture_Body Field_Identifier, Field_Foreign_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Entity_Name, Field_Attribute_Value_Chain, Field_Concurrent_Statement_Chain, Field_Default_Configuration_Declaration, Field_Parent, -- Iir_Kind_Package_Header Field_Generic_Chain, Field_Generic_Map_Aspect_Chain, -- Iir_Kind_Unit_Declaration Field_Identifier, Field_Visible_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Physical_Literal, Field_Physical_Unit_Value, Field_Parent, Field_Type, -- Iir_Kind_Library_Declaration Field_Identifier, Field_Date, Field_Library_Directory, Field_Elab_Flag, Field_Visible_Flag, Field_Design_File_Chain, Field_Chain, -- Iir_Kind_Component_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Has_Is, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Chain, Field_Generic_Chain, Field_Port_Chain, Field_Parent, -- Iir_Kind_Attribute_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Chain, Field_Type_Mark, Field_Parent, Field_Type, -- Iir_Kind_Group_Template_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Entity_Class_Entry_Chain, Field_Chain, Field_Parent, -- Iir_Kind_Group_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Group_Constituent_List, Field_Chain, Field_Group_Template_Name, Field_Parent, -- Iir_Kind_Element_Declaration Field_Identifier, Field_Element_Position, Field_Has_Identifier_List, Field_Visible_Flag, Field_Is_Ref, Field_Subtype_Indication, Field_Type, -- Iir_Kind_Non_Object_Alias_Declaration Field_Identifier, Field_Implicit_Alias_Flag, Field_Visible_Flag, Field_Use_Flag, Field_Chain, Field_Name, Field_Alias_Signature, Field_Parent, -- Iir_Kind_Psl_Declaration Field_Psl_Declaration, Field_Identifier, Field_PSL_Clock, Field_PSL_NFA, Field_Visible_Flag, Field_Use_Flag, Field_Chain, Field_Parent, -- Iir_Kind_Terminal_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Nature, Field_Chain, Field_Parent, -- Iir_Kind_Free_Quantity_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Parent, Field_Type, -- Iir_Kind_Across_Quantity_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Tolerance, Field_Plus_Terminal, Field_Minus_Terminal, Field_Default_Value, Field_Parent, Field_Type, -- Iir_Kind_Through_Quantity_Declaration Field_Identifier, Field_Visible_Flag, Field_Use_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Tolerance, Field_Plus_Terminal, Field_Minus_Terminal, Field_Default_Value, Field_Parent, Field_Type, -- Iir_Kind_Enumeration_Literal Field_Identifier, Field_Subprogram_Hash, Field_Enum_Pos, Field_Seen_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Literal_Origin, Field_Parent, Field_Type, -- Iir_Kind_Function_Declaration Field_Subprogram_Depth, Field_Overload_Number, Field_Identifier, Field_Subprogram_Hash, Field_Implicit_Definition, Field_Seen_Flag, Field_Pure_Flag, Field_Foreign_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_Use_Flag, Field_Resolution_Function_Flag, Field_Has_Pure, Field_Has_Body, Field_Wait_State, Field_All_Sensitized_State, Field_Chain, Field_Interface_Declaration_Chain, Field_Generic_Chain, Field_Return_Type_Mark, Field_Parent, Field_Return_Type, Field_Type_Reference, Field_Subprogram_Body, -- Iir_Kind_Procedure_Declaration Field_Subprogram_Depth, Field_Overload_Number, Field_Identifier, Field_Subprogram_Hash, Field_Implicit_Definition, Field_Seen_Flag, Field_Passive_Flag, Field_Foreign_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_Use_Flag, Field_Has_Body, Field_Wait_State, Field_Purity_State, Field_All_Sensitized_State, Field_Chain, Field_Interface_Declaration_Chain, Field_Generic_Chain, Field_Return_Type_Mark, Field_Parent, Field_Type_Reference, Field_Subprogram_Body, -- Iir_Kind_Function_Body Field_Impure_Depth, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Sequential_Statement_Chain, Field_Parent, Field_Subprogram_Specification, Field_Callees_List, -- Iir_Kind_Procedure_Body Field_Impure_Depth, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Sequential_Statement_Chain, Field_Parent, Field_Subprogram_Specification, Field_Callees_List, -- Iir_Kind_Object_Alias_Declaration Field_Identifier, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Name, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_File_Declaration Field_Identifier, Field_Has_Mode, Field_Has_Identifier_List, Field_Visible_Flag, Field_Use_Flag, Field_Is_Ref, Field_Mode, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_File_Logical_Name, Field_File_Open_Kind, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Guard_Signal_Declaration Field_Identifier, Field_Has_Active_Flag, Field_Visible_Flag, Field_Use_Flag, Field_Guarded_Signal_Flag, Field_Signal_Kind, Field_Expr_Staticness, Field_Name_Staticness, Field_Guard_Expression, Field_Guard_Sensitivity_List, Field_Block_Statement, Field_Parent, Field_Type, -- Iir_Kind_Signal_Declaration Field_Identifier, Field_Has_Disconnect_Flag, Field_Has_Active_Flag, Field_Has_Identifier_List, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Guarded_Signal_Flag, Field_Signal_Kind, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Variable_Declaration Field_Identifier, Field_Shared_Flag, Field_Has_Identifier_List, Field_Visible_Flag, Field_Use_Flag, Field_Is_Ref, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Constant_Declaration Field_Identifier, Field_Deferred_Declaration_Flag, Field_Has_Identifier_List, Field_Visible_Flag, Field_Use_Flag, Field_Is_Ref, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Deferred_Declaration, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Iterator_Declaration Field_Identifier, Field_Has_Identifier_List, Field_Visible_Flag, Field_Use_Flag, Field_Is_Ref, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Discrete_Range, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Interface_Constant_Declaration Field_Identifier, Field_Has_Mode, Field_Has_Class, Field_Has_Identifier_List, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Mode, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Interface_Variable_Declaration Field_Identifier, Field_Has_Mode, Field_Has_Class, Field_Has_Identifier_List, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Mode, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Interface_Signal_Declaration Field_Identifier, Field_Has_Disconnect_Flag, Field_Has_Mode, Field_Has_Class, Field_Open_Flag, Field_Has_Active_Flag, Field_Has_Identifier_List, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Guarded_Signal_Flag, Field_Signal_Kind, Field_Mode, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Interface_File_Declaration Field_Identifier, Field_Has_Mode, Field_Has_Class, Field_Has_Identifier_List, Field_Visible_Flag, Field_After_Drivers_Flag, Field_Use_Flag, Field_Is_Ref, Field_Mode, Field_Expr_Staticness, Field_Name_Staticness, Field_Chain, Field_Default_Value, Field_Subtype_Indication, Field_Parent, Field_Type, -- Iir_Kind_Interface_Package_Declaration Field_Identifier, Field_Visible_Flag, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Uninstantiated_Package_Name, Field_Generic_Chain, Field_Generic_Map_Aspect_Chain, Field_Parent, -- Iir_Kind_Identity_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Negation_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Absolute_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Not_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Condition_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_And_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_Or_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_Nand_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_Nor_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_Xor_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_Reduction_Xnor_Operator Field_Expr_Staticness, Field_Operand, Field_Type, Field_Implementation, -- Iir_Kind_And_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Or_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Nand_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Nor_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Xor_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Xnor_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Equality_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Inequality_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Less_Than_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Less_Than_Or_Equal_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Greater_Than_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Greater_Than_Or_Equal_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Equality_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Inequality_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Less_Than_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Less_Than_Or_Equal_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Greater_Than_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Match_Greater_Than_Or_Equal_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Sll_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Sla_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Srl_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Sra_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Rol_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Ror_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Addition_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Substraction_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Concatenation_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Multiplication_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Division_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Modulus_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Remainder_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Exponentiation_Operator Field_Expr_Staticness, Field_Left, Field_Right, Field_Type, Field_Implementation, -- Iir_Kind_Function_Call Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter_Association_Chain, Field_Method_Object, Field_Type, Field_Implementation, Field_Base_Name, -- Iir_Kind_Aggregate Field_Expr_Staticness, Field_Value_Staticness, Field_Aggregate_Info, Field_Literal_Subtype, Field_Association_Choices_Chain, Field_Type, -- Iir_Kind_Parenthesis_Expression Field_Expr_Staticness, Field_Expression, Field_Type, -- Iir_Kind_Qualified_Expression Field_Expr_Staticness, Field_Type_Mark, Field_Expression, Field_Type, -- Iir_Kind_Type_Conversion Field_Expr_Staticness, Field_Type_Conversion_Subtype, Field_Type_Mark, Field_Expression, Field_Type, -- Iir_Kind_Allocator_By_Expression Field_Expr_Staticness, Field_Expression, Field_Type, Field_Allocator_Designated_Type, -- Iir_Kind_Allocator_By_Subtype Field_Expr_Staticness, Field_Subtype_Indication, Field_Type, Field_Allocator_Designated_Type, -- Iir_Kind_Selected_Element Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Selected_Element, Field_Base_Name, -- Iir_Kind_Dereference Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Implicit_Dereference Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Slice_Name Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Suffix, Field_Slice_Subtype, Field_Type, Field_Base_Name, -- Iir_Kind_Indexed_Name Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_List, Field_Type, Field_Base_Name, -- Iir_Kind_Psl_Expression Field_Psl_Expression, Field_Type, -- Iir_Kind_Sensitized_Process_Statement Field_Label, Field_Seen_Flag, Field_End_Has_Postponed, Field_Passive_Flag, Field_Postponed_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_Has_Label, Field_Has_Is, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Wait_State, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Sequential_Statement_Chain, Field_Sensitivity_List, Field_Process_Origin, Field_Parent, Field_Callees_List, -- Iir_Kind_Process_Statement Field_Label, Field_Seen_Flag, Field_End_Has_Postponed, Field_Passive_Flag, Field_Postponed_Flag, Field_Visible_Flag, Field_Is_Within_Flag, Field_Has_Label, Field_Has_Is, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Wait_State, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Sequential_Statement_Chain, Field_Process_Origin, Field_Parent, Field_Callees_List, -- Iir_Kind_Concurrent_Conditional_Signal_Assignment Field_Label, Field_Delay_Mechanism, Field_Postponed_Flag, Field_Visible_Flag, Field_Guarded_Target_State, Field_Target, Field_Chain, Field_Reject_Time_Expression, Field_Conditional_Waveform_Chain, Field_Guard, Field_Parent, -- Iir_Kind_Concurrent_Selected_Signal_Assignment Field_Label, Field_Delay_Mechanism, Field_Postponed_Flag, Field_Visible_Flag, Field_Guarded_Target_State, Field_Target, Field_Chain, Field_Reject_Time_Expression, Field_Expression, Field_Selected_Waveform_Chain, Field_Guard, Field_Parent, -- Iir_Kind_Concurrent_Assertion_Statement Field_Label, Field_Postponed_Flag, Field_Visible_Flag, Field_Assertion_Condition, Field_Chain, Field_Severity_Expression, Field_Report_Expression, Field_Parent, -- Iir_Kind_Psl_Default_Clock Field_Psl_Boolean, Field_Label, Field_Chain, Field_Parent, -- Iir_Kind_Psl_Assert_Statement Field_Psl_Property, Field_Label, Field_PSL_Clock, Field_PSL_NFA, Field_Visible_Flag, Field_Chain, Field_Severity_Expression, Field_Report_Expression, Field_Parent, -- Iir_Kind_Psl_Cover_Statement Field_Psl_Property, Field_Label, Field_PSL_Clock, Field_PSL_NFA, Field_Visible_Flag, Field_Chain, Field_Severity_Expression, Field_Report_Expression, Field_Parent, -- Iir_Kind_Concurrent_Procedure_Call_Statement Field_Label, Field_Postponed_Flag, Field_Visible_Flag, Field_Procedure_Call, Field_Chain, Field_Parent, -- Iir_Kind_Block_Statement Field_Label, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Chain, Field_Attribute_Value_Chain, Field_Concurrent_Statement_Chain, Field_Block_Block_Configuration, Field_Block_Header, Field_Guard_Decl, Field_Parent, -- Iir_Kind_If_Generate_Statement Field_Label, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Condition, Field_Chain, Field_Generate_Statement_Body, Field_Generate_Else_Clause, Field_Parent, -- Iir_Kind_For_Generate_Statement Field_Label, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_Parameter_Specification, Field_Chain, Field_Generate_Statement_Body, Field_Parent, -- Iir_Kind_Component_Instantiation_Statement Field_Label, Field_Visible_Flag, Field_Instantiated_Unit, Field_Chain, Field_Default_Binding_Indication, Field_Component_Configuration, Field_Configuration_Specification, Field_Generic_Map_Aspect_Chain, Field_Port_Map_Aspect_Chain, Field_Parent, -- Iir_Kind_Simple_Simultaneous_Statement Field_Label, Field_Visible_Flag, Field_Chain, Field_Simultaneous_Left, Field_Simultaneous_Right, Field_Tolerance, Field_Parent, -- Iir_Kind_Generate_Statement_Body Field_Alternative_Label, Field_Has_Begin, Field_Has_End, Field_Is_Within_Flag, Field_Has_Label, Field_End_Has_Identifier, Field_Declaration_Chain, Field_Generate_Block_Configuration, Field_Attribute_Value_Chain, Field_Concurrent_Statement_Chain, Field_Parent, -- Iir_Kind_If_Generate_Else_Clause Field_Visible_Flag, Field_Condition, Field_Generate_Statement_Body, Field_Generate_Else_Clause, Field_Parent, -- Iir_Kind_Signal_Assignment_Statement Field_Label, Field_Delay_Mechanism, Field_Visible_Flag, Field_Guarded_Target_State, Field_Target, Field_Chain, Field_Reject_Time_Expression, Field_Waveform_Chain, Field_Parent, -- Iir_Kind_Null_Statement Field_Label, Field_Visible_Flag, Field_Chain, Field_Parent, -- Iir_Kind_Assertion_Statement Field_Label, Field_Visible_Flag, Field_Assertion_Condition, Field_Chain, Field_Severity_Expression, Field_Report_Expression, Field_Parent, -- Iir_Kind_Report_Statement Field_Label, Field_Visible_Flag, Field_Chain, Field_Severity_Expression, Field_Report_Expression, Field_Parent, -- Iir_Kind_Wait_Statement Field_Label, Field_Visible_Flag, Field_Timeout_Clause, Field_Chain, Field_Condition_Clause, Field_Sensitivity_List, Field_Parent, -- Iir_Kind_Variable_Assignment_Statement Field_Label, Field_Visible_Flag, Field_Target, Field_Chain, Field_Expression, Field_Parent, -- Iir_Kind_Return_Statement Field_Label, Field_Visible_Flag, Field_Chain, Field_Expression, Field_Parent, Field_Type, -- Iir_Kind_For_Loop_Statement Field_Label, Field_Visible_Flag, Field_Is_Within_Flag, Field_End_Has_Identifier, Field_Parameter_Specification, Field_Chain, Field_Sequential_Statement_Chain, Field_Parent, -- Iir_Kind_While_Loop_Statement Field_Label, Field_Visible_Flag, Field_End_Has_Identifier, Field_Condition, Field_Chain, Field_Sequential_Statement_Chain, Field_Parent, -- Iir_Kind_Next_Statement Field_Label, Field_Visible_Flag, Field_Condition, Field_Chain, Field_Loop_Label, Field_Parent, -- Iir_Kind_Exit_Statement Field_Label, Field_Visible_Flag, Field_Condition, Field_Chain, Field_Loop_Label, Field_Parent, -- Iir_Kind_Case_Statement Field_Label, Field_Visible_Flag, Field_End_Has_Identifier, Field_Case_Statement_Alternative_Chain, Field_Chain, Field_Expression, Field_Parent, -- Iir_Kind_Procedure_Call_Statement Field_Label, Field_Visible_Flag, Field_Procedure_Call, Field_Chain, Field_Parent, -- Iir_Kind_If_Statement Field_Label, Field_Visible_Flag, Field_End_Has_Identifier, Field_Condition, Field_Chain, Field_Else_Clause, Field_Sequential_Statement_Chain, Field_Parent, -- Iir_Kind_Elsif Field_End_Has_Identifier, Field_Condition, Field_Else_Clause, Field_Sequential_Statement_Chain, Field_Parent, -- Iir_Kind_Character_Literal Field_Identifier, Field_Expr_Staticness, Field_Name_Staticness, Field_Alias_Declaration, Field_Type, Field_Named_Entity, Field_Base_Name, -- Iir_Kind_Simple_Name Field_Identifier, Field_Expr_Staticness, Field_Name_Staticness, Field_Alias_Declaration, Field_Type, Field_Named_Entity, Field_Base_Name, -- Iir_Kind_Selected_Name Field_Identifier, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Alias_Declaration, Field_Type, Field_Named_Entity, Field_Base_Name, -- Iir_Kind_Operator_Symbol Field_Identifier, Field_Alias_Declaration, Field_Type, Field_Named_Entity, Field_Base_Name, -- Iir_Kind_Selected_By_All_Name Field_Expr_Staticness, Field_Prefix, Field_Type, Field_Named_Entity, Field_Base_Name, -- Iir_Kind_Parenthesis_Name Field_Prefix, Field_Association_Chain, Field_Type, Field_Named_Entity, -- Iir_Kind_Base_Attribute Field_Prefix, Field_Type, -- Iir_Kind_Left_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Right_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_High_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Low_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Ascending_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Image_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Value_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Pos_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Val_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Succ_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Pred_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Leftof_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Rightof_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Delayed_Attribute Field_Has_Active_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Chain, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Stable_Attribute Field_Has_Active_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Chain, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Quiet_Attribute Field_Has_Active_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Chain, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Transaction_Attribute Field_Has_Active_Flag, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Chain, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Event_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Active_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Last_Event_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Last_Active_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Last_Value_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Driving_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Driving_Value_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, -- Iir_Kind_Behavior_Attribute -- Iir_Kind_Structure_Attribute -- Iir_Kind_Simple_Name_Attribute Field_Simple_Name_Identifier, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Simple_Name_Subtype, Field_Type, Field_Base_Name, -- Iir_Kind_Instance_Name_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Path_Name_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Base_Name, -- Iir_Kind_Left_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Right_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_High_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Low_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Length_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Ascending_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Range_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Reverse_Range_Array_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Index_Subtype, Field_Parameter, Field_Type, Field_Base_Name, -- Iir_Kind_Attribute_Name Field_Identifier, Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Attribute_Signature, Field_Type, Field_Named_Entity, Field_Base_Name ); Fields_Of_Iir_Last : constant array (Iir_Kind) of Integer := ( Iir_Kind_Unused => -1, Iir_Kind_Error => 7, Iir_Kind_Design_File => 17, Iir_Kind_Design_Unit => 32, Iir_Kind_Library_Clause => 37, Iir_Kind_Use_Clause => 41, Iir_Kind_Integer_Literal => 45, Iir_Kind_Floating_Point_Literal => 49, Iir_Kind_Null_Literal => 51, Iir_Kind_String_Literal8 => 61, Iir_Kind_Physical_Int_Literal => 66, Iir_Kind_Physical_Fp_Literal => 71, Iir_Kind_Simple_Aggregate => 76, Iir_Kind_Overflow_Literal => 79, Iir_Kind_Waveform_Element => 82, Iir_Kind_Conditional_Waveform => 85, Iir_Kind_Association_Element_By_Expression => 92, Iir_Kind_Association_Element_By_Individual => 98, Iir_Kind_Association_Element_Open => 103, Iir_Kind_Association_Element_Package => 109, Iir_Kind_Choice_By_Others => 114, Iir_Kind_Choice_By_Expression => 121, Iir_Kind_Choice_By_Range => 128, Iir_Kind_Choice_By_None => 133, Iir_Kind_Choice_By_Name => 139, Iir_Kind_Entity_Aspect_Entity => 141, Iir_Kind_Entity_Aspect_Configuration => 142, Iir_Kind_Entity_Aspect_Open => 142, Iir_Kind_Block_Configuration => 148, Iir_Kind_Block_Header => 152, Iir_Kind_Component_Configuration => 158, Iir_Kind_Binding_Indication => 164, Iir_Kind_Entity_Class => 166, Iir_Kind_Attribute_Value => 174, Iir_Kind_Signature => 177, Iir_Kind_Aggregate_Info => 184, Iir_Kind_Procedure_Call => 188, Iir_Kind_Record_Element_Constraint => 194, Iir_Kind_Array_Element_Resolution => 195, Iir_Kind_Record_Resolution => 196, Iir_Kind_Record_Element_Resolution => 199, Iir_Kind_Attribute_Specification => 207, Iir_Kind_Disconnection_Specification => 212, Iir_Kind_Configuration_Specification => 217, Iir_Kind_Access_Type_Definition => 224, Iir_Kind_Incomplete_Type_Definition => 231, Iir_Kind_File_Type_Definition => 238, Iir_Kind_Protected_Type_Declaration => 247, Iir_Kind_Record_Type_Definition => 257, Iir_Kind_Array_Type_Definition => 269, Iir_Kind_Array_Subtype_Definition => 284, Iir_Kind_Record_Subtype_Definition => 295, Iir_Kind_Access_Subtype_Definition => 303, Iir_Kind_Physical_Subtype_Definition => 312, Iir_Kind_Floating_Subtype_Definition => 322, Iir_Kind_Integer_Subtype_Definition => 331, Iir_Kind_Enumeration_Subtype_Definition => 340, Iir_Kind_Enumeration_Type_Definition => 349, Iir_Kind_Integer_Type_Definition => 355, Iir_Kind_Floating_Type_Definition => 361, Iir_Kind_Physical_Type_Definition => 370, Iir_Kind_Range_Expression => 376, Iir_Kind_Protected_Type_Body => 383, Iir_Kind_Subtype_Definition => 387, Iir_Kind_Scalar_Nature_Definition => 391, Iir_Kind_Overload_List => 392, Iir_Kind_Type_Declaration => 398, Iir_Kind_Anonymous_Type_Declaration => 403, Iir_Kind_Subtype_Declaration => 411, Iir_Kind_Nature_Declaration => 417, Iir_Kind_Subnature_Declaration => 423, Iir_Kind_Package_Declaration => 433, Iir_Kind_Package_Instantiation_Declaration => 444, Iir_Kind_Package_Body => 451, Iir_Kind_Configuration_Declaration => 460, Iir_Kind_Entity_Declaration => 472, Iir_Kind_Architecture_Body => 484, Iir_Kind_Package_Header => 486, Iir_Kind_Unit_Declaration => 495, Iir_Kind_Library_Declaration => 502, Iir_Kind_Component_Declaration => 512, Iir_Kind_Attribute_Declaration => 519, Iir_Kind_Group_Template_Declaration => 525, Iir_Kind_Group_Declaration => 532, Iir_Kind_Element_Declaration => 539, Iir_Kind_Non_Object_Alias_Declaration => 547, Iir_Kind_Psl_Declaration => 555, Iir_Kind_Terminal_Declaration => 561, Iir_Kind_Free_Quantity_Declaration => 570, Iir_Kind_Across_Quantity_Declaration => 582, Iir_Kind_Through_Quantity_Declaration => 594, Iir_Kind_Enumeration_Literal => 605, Iir_Kind_Function_Declaration => 629, Iir_Kind_Procedure_Declaration => 651, Iir_Kind_Function_Body => 661, Iir_Kind_Procedure_Body => 671, Iir_Kind_Object_Alias_Declaration => 683, Iir_Kind_File_Declaration => 698, Iir_Kind_Guard_Signal_Declaration => 711, Iir_Kind_Signal_Declaration => 728, Iir_Kind_Variable_Declaration => 741, Iir_Kind_Constant_Declaration => 755, Iir_Kind_Iterator_Declaration => 767, Iir_Kind_Interface_Constant_Declaration => 783, Iir_Kind_Interface_Variable_Declaration => 799, Iir_Kind_Interface_Signal_Declaration => 820, Iir_Kind_Interface_File_Declaration => 836, Iir_Kind_Interface_Package_Declaration => 845, Iir_Kind_Identity_Operator => 849, Iir_Kind_Negation_Operator => 853, Iir_Kind_Absolute_Operator => 857, Iir_Kind_Not_Operator => 861, Iir_Kind_Condition_Operator => 865, Iir_Kind_Reduction_And_Operator => 869, Iir_Kind_Reduction_Or_Operator => 873, Iir_Kind_Reduction_Nand_Operator => 877, Iir_Kind_Reduction_Nor_Operator => 881, Iir_Kind_Reduction_Xor_Operator => 885, Iir_Kind_Reduction_Xnor_Operator => 889, Iir_Kind_And_Operator => 894, Iir_Kind_Or_Operator => 899, Iir_Kind_Nand_Operator => 904, Iir_Kind_Nor_Operator => 909, Iir_Kind_Xor_Operator => 914, Iir_Kind_Xnor_Operator => 919, Iir_Kind_Equality_Operator => 924, Iir_Kind_Inequality_Operator => 929, Iir_Kind_Less_Than_Operator => 934, Iir_Kind_Less_Than_Or_Equal_Operator => 939, Iir_Kind_Greater_Than_Operator => 944, Iir_Kind_Greater_Than_Or_Equal_Operator => 949, Iir_Kind_Match_Equality_Operator => 954, Iir_Kind_Match_Inequality_Operator => 959, Iir_Kind_Match_Less_Than_Operator => 964, Iir_Kind_Match_Less_Than_Or_Equal_Operator => 969, Iir_Kind_Match_Greater_Than_Operator => 974, Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 979, Iir_Kind_Sll_Operator => 984, Iir_Kind_Sla_Operator => 989, Iir_Kind_Srl_Operator => 994, Iir_Kind_Sra_Operator => 999, Iir_Kind_Rol_Operator => 1004, Iir_Kind_Ror_Operator => 1009, Iir_Kind_Addition_Operator => 1014, Iir_Kind_Substraction_Operator => 1019, Iir_Kind_Concatenation_Operator => 1024, Iir_Kind_Multiplication_Operator => 1029, Iir_Kind_Division_Operator => 1034, Iir_Kind_Modulus_Operator => 1039, Iir_Kind_Remainder_Operator => 1044, Iir_Kind_Exponentiation_Operator => 1049, Iir_Kind_Function_Call => 1057, Iir_Kind_Aggregate => 1063, Iir_Kind_Parenthesis_Expression => 1066, Iir_Kind_Qualified_Expression => 1070, Iir_Kind_Type_Conversion => 1075, Iir_Kind_Allocator_By_Expression => 1079, Iir_Kind_Allocator_By_Subtype => 1083, Iir_Kind_Selected_Element => 1089, Iir_Kind_Dereference => 1094, Iir_Kind_Implicit_Dereference => 1099, Iir_Kind_Slice_Name => 1106, Iir_Kind_Indexed_Name => 1112, Iir_Kind_Psl_Expression => 1114, Iir_Kind_Sensitized_Process_Statement => 1134, Iir_Kind_Process_Statement => 1153, Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1164, Iir_Kind_Concurrent_Selected_Signal_Assignment => 1176, Iir_Kind_Concurrent_Assertion_Statement => 1184, Iir_Kind_Psl_Default_Clock => 1188, Iir_Kind_Psl_Assert_Statement => 1197, Iir_Kind_Psl_Cover_Statement => 1206, Iir_Kind_Concurrent_Procedure_Call_Statement => 1212, Iir_Kind_Block_Statement => 1225, Iir_Kind_If_Generate_Statement => 1235, Iir_Kind_For_Generate_Statement => 1244, Iir_Kind_Component_Instantiation_Statement => 1254, Iir_Kind_Simple_Simultaneous_Statement => 1261, Iir_Kind_Generate_Statement_Body => 1272, Iir_Kind_If_Generate_Else_Clause => 1277, Iir_Kind_Signal_Assignment_Statement => 1286, Iir_Kind_Null_Statement => 1290, Iir_Kind_Assertion_Statement => 1297, Iir_Kind_Report_Statement => 1303, Iir_Kind_Wait_Statement => 1310, Iir_Kind_Variable_Assignment_Statement => 1316, Iir_Kind_Return_Statement => 1322, Iir_Kind_For_Loop_Statement => 1330, Iir_Kind_While_Loop_Statement => 1337, Iir_Kind_Next_Statement => 1343, Iir_Kind_Exit_Statement => 1349, Iir_Kind_Case_Statement => 1356, Iir_Kind_Procedure_Call_Statement => 1361, Iir_Kind_If_Statement => 1369, Iir_Kind_Elsif => 1374, Iir_Kind_Character_Literal => 1381, Iir_Kind_Simple_Name => 1388, Iir_Kind_Selected_Name => 1396, Iir_Kind_Operator_Symbol => 1401, Iir_Kind_Selected_By_All_Name => 1406, Iir_Kind_Parenthesis_Name => 1410, Iir_Kind_Base_Attribute => 1412, Iir_Kind_Left_Type_Attribute => 1417, Iir_Kind_Right_Type_Attribute => 1422, Iir_Kind_High_Type_Attribute => 1427, Iir_Kind_Low_Type_Attribute => 1432, Iir_Kind_Ascending_Type_Attribute => 1437, Iir_Kind_Image_Attribute => 1443, Iir_Kind_Value_Attribute => 1449, Iir_Kind_Pos_Attribute => 1455, Iir_Kind_Val_Attribute => 1461, Iir_Kind_Succ_Attribute => 1467, Iir_Kind_Pred_Attribute => 1473, Iir_Kind_Leftof_Attribute => 1479, Iir_Kind_Rightof_Attribute => 1485, Iir_Kind_Delayed_Attribute => 1493, Iir_Kind_Stable_Attribute => 1501, Iir_Kind_Quiet_Attribute => 1509, Iir_Kind_Transaction_Attribute => 1517, Iir_Kind_Event_Attribute => 1521, Iir_Kind_Active_Attribute => 1525, Iir_Kind_Last_Event_Attribute => 1529, Iir_Kind_Last_Active_Attribute => 1533, Iir_Kind_Last_Value_Attribute => 1537, Iir_Kind_Driving_Attribute => 1541, Iir_Kind_Driving_Value_Attribute => 1545, Iir_Kind_Behavior_Attribute => 1545, Iir_Kind_Structure_Attribute => 1545, Iir_Kind_Simple_Name_Attribute => 1552, Iir_Kind_Instance_Name_Attribute => 1557, Iir_Kind_Path_Name_Attribute => 1562, Iir_Kind_Left_Array_Attribute => 1569, Iir_Kind_Right_Array_Attribute => 1576, Iir_Kind_High_Array_Attribute => 1583, Iir_Kind_Low_Array_Attribute => 1590, Iir_Kind_Length_Array_Attribute => 1597, Iir_Kind_Ascending_Array_Attribute => 1604, Iir_Kind_Range_Array_Attribute => 1611, Iir_Kind_Reverse_Range_Array_Attribute => 1618, Iir_Kind_Attribute_Name => 1626 ); function Get_Fields (K : Iir_Kind) return Fields_Array is First : Natural; Last : Integer; begin if K = Iir_Kind'First then First := Fields_Of_Iir'First; else First := Fields_Of_Iir_Last (Iir_Kind'Pred (K)) + 1; end if; Last := Fields_Of_Iir_Last (K); return Fields_Of_Iir (First .. Last); end Get_Fields; function Get_Base_Type (N : Iir; F : Fields_Enum) return Base_Type is begin pragma Assert (Fields_Type (F) = Type_Base_Type); case F is when Field_Bit_String_Base => return Get_Bit_String_Base (N); when others => raise Internal_Error; end case; end Get_Base_Type; procedure Set_Base_Type (N : Iir; F : Fields_Enum; V: Base_Type) is begin pragma Assert (Fields_Type (F) = Type_Base_Type); case F is when Field_Bit_String_Base => Set_Bit_String_Base (N, V); when others => raise Internal_Error; end case; end Set_Base_Type; function Get_Boolean (N : Iir; F : Fields_Enum) return Boolean is begin pragma Assert (Fields_Type (F) = Type_Boolean); case F is when Field_Has_Signed => return Get_Has_Signed (N); when Field_Has_Sign => return Get_Has_Sign (N); when Field_Has_Length => return Get_Has_Length (N); when Field_Whole_Association_Flag => return Get_Whole_Association_Flag (N); when Field_Collapse_Signal_Flag => return Get_Collapse_Signal_Flag (N); when Field_Artificial_Flag => return Get_Artificial_Flag (N); when Field_Open_Flag => return Get_Open_Flag (N); when Field_After_Drivers_Flag => return Get_After_Drivers_Flag (N); when Field_Same_Alternative_Flag => return Get_Same_Alternative_Flag (N); when Field_Need_Body => return Get_Need_Body (N); when Field_Guarded_Signal_Flag => return Get_Guarded_Signal_Flag (N); when Field_Deferred_Declaration_Flag => return Get_Deferred_Declaration_Flag (N); when Field_Shared_Flag => return Get_Shared_Flag (N); when Field_Visible_Flag => return Get_Visible_Flag (N); when Field_Text_File_Flag => return Get_Text_File_Flag (N); when Field_Only_Characters_Flag => return Get_Only_Characters_Flag (N); when Field_Postponed_Flag => return Get_Postponed_Flag (N); when Field_Passive_Flag => return Get_Passive_Flag (N); when Field_Resolution_Function_Flag => return Get_Resolution_Function_Flag (N); when Field_Seen_Flag => return Get_Seen_Flag (N); when Field_Pure_Flag => return Get_Pure_Flag (N); when Field_Foreign_Flag => return Get_Foreign_Flag (N); when Field_Resolved_Flag => return Get_Resolved_Flag (N); when Field_Signal_Type_Flag => return Get_Signal_Type_Flag (N); when Field_Has_Signal_Flag => return Get_Has_Signal_Flag (N); when Field_Elab_Flag => return Get_Elab_Flag (N); when Field_Index_Constraint_Flag => return Get_Index_Constraint_Flag (N); when Field_Aggr_Dynamic_Flag => return Get_Aggr_Dynamic_Flag (N); when Field_Aggr_Others_Flag => return Get_Aggr_Others_Flag (N); when Field_Aggr_Named_Flag => return Get_Aggr_Named_Flag (N); when Field_Has_Disconnect_Flag => return Get_Has_Disconnect_Flag (N); when Field_Has_Active_Flag => return Get_Has_Active_Flag (N); when Field_Is_Within_Flag => return Get_Is_Within_Flag (N); when Field_Implicit_Alias_Flag => return Get_Implicit_Alias_Flag (N); when Field_Use_Flag => return Get_Use_Flag (N); when Field_End_Has_Reserved_Id => return Get_End_Has_Reserved_Id (N); when Field_End_Has_Identifier => return Get_End_Has_Identifier (N); when Field_End_Has_Postponed => return Get_End_Has_Postponed (N); when Field_Has_Label => return Get_Has_Label (N); when Field_Has_Begin => return Get_Has_Begin (N); when Field_Has_End => return Get_Has_End (N); when Field_Has_Is => return Get_Has_Is (N); when Field_Has_Pure => return Get_Has_Pure (N); when Field_Has_Body => return Get_Has_Body (N); when Field_Has_Identifier_List => return Get_Has_Identifier_List (N); when Field_Has_Mode => return Get_Has_Mode (N); when Field_Has_Class => return Get_Has_Class (N); when Field_Is_Ref => return Get_Is_Ref (N); when others => raise Internal_Error; end case; end Get_Boolean; procedure Set_Boolean (N : Iir; F : Fields_Enum; V: Boolean) is begin pragma Assert (Fields_Type (F) = Type_Boolean); case F is when Field_Has_Signed => Set_Has_Signed (N, V); when Field_Has_Sign => Set_Has_Sign (N, V); when Field_Has_Length => Set_Has_Length (N, V); when Field_Whole_Association_Flag => Set_Whole_Association_Flag (N, V); when Field_Collapse_Signal_Flag => Set_Collapse_Signal_Flag (N, V); when Field_Artificial_Flag => Set_Artificial_Flag (N, V); when Field_Open_Flag => Set_Open_Flag (N, V); when Field_After_Drivers_Flag => Set_After_Drivers_Flag (N, V); when Field_Same_Alternative_Flag => Set_Same_Alternative_Flag (N, V); when Field_Need_Body => Set_Need_Body (N, V); when Field_Guarded_Signal_Flag => Set_Guarded_Signal_Flag (N, V); when Field_Deferred_Declaration_Flag => Set_Deferred_Declaration_Flag (N, V); when Field_Shared_Flag => Set_Shared_Flag (N, V); when Field_Visible_Flag => Set_Visible_Flag (N, V); when Field_Text_File_Flag => Set_Text_File_Flag (N, V); when Field_Only_Characters_Flag => Set_Only_Characters_Flag (N, V); when Field_Postponed_Flag => Set_Postponed_Flag (N, V); when Field_Passive_Flag => Set_Passive_Flag (N, V); when Field_Resolution_Function_Flag => Set_Resolution_Function_Flag (N, V); when Field_Seen_Flag => Set_Seen_Flag (N, V); when Field_Pure_Flag => Set_Pure_Flag (N, V); when Field_Foreign_Flag => Set_Foreign_Flag (N, V); when Field_Resolved_Flag => Set_Resolved_Flag (N, V); when Field_Signal_Type_Flag => Set_Signal_Type_Flag (N, V); when Field_Has_Signal_Flag => Set_Has_Signal_Flag (N, V); when Field_Elab_Flag => Set_Elab_Flag (N, V); when Field_Index_Constraint_Flag => Set_Index_Constraint_Flag (N, V); when Field_Aggr_Dynamic_Flag => Set_Aggr_Dynamic_Flag (N, V); when Field_Aggr_Others_Flag => Set_Aggr_Others_Flag (N, V); when Field_Aggr_Named_Flag => Set_Aggr_Named_Flag (N, V); when Field_Has_Disconnect_Flag => Set_Has_Disconnect_Flag (N, V); when Field_Has_Active_Flag => Set_Has_Active_Flag (N, V); when Field_Is_Within_Flag => Set_Is_Within_Flag (N, V); when Field_Implicit_Alias_Flag => Set_Implicit_Alias_Flag (N, V); when Field_Use_Flag => Set_Use_Flag (N, V); when Field_End_Has_Reserved_Id => Set_End_Has_Reserved_Id (N, V); when Field_End_Has_Identifier => Set_End_Has_Identifier (N, V); when Field_End_Has_Postponed => Set_End_Has_Postponed (N, V); when Field_Has_Label => Set_Has_Label (N, V); when Field_Has_Begin => Set_Has_Begin (N, V); when Field_Has_End => Set_Has_End (N, V); when Field_Has_Is => Set_Has_Is (N, V); when Field_Has_Pure => Set_Has_Pure (N, V); when Field_Has_Body => Set_Has_Body (N, V); when Field_Has_Identifier_List => Set_Has_Identifier_List (N, V); when Field_Has_Mode => Set_Has_Mode (N, V); when Field_Has_Class => Set_Has_Class (N, V); when Field_Is_Ref => Set_Is_Ref (N, V); when others => raise Internal_Error; end case; end Set_Boolean; function Get_Date_State_Type (N : Iir; F : Fields_Enum) return Date_State_Type is begin pragma Assert (Fields_Type (F) = Type_Date_State_Type); case F is when Field_Date_State => return Get_Date_State (N); when others => raise Internal_Error; end case; end Get_Date_State_Type; procedure Set_Date_State_Type (N : Iir; F : Fields_Enum; V: Date_State_Type) is begin pragma Assert (Fields_Type (F) = Type_Date_State_Type); case F is when Field_Date_State => Set_Date_State (N, V); when others => raise Internal_Error; end case; end Set_Date_State_Type; function Get_Date_Type (N : Iir; F : Fields_Enum) return Date_Type is begin pragma Assert (Fields_Type (F) = Type_Date_Type); case F is when Field_Date => return Get_Date (N); when others => raise Internal_Error; end case; end Get_Date_Type; procedure Set_Date_Type (N : Iir; F : Fields_Enum; V: Date_Type) is begin pragma Assert (Fields_Type (F) = Type_Date_Type); case F is when Field_Date => Set_Date (N, V); when others => raise Internal_Error; end case; end Set_Date_Type; function Get_Iir (N : Iir; F : Fields_Enum) return Iir is begin pragma Assert (Fields_Type (F) = Type_Iir); case F is when Field_First_Design_Unit => return Get_First_Design_Unit (N); when Field_Last_Design_Unit => return Get_Last_Design_Unit (N); when Field_Library_Declaration => return Get_Library_Declaration (N); when Field_Library => return Get_Library (N); when Field_Design_File => return Get_Design_File (N); when Field_Design_File_Chain => return Get_Design_File_Chain (N); when Field_Context_Items => return Get_Context_Items (N); when Field_Library_Unit => return Get_Library_Unit (N); when Field_Hash_Chain => return Get_Hash_Chain (N); when Field_Physical_Literal => return Get_Physical_Literal (N); when Field_Physical_Unit_Value => return Get_Physical_Unit_Value (N); when Field_Literal_Origin => return Get_Literal_Origin (N); when Field_Range_Origin => return Get_Range_Origin (N); when Field_Literal_Subtype => return Get_Literal_Subtype (N); when Field_Attribute_Designator => return Get_Attribute_Designator (N); when Field_Attribute_Specification_Chain => return Get_Attribute_Specification_Chain (N); when Field_Attribute_Specification => return Get_Attribute_Specification (N); when Field_Designated_Entity => return Get_Designated_Entity (N); when Field_Formal => return Get_Formal (N); when Field_Actual => return Get_Actual (N); when Field_In_Conversion => return Get_In_Conversion (N); when Field_Out_Conversion => return Get_Out_Conversion (N); when Field_We_Value => return Get_We_Value (N); when Field_Time => return Get_Time (N); when Field_Associated_Expr => return Get_Associated_Expr (N); when Field_Associated_Chain => return Get_Associated_Chain (N); when Field_Choice_Name => return Get_Choice_Name (N); when Field_Choice_Expression => return Get_Choice_Expression (N); when Field_Choice_Range => return Get_Choice_Range (N); when Field_Architecture => return Get_Architecture (N); when Field_Block_Specification => return Get_Block_Specification (N); when Field_Prev_Block_Configuration => return Get_Prev_Block_Configuration (N); when Field_Configuration_Item_Chain => return Get_Configuration_Item_Chain (N); when Field_Attribute_Value_Chain => return Get_Attribute_Value_Chain (N); when Field_Spec_Chain => return Get_Spec_Chain (N); when Field_Attribute_Value_Spec_Chain => return Get_Attribute_Value_Spec_Chain (N); when Field_Entity_Name => return Get_Entity_Name (N); when Field_Package => return Get_Package (N); when Field_Package_Body => return Get_Package_Body (N); when Field_Block_Configuration => return Get_Block_Configuration (N); when Field_Concurrent_Statement_Chain => return Get_Concurrent_Statement_Chain (N); when Field_Chain => return Get_Chain (N); when Field_Port_Chain => return Get_Port_Chain (N); when Field_Generic_Chain => return Get_Generic_Chain (N); when Field_Type => return Get_Type (N); when Field_Subtype_Indication => return Get_Subtype_Indication (N); when Field_Discrete_Range => return Get_Discrete_Range (N); when Field_Type_Definition => return Get_Type_Definition (N); when Field_Subtype_Definition => return Get_Subtype_Definition (N); when Field_Nature => return Get_Nature (N); when Field_Base_Name => return Get_Base_Name (N); when Field_Interface_Declaration_Chain => return Get_Interface_Declaration_Chain (N); when Field_Subprogram_Specification => return Get_Subprogram_Specification (N); when Field_Sequential_Statement_Chain => return Get_Sequential_Statement_Chain (N); when Field_Subprogram_Body => return Get_Subprogram_Body (N); when Field_Return_Type => return Get_Return_Type (N); when Field_Type_Reference => return Get_Type_Reference (N); when Field_Default_Value => return Get_Default_Value (N); when Field_Deferred_Declaration => return Get_Deferred_Declaration (N); when Field_Design_Unit => return Get_Design_Unit (N); when Field_Block_Statement => return Get_Block_Statement (N); when Field_Signal_Driver => return Get_Signal_Driver (N); when Field_Declaration_Chain => return Get_Declaration_Chain (N); when Field_File_Logical_Name => return Get_File_Logical_Name (N); when Field_File_Open_Kind => return Get_File_Open_Kind (N); when Field_Element_Declaration => return Get_Element_Declaration (N); when Field_Selected_Element => return Get_Selected_Element (N); when Field_Use_Clause_Chain => return Get_Use_Clause_Chain (N); when Field_Selected_Name => return Get_Selected_Name (N); when Field_Type_Declarator => return Get_Type_Declarator (N); when Field_Entity_Class_Entry_Chain => return Get_Entity_Class_Entry_Chain (N); when Field_Unit_Chain => return Get_Unit_Chain (N); when Field_Primary_Unit => return Get_Primary_Unit (N); when Field_Range_Constraint => return Get_Range_Constraint (N); when Field_Left_Limit => return Get_Left_Limit (N); when Field_Right_Limit => return Get_Right_Limit (N); when Field_Base_Type => return Get_Base_Type (N); when Field_Resolution_Indication => return Get_Resolution_Indication (N); when Field_Record_Element_Resolution_Chain => return Get_Record_Element_Resolution_Chain (N); when Field_Tolerance => return Get_Tolerance (N); when Field_Plus_Terminal => return Get_Plus_Terminal (N); when Field_Minus_Terminal => return Get_Minus_Terminal (N); when Field_Simultaneous_Left => return Get_Simultaneous_Left (N); when Field_Simultaneous_Right => return Get_Simultaneous_Right (N); when Field_Element_Subtype_Indication => return Get_Element_Subtype_Indication (N); when Field_Element_Subtype => return Get_Element_Subtype (N); when Field_Array_Element_Constraint => return Get_Array_Element_Constraint (N); when Field_Designated_Type => return Get_Designated_Type (N); when Field_Designated_Subtype_Indication => return Get_Designated_Subtype_Indication (N); when Field_Reference => return Get_Reference (N); when Field_Nature_Declarator => return Get_Nature_Declarator (N); when Field_Across_Type => return Get_Across_Type (N); when Field_Through_Type => return Get_Through_Type (N); when Field_Target => return Get_Target (N); when Field_Waveform_Chain => return Get_Waveform_Chain (N); when Field_Guard => return Get_Guard (N); when Field_Reject_Time_Expression => return Get_Reject_Time_Expression (N); when Field_Process_Origin => return Get_Process_Origin (N); when Field_Condition_Clause => return Get_Condition_Clause (N); when Field_Timeout_Clause => return Get_Timeout_Clause (N); when Field_Assertion_Condition => return Get_Assertion_Condition (N); when Field_Report_Expression => return Get_Report_Expression (N); when Field_Severity_Expression => return Get_Severity_Expression (N); when Field_Instantiated_Unit => return Get_Instantiated_Unit (N); when Field_Generic_Map_Aspect_Chain => return Get_Generic_Map_Aspect_Chain (N); when Field_Port_Map_Aspect_Chain => return Get_Port_Map_Aspect_Chain (N); when Field_Configuration_Name => return Get_Configuration_Name (N); when Field_Component_Configuration => return Get_Component_Configuration (N); when Field_Configuration_Specification => return Get_Configuration_Specification (N); when Field_Default_Binding_Indication => return Get_Default_Binding_Indication (N); when Field_Default_Configuration_Declaration => return Get_Default_Configuration_Declaration (N); when Field_Expression => return Get_Expression (N); when Field_Allocator_Designated_Type => return Get_Allocator_Designated_Type (N); when Field_Selected_Waveform_Chain => return Get_Selected_Waveform_Chain (N); when Field_Conditional_Waveform_Chain => return Get_Conditional_Waveform_Chain (N); when Field_Guard_Expression => return Get_Guard_Expression (N); when Field_Guard_Decl => return Get_Guard_Decl (N); when Field_Block_Block_Configuration => return Get_Block_Block_Configuration (N); when Field_Package_Header => return Get_Package_Header (N); when Field_Block_Header => return Get_Block_Header (N); when Field_Uninstantiated_Package_Name => return Get_Uninstantiated_Package_Name (N); when Field_Generate_Block_Configuration => return Get_Generate_Block_Configuration (N); when Field_Generate_Statement_Body => return Get_Generate_Statement_Body (N); when Field_Generate_Else_Clause => return Get_Generate_Else_Clause (N); when Field_Condition => return Get_Condition (N); when Field_Else_Clause => return Get_Else_Clause (N); when Field_Parameter_Specification => return Get_Parameter_Specification (N); when Field_Parent => return Get_Parent (N); when Field_Loop_Label => return Get_Loop_Label (N); when Field_Component_Name => return Get_Component_Name (N); when Field_Entity_Aspect => return Get_Entity_Aspect (N); when Field_Default_Entity_Aspect => return Get_Default_Entity_Aspect (N); when Field_Default_Generic_Map_Aspect_Chain => return Get_Default_Generic_Map_Aspect_Chain (N); when Field_Default_Port_Map_Aspect_Chain => return Get_Default_Port_Map_Aspect_Chain (N); when Field_Binding_Indication => return Get_Binding_Indication (N); when Field_Named_Entity => return Get_Named_Entity (N); when Field_Alias_Declaration => return Get_Alias_Declaration (N); when Field_Error_Origin => return Get_Error_Origin (N); when Field_Operand => return Get_Operand (N); when Field_Left => return Get_Left (N); when Field_Right => return Get_Right (N); when Field_Unit_Name => return Get_Unit_Name (N); when Field_Name => return Get_Name (N); when Field_Group_Template_Name => return Get_Group_Template_Name (N); when Field_Prefix => return Get_Prefix (N); when Field_Signature_Prefix => return Get_Signature_Prefix (N); when Field_Slice_Subtype => return Get_Slice_Subtype (N); when Field_Suffix => return Get_Suffix (N); when Field_Index_Subtype => return Get_Index_Subtype (N); when Field_Parameter => return Get_Parameter (N); when Field_Actual_Type => return Get_Actual_Type (N); when Field_Associated_Interface => return Get_Associated_Interface (N); when Field_Association_Chain => return Get_Association_Chain (N); when Field_Individual_Association_Chain => return Get_Individual_Association_Chain (N); when Field_Aggregate_Info => return Get_Aggregate_Info (N); when Field_Sub_Aggregate_Info => return Get_Sub_Aggregate_Info (N); when Field_Aggr_Low_Limit => return Get_Aggr_Low_Limit (N); when Field_Aggr_High_Limit => return Get_Aggr_High_Limit (N); when Field_Association_Choices_Chain => return Get_Association_Choices_Chain (N); when Field_Case_Statement_Alternative_Chain => return Get_Case_Statement_Alternative_Chain (N); when Field_Procedure_Call => return Get_Procedure_Call (N); when Field_Implementation => return Get_Implementation (N); when Field_Parameter_Association_Chain => return Get_Parameter_Association_Chain (N); when Field_Method_Object => return Get_Method_Object (N); when Field_Subtype_Type_Mark => return Get_Subtype_Type_Mark (N); when Field_Type_Conversion_Subtype => return Get_Type_Conversion_Subtype (N); when Field_Type_Mark => return Get_Type_Mark (N); when Field_File_Type_Mark => return Get_File_Type_Mark (N); when Field_Return_Type_Mark => return Get_Return_Type_Mark (N); when Field_Alias_Signature => return Get_Alias_Signature (N); when Field_Attribute_Signature => return Get_Attribute_Signature (N); when Field_Simple_Name_Subtype => return Get_Simple_Name_Subtype (N); when Field_Protected_Type_Body => return Get_Protected_Type_Body (N); when Field_Protected_Type_Declaration => return Get_Protected_Type_Declaration (N); when others => raise Internal_Error; end case; end Get_Iir; procedure Set_Iir (N : Iir; F : Fields_Enum; V: Iir) is begin pragma Assert (Fields_Type (F) = Type_Iir); case F is when Field_First_Design_Unit => Set_First_Design_Unit (N, V); when Field_Last_Design_Unit => Set_Last_Design_Unit (N, V); when Field_Library_Declaration => Set_Library_Declaration (N, V); when Field_Library => Set_Library (N, V); when Field_Design_File => Set_Design_File (N, V); when Field_Design_File_Chain => Set_Design_File_Chain (N, V); when Field_Context_Items => Set_Context_Items (N, V); when Field_Library_Unit => Set_Library_Unit (N, V); when Field_Hash_Chain => Set_Hash_Chain (N, V); when Field_Physical_Literal => Set_Physical_Literal (N, V); when Field_Physical_Unit_Value => Set_Physical_Unit_Value (N, V); when Field_Literal_Origin => Set_Literal_Origin (N, V); when Field_Range_Origin => Set_Range_Origin (N, V); when Field_Literal_Subtype => Set_Literal_Subtype (N, V); when Field_Attribute_Designator => Set_Attribute_Designator (N, V); when Field_Attribute_Specification_Chain => Set_Attribute_Specification_Chain (N, V); when Field_Attribute_Specification => Set_Attribute_Specification (N, V); when Field_Designated_Entity => Set_Designated_Entity (N, V); when Field_Formal => Set_Formal (N, V); when Field_Actual => Set_Actual (N, V); when Field_In_Conversion => Set_In_Conversion (N, V); when Field_Out_Conversion => Set_Out_Conversion (N, V); when Field_We_Value => Set_We_Value (N, V); when Field_Time => Set_Time (N, V); when Field_Associated_Expr => Set_Associated_Expr (N, V); when Field_Associated_Chain => Set_Associated_Chain (N, V); when Field_Choice_Name => Set_Choice_Name (N, V); when Field_Choice_Expression => Set_Choice_Expression (N, V); when Field_Choice_Range => Set_Choice_Range (N, V); when Field_Architecture => Set_Architecture (N, V); when Field_Block_Specification => Set_Block_Specification (N, V); when Field_Prev_Block_Configuration => Set_Prev_Block_Configuration (N, V); when Field_Configuration_Item_Chain => Set_Configuration_Item_Chain (N, V); when Field_Attribute_Value_Chain => Set_Attribute_Value_Chain (N, V); when Field_Spec_Chain => Set_Spec_Chain (N, V); when Field_Attribute_Value_Spec_Chain => Set_Attribute_Value_Spec_Chain (N, V); when Field_Entity_Name => Set_Entity_Name (N, V); when Field_Package => Set_Package (N, V); when Field_Package_Body => Set_Package_Body (N, V); when Field_Block_Configuration => Set_Block_Configuration (N, V); when Field_Concurrent_Statement_Chain => Set_Concurrent_Statement_Chain (N, V); when Field_Chain => Set_Chain (N, V); when Field_Port_Chain => Set_Port_Chain (N, V); when Field_Generic_Chain => Set_Generic_Chain (N, V); when Field_Type => Set_Type (N, V); when Field_Subtype_Indication => Set_Subtype_Indication (N, V); when Field_Discrete_Range => Set_Discrete_Range (N, V); when Field_Type_Definition => Set_Type_Definition (N, V); when Field_Subtype_Definition => Set_Subtype_Definition (N, V); when Field_Nature => Set_Nature (N, V); when Field_Base_Name => Set_Base_Name (N, V); when Field_Interface_Declaration_Chain => Set_Interface_Declaration_Chain (N, V); when Field_Subprogram_Specification => Set_Subprogram_Specification (N, V); when Field_Sequential_Statement_Chain => Set_Sequential_Statement_Chain (N, V); when Field_Subprogram_Body => Set_Subprogram_Body (N, V); when Field_Return_Type => Set_Return_Type (N, V); when Field_Type_Reference => Set_Type_Reference (N, V); when Field_Default_Value => Set_Default_Value (N, V); when Field_Deferred_Declaration => Set_Deferred_Declaration (N, V); when Field_Design_Unit => Set_Design_Unit (N, V); when Field_Block_Statement => Set_Block_Statement (N, V); when Field_Signal_Driver => Set_Signal_Driver (N, V); when Field_Declaration_Chain => Set_Declaration_Chain (N, V); when Field_File_Logical_Name => Set_File_Logical_Name (N, V); when Field_File_Open_Kind => Set_File_Open_Kind (N, V); when Field_Element_Declaration => Set_Element_Declaration (N, V); when Field_Selected_Element => Set_Selected_Element (N, V); when Field_Use_Clause_Chain => Set_Use_Clause_Chain (N, V); when Field_Selected_Name => Set_Selected_Name (N, V); when Field_Type_Declarator => Set_Type_Declarator (N, V); when Field_Entity_Class_Entry_Chain => Set_Entity_Class_Entry_Chain (N, V); when Field_Unit_Chain => Set_Unit_Chain (N, V); when Field_Primary_Unit => Set_Primary_Unit (N, V); when Field_Range_Constraint => Set_Range_Constraint (N, V); when Field_Left_Limit => Set_Left_Limit (N, V); when Field_Right_Limit => Set_Right_Limit (N, V); when Field_Base_Type => Set_Base_Type (N, V); when Field_Resolution_Indication => Set_Resolution_Indication (N, V); when Field_Record_Element_Resolution_Chain => Set_Record_Element_Resolution_Chain (N, V); when Field_Tolerance => Set_Tolerance (N, V); when Field_Plus_Terminal => Set_Plus_Terminal (N, V); when Field_Minus_Terminal => Set_Minus_Terminal (N, V); when Field_Simultaneous_Left => Set_Simultaneous_Left (N, V); when Field_Simultaneous_Right => Set_Simultaneous_Right (N, V); when Field_Element_Subtype_Indication => Set_Element_Subtype_Indication (N, V); when Field_Element_Subtype => Set_Element_Subtype (N, V); when Field_Array_Element_Constraint => Set_Array_Element_Constraint (N, V); when Field_Designated_Type => Set_Designated_Type (N, V); when Field_Designated_Subtype_Indication => Set_Designated_Subtype_Indication (N, V); when Field_Reference => Set_Reference (N, V); when Field_Nature_Declarator => Set_Nature_Declarator (N, V); when Field_Across_Type => Set_Across_Type (N, V); when Field_Through_Type => Set_Through_Type (N, V); when Field_Target => Set_Target (N, V); when Field_Waveform_Chain => Set_Waveform_Chain (N, V); when Field_Guard => Set_Guard (N, V); when Field_Reject_Time_Expression => Set_Reject_Time_Expression (N, V); when Field_Process_Origin => Set_Process_Origin (N, V); when Field_Condition_Clause => Set_Condition_Clause (N, V); when Field_Timeout_Clause => Set_Timeout_Clause (N, V); when Field_Assertion_Condition => Set_Assertion_Condition (N, V); when Field_Report_Expression => Set_Report_Expression (N, V); when Field_Severity_Expression => Set_Severity_Expression (N, V); when Field_Instantiated_Unit => Set_Instantiated_Unit (N, V); when Field_Generic_Map_Aspect_Chain => Set_Generic_Map_Aspect_Chain (N, V); when Field_Port_Map_Aspect_Chain => Set_Port_Map_Aspect_Chain (N, V); when Field_Configuration_Name => Set_Configuration_Name (N, V); when Field_Component_Configuration => Set_Component_Configuration (N, V); when Field_Configuration_Specification => Set_Configuration_Specification (N, V); when Field_Default_Binding_Indication => Set_Default_Binding_Indication (N, V); when Field_Default_Configuration_Declaration => Set_Default_Configuration_Declaration (N, V); when Field_Expression => Set_Expression (N, V); when Field_Allocator_Designated_Type => Set_Allocator_Designated_Type (N, V); when Field_Selected_Waveform_Chain => Set_Selected_Waveform_Chain (N, V); when Field_Conditional_Waveform_Chain => Set_Conditional_Waveform_Chain (N, V); when Field_Guard_Expression => Set_Guard_Expression (N, V); when Field_Guard_Decl => Set_Guard_Decl (N, V); when Field_Block_Block_Configuration => Set_Block_Block_Configuration (N, V); when Field_Package_Header => Set_Package_Header (N, V); when Field_Block_Header => Set_Block_Header (N, V); when Field_Uninstantiated_Package_Name => Set_Uninstantiated_Package_Name (N, V); when Field_Generate_Block_Configuration => Set_Generate_Block_Configuration (N, V); when Field_Generate_Statement_Body => Set_Generate_Statement_Body (N, V); when Field_Generate_Else_Clause => Set_Generate_Else_Clause (N, V); when Field_Condition => Set_Condition (N, V); when Field_Else_Clause => Set_Else_Clause (N, V); when Field_Parameter_Specification => Set_Parameter_Specification (N, V); when Field_Parent => Set_Parent (N, V); when Field_Loop_Label => Set_Loop_Label (N, V); when Field_Component_Name => Set_Component_Name (N, V); when Field_Entity_Aspect => Set_Entity_Aspect (N, V); when Field_Default_Entity_Aspect => Set_Default_Entity_Aspect (N, V); when Field_Default_Generic_Map_Aspect_Chain => Set_Default_Generic_Map_Aspect_Chain (N, V); when Field_Default_Port_Map_Aspect_Chain => Set_Default_Port_Map_Aspect_Chain (N, V); when Field_Binding_Indication => Set_Binding_Indication (N, V); when Field_Named_Entity => Set_Named_Entity (N, V); when Field_Alias_Declaration => Set_Alias_Declaration (N, V); when Field_Error_Origin => Set_Error_Origin (N, V); when Field_Operand => Set_Operand (N, V); when Field_Left => Set_Left (N, V); when Field_Right => Set_Right (N, V); when Field_Unit_Name => Set_Unit_Name (N, V); when Field_Name => Set_Name (N, V); when Field_Group_Template_Name => Set_Group_Template_Name (N, V); when Field_Prefix => Set_Prefix (N, V); when Field_Signature_Prefix => Set_Signature_Prefix (N, V); when Field_Slice_Subtype => Set_Slice_Subtype (N, V); when Field_Suffix => Set_Suffix (N, V); when Field_Index_Subtype => Set_Index_Subtype (N, V); when Field_Parameter => Set_Parameter (N, V); when Field_Actual_Type => Set_Actual_Type (N, V); when Field_Associated_Interface => Set_Associated_Interface (N, V); when Field_Association_Chain => Set_Association_Chain (N, V); when Field_Individual_Association_Chain => Set_Individual_Association_Chain (N, V); when Field_Aggregate_Info => Set_Aggregate_Info (N, V); when Field_Sub_Aggregate_Info => Set_Sub_Aggregate_Info (N, V); when Field_Aggr_Low_Limit => Set_Aggr_Low_Limit (N, V); when Field_Aggr_High_Limit => Set_Aggr_High_Limit (N, V); when Field_Association_Choices_Chain => Set_Association_Choices_Chain (N, V); when Field_Case_Statement_Alternative_Chain => Set_Case_Statement_Alternative_Chain (N, V); when Field_Procedure_Call => Set_Procedure_Call (N, V); when Field_Implementation => Set_Implementation (N, V); when Field_Parameter_Association_Chain => Set_Parameter_Association_Chain (N, V); when Field_Method_Object => Set_Method_Object (N, V); when Field_Subtype_Type_Mark => Set_Subtype_Type_Mark (N, V); when Field_Type_Conversion_Subtype => Set_Type_Conversion_Subtype (N, V); when Field_Type_Mark => Set_Type_Mark (N, V); when Field_File_Type_Mark => Set_File_Type_Mark (N, V); when Field_Return_Type_Mark => Set_Return_Type_Mark (N, V); when Field_Alias_Signature => Set_Alias_Signature (N, V); when Field_Attribute_Signature => Set_Attribute_Signature (N, V); when Field_Simple_Name_Subtype => Set_Simple_Name_Subtype (N, V); when Field_Protected_Type_Body => Set_Protected_Type_Body (N, V); when Field_Protected_Type_Declaration => Set_Protected_Type_Declaration (N, V); when others => raise Internal_Error; end case; end Set_Iir; function Get_Iir_All_Sensitized (N : Iir; F : Fields_Enum) return Iir_All_Sensitized is begin pragma Assert (Fields_Type (F) = Type_Iir_All_Sensitized); case F is when Field_All_Sensitized_State => return Get_All_Sensitized_State (N); when others => raise Internal_Error; end case; end Get_Iir_All_Sensitized; procedure Set_Iir_All_Sensitized (N : Iir; F : Fields_Enum; V: Iir_All_Sensitized) is begin pragma Assert (Fields_Type (F) = Type_Iir_All_Sensitized); case F is when Field_All_Sensitized_State => Set_All_Sensitized_State (N, V); when others => raise Internal_Error; end case; end Set_Iir_All_Sensitized; function Get_Iir_Constraint (N : Iir; F : Fields_Enum) return Iir_Constraint is begin pragma Assert (Fields_Type (F) = Type_Iir_Constraint); case F is when Field_Constraint_State => return Get_Constraint_State (N); when others => raise Internal_Error; end case; end Get_Iir_Constraint; procedure Set_Iir_Constraint (N : Iir; F : Fields_Enum; V: Iir_Constraint) is begin pragma Assert (Fields_Type (F) = Type_Iir_Constraint); case F is when Field_Constraint_State => Set_Constraint_State (N, V); when others => raise Internal_Error; end case; end Set_Iir_Constraint; function Get_Iir_Delay_Mechanism (N : Iir; F : Fields_Enum) return Iir_Delay_Mechanism is begin pragma Assert (Fields_Type (F) = Type_Iir_Delay_Mechanism); case F is when Field_Delay_Mechanism => return Get_Delay_Mechanism (N); when others => raise Internal_Error; end case; end Get_Iir_Delay_Mechanism; procedure Set_Iir_Delay_Mechanism (N : Iir; F : Fields_Enum; V: Iir_Delay_Mechanism) is begin pragma Assert (Fields_Type (F) = Type_Iir_Delay_Mechanism); case F is when Field_Delay_Mechanism => Set_Delay_Mechanism (N, V); when others => raise Internal_Error; end case; end Set_Iir_Delay_Mechanism; function Get_Iir_Direction (N : Iir; F : Fields_Enum) return Iir_Direction is begin pragma Assert (Fields_Type (F) = Type_Iir_Direction); case F is when Field_Direction => return Get_Direction (N); when others => raise Internal_Error; end case; end Get_Iir_Direction; procedure Set_Iir_Direction (N : Iir; F : Fields_Enum; V: Iir_Direction) is begin pragma Assert (Fields_Type (F) = Type_Iir_Direction); case F is when Field_Direction => Set_Direction (N, V); when others => raise Internal_Error; end case; end Set_Iir_Direction; function Get_Iir_Fp64 (N : Iir; F : Fields_Enum) return Iir_Fp64 is begin pragma Assert (Fields_Type (F) = Type_Iir_Fp64); case F is when Field_Fp_Value => return Get_Fp_Value (N); when others => raise Internal_Error; end case; end Get_Iir_Fp64; procedure Set_Iir_Fp64 (N : Iir; F : Fields_Enum; V: Iir_Fp64) is begin pragma Assert (Fields_Type (F) = Type_Iir_Fp64); case F is when Field_Fp_Value => Set_Fp_Value (N, V); when others => raise Internal_Error; end case; end Set_Iir_Fp64; function Get_Iir_Index32 (N : Iir; F : Fields_Enum) return Iir_Index32 is begin pragma Assert (Fields_Type (F) = Type_Iir_Index32); case F is when Field_Element_Position => return Get_Element_Position (N); when others => raise Internal_Error; end case; end Get_Iir_Index32; procedure Set_Iir_Index32 (N : Iir; F : Fields_Enum; V: Iir_Index32) is begin pragma Assert (Fields_Type (F) = Type_Iir_Index32); case F is when Field_Element_Position => Set_Element_Position (N, V); when others => raise Internal_Error; end case; end Set_Iir_Index32; function Get_Iir_Int32 (N : Iir; F : Fields_Enum) return Iir_Int32 is begin pragma Assert (Fields_Type (F) = Type_Iir_Int32); case F is when Field_Enum_Pos => return Get_Enum_Pos (N); when Field_Overload_Number => return Get_Overload_Number (N); when Field_Subprogram_Depth => return Get_Subprogram_Depth (N); when Field_Subprogram_Hash => return Get_Subprogram_Hash (N); when Field_Impure_Depth => return Get_Impure_Depth (N); when Field_Aggr_Min_Length => return Get_Aggr_Min_Length (N); when others => raise Internal_Error; end case; end Get_Iir_Int32; procedure Set_Iir_Int32 (N : Iir; F : Fields_Enum; V: Iir_Int32) is begin pragma Assert (Fields_Type (F) = Type_Iir_Int32); case F is when Field_Enum_Pos => Set_Enum_Pos (N, V); when Field_Overload_Number => Set_Overload_Number (N, V); when Field_Subprogram_Depth => Set_Subprogram_Depth (N, V); when Field_Subprogram_Hash => Set_Subprogram_Hash (N, V); when Field_Impure_Depth => Set_Impure_Depth (N, V); when Field_Aggr_Min_Length => Set_Aggr_Min_Length (N, V); when others => raise Internal_Error; end case; end Set_Iir_Int32; function Get_Iir_Int64 (N : Iir; F : Fields_Enum) return Iir_Int64 is begin pragma Assert (Fields_Type (F) = Type_Iir_Int64); case F is when Field_Value => return Get_Value (N); when others => raise Internal_Error; end case; end Get_Iir_Int64; procedure Set_Iir_Int64 (N : Iir; F : Fields_Enum; V: Iir_Int64) is begin pragma Assert (Fields_Type (F) = Type_Iir_Int64); case F is when Field_Value => Set_Value (N, V); when others => raise Internal_Error; end case; end Set_Iir_Int64; function Get_Iir_List (N : Iir; F : Fields_Enum) return Iir_List is begin pragma Assert (Fields_Type (F) = Type_Iir_List); case F is when Field_File_Dependence_List => return Get_File_Dependence_List (N); when Field_Dependence_List => return Get_Dependence_List (N); when Field_Analysis_Checks_List => return Get_Analysis_Checks_List (N); when Field_Simple_Aggregate_List => return Get_Simple_Aggregate_List (N); when Field_Entity_Name_List => return Get_Entity_Name_List (N); when Field_Signal_List => return Get_Signal_List (N); when Field_Enumeration_Literal_List => return Get_Enumeration_Literal_List (N); when Field_Group_Constituent_List => return Get_Group_Constituent_List (N); when Field_Index_Subtype_List => return Get_Index_Subtype_List (N); when Field_Index_Subtype_Definition_List => return Get_Index_Subtype_Definition_List (N); when Field_Index_Constraint_List => return Get_Index_Constraint_List (N); when Field_Elements_Declaration_List => return Get_Elements_Declaration_List (N); when Field_Index_List => return Get_Index_List (N); when Field_Sensitivity_List => return Get_Sensitivity_List (N); when Field_Callees_List => return Get_Callees_List (N); when Field_Guard_Sensitivity_List => return Get_Guard_Sensitivity_List (N); when Field_Instantiation_List => return Get_Instantiation_List (N); when Field_Incomplete_Type_List => return Get_Incomplete_Type_List (N); when Field_Type_Marks_List => return Get_Type_Marks_List (N); when Field_Overload_List => return Get_Overload_List (N); when others => raise Internal_Error; end case; end Get_Iir_List; procedure Set_Iir_List (N : Iir; F : Fields_Enum; V: Iir_List) is begin pragma Assert (Fields_Type (F) = Type_Iir_List); case F is when Field_File_Dependence_List => Set_File_Dependence_List (N, V); when Field_Dependence_List => Set_Dependence_List (N, V); when Field_Analysis_Checks_List => Set_Analysis_Checks_List (N, V); when Field_Simple_Aggregate_List => Set_Simple_Aggregate_List (N, V); when Field_Entity_Name_List => Set_Entity_Name_List (N, V); when Field_Signal_List => Set_Signal_List (N, V); when Field_Enumeration_Literal_List => Set_Enumeration_Literal_List (N, V); when Field_Group_Constituent_List => Set_Group_Constituent_List (N, V); when Field_Index_Subtype_List => Set_Index_Subtype_List (N, V); when Field_Index_Subtype_Definition_List => Set_Index_Subtype_Definition_List (N, V); when Field_Index_Constraint_List => Set_Index_Constraint_List (N, V); when Field_Elements_Declaration_List => Set_Elements_Declaration_List (N, V); when Field_Index_List => Set_Index_List (N, V); when Field_Sensitivity_List => Set_Sensitivity_List (N, V); when Field_Callees_List => Set_Callees_List (N, V); when Field_Guard_Sensitivity_List => Set_Guard_Sensitivity_List (N, V); when Field_Instantiation_List => Set_Instantiation_List (N, V); when Field_Incomplete_Type_List => Set_Incomplete_Type_List (N, V); when Field_Type_Marks_List => Set_Type_Marks_List (N, V); when Field_Overload_List => Set_Overload_List (N, V); when others => raise Internal_Error; end case; end Set_Iir_List; function Get_Iir_Mode (N : Iir; F : Fields_Enum) return Iir_Mode is begin pragma Assert (Fields_Type (F) = Type_Iir_Mode); case F is when Field_Mode => return Get_Mode (N); when others => raise Internal_Error; end case; end Get_Iir_Mode; procedure Set_Iir_Mode (N : Iir; F : Fields_Enum; V: Iir_Mode) is begin pragma Assert (Fields_Type (F) = Type_Iir_Mode); case F is when Field_Mode => Set_Mode (N, V); when others => raise Internal_Error; end case; end Set_Iir_Mode; function Get_Iir_Predefined_Functions (N : Iir; F : Fields_Enum) return Iir_Predefined_Functions is begin pragma Assert (Fields_Type (F) = Type_Iir_Predefined_Functions); case F is when Field_Implicit_Definition => return Get_Implicit_Definition (N); when others => raise Internal_Error; end case; end Get_Iir_Predefined_Functions; procedure Set_Iir_Predefined_Functions (N : Iir; F : Fields_Enum; V: Iir_Predefined_Functions) is begin pragma Assert (Fields_Type (F) = Type_Iir_Predefined_Functions); case F is when Field_Implicit_Definition => Set_Implicit_Definition (N, V); when others => raise Internal_Error; end case; end Set_Iir_Predefined_Functions; function Get_Iir_Pure_State (N : Iir; F : Fields_Enum) return Iir_Pure_State is begin pragma Assert (Fields_Type (F) = Type_Iir_Pure_State); case F is when Field_Purity_State => return Get_Purity_State (N); when others => raise Internal_Error; end case; end Get_Iir_Pure_State; procedure Set_Iir_Pure_State (N : Iir; F : Fields_Enum; V: Iir_Pure_State) is begin pragma Assert (Fields_Type (F) = Type_Iir_Pure_State); case F is when Field_Purity_State => Set_Purity_State (N, V); when others => raise Internal_Error; end case; end Set_Iir_Pure_State; function Get_Iir_Signal_Kind (N : Iir; F : Fields_Enum) return Iir_Signal_Kind is begin pragma Assert (Fields_Type (F) = Type_Iir_Signal_Kind); case F is when Field_Signal_Kind => return Get_Signal_Kind (N); when others => raise Internal_Error; end case; end Get_Iir_Signal_Kind; procedure Set_Iir_Signal_Kind (N : Iir; F : Fields_Enum; V: Iir_Signal_Kind) is begin pragma Assert (Fields_Type (F) = Type_Iir_Signal_Kind); case F is when Field_Signal_Kind => Set_Signal_Kind (N, V); when others => raise Internal_Error; end case; end Set_Iir_Signal_Kind; function Get_Iir_Staticness (N : Iir; F : Fields_Enum) return Iir_Staticness is begin pragma Assert (Fields_Type (F) = Type_Iir_Staticness); case F is when Field_Type_Staticness => return Get_Type_Staticness (N); when Field_Expr_Staticness => return Get_Expr_Staticness (N); when Field_Name_Staticness => return Get_Name_Staticness (N); when Field_Value_Staticness => return Get_Value_Staticness (N); when Field_Choice_Staticness => return Get_Choice_Staticness (N); when others => raise Internal_Error; end case; end Get_Iir_Staticness; procedure Set_Iir_Staticness (N : Iir; F : Fields_Enum; V: Iir_Staticness) is begin pragma Assert (Fields_Type (F) = Type_Iir_Staticness); case F is when Field_Type_Staticness => Set_Type_Staticness (N, V); when Field_Expr_Staticness => Set_Expr_Staticness (N, V); when Field_Name_Staticness => Set_Name_Staticness (N, V); when Field_Value_Staticness => Set_Value_Staticness (N, V); when Field_Choice_Staticness => Set_Choice_Staticness (N, V); when others => raise Internal_Error; end case; end Set_Iir_Staticness; function Get_Int32 (N : Iir; F : Fields_Enum) return Int32 is begin pragma Assert (Fields_Type (F) = Type_Int32); case F is when Field_Design_Unit_Source_Line => return Get_Design_Unit_Source_Line (N); when Field_Design_Unit_Source_Col => return Get_Design_Unit_Source_Col (N); when Field_String_Length => return Get_String_Length (N); when others => raise Internal_Error; end case; end Get_Int32; procedure Set_Int32 (N : Iir; F : Fields_Enum; V: Int32) is begin pragma Assert (Fields_Type (F) = Type_Int32); case F is when Field_Design_Unit_Source_Line => Set_Design_Unit_Source_Line (N, V); when Field_Design_Unit_Source_Col => Set_Design_Unit_Source_Col (N, V); when Field_String_Length => Set_String_Length (N, V); when others => raise Internal_Error; end case; end Set_Int32; function Get_Location_Type (N : Iir; F : Fields_Enum) return Location_Type is begin pragma Assert (Fields_Type (F) = Type_Location_Type); case F is when Field_End_Location => return Get_End_Location (N); when others => raise Internal_Error; end case; end Get_Location_Type; procedure Set_Location_Type (N : Iir; F : Fields_Enum; V: Location_Type) is begin pragma Assert (Fields_Type (F) = Type_Location_Type); case F is when Field_End_Location => Set_End_Location (N, V); when others => raise Internal_Error; end case; end Set_Location_Type; function Get_Name_Id (N : Iir; F : Fields_Enum) return Name_Id is begin pragma Assert (Fields_Type (F) = Type_Name_Id); case F is when Field_Design_File_Filename => return Get_Design_File_Filename (N); when Field_Design_File_Directory => return Get_Design_File_Directory (N); when Field_Library_Directory => return Get_Library_Directory (N); when Field_Identifier => return Get_Identifier (N); when Field_Label => return Get_Label (N); when Field_Alternative_Label => return Get_Alternative_Label (N); when Field_Simple_Name_Identifier => return Get_Simple_Name_Identifier (N); when others => raise Internal_Error; end case; end Get_Name_Id; procedure Set_Name_Id (N : Iir; F : Fields_Enum; V: Name_Id) is begin pragma Assert (Fields_Type (F) = Type_Name_Id); case F is when Field_Design_File_Filename => Set_Design_File_Filename (N, V); when Field_Design_File_Directory => Set_Design_File_Directory (N, V); when Field_Library_Directory => Set_Library_Directory (N, V); when Field_Identifier => Set_Identifier (N, V); when Field_Label => Set_Label (N, V); when Field_Alternative_Label => Set_Alternative_Label (N, V); when Field_Simple_Name_Identifier => Set_Simple_Name_Identifier (N, V); when others => raise Internal_Error; end case; end Set_Name_Id; function Get_PSL_NFA (N : Iir; F : Fields_Enum) return PSL_NFA is begin pragma Assert (Fields_Type (F) = Type_PSL_NFA); case F is when Field_PSL_NFA => return Get_PSL_NFA (N); when others => raise Internal_Error; end case; end Get_PSL_NFA; procedure Set_PSL_NFA (N : Iir; F : Fields_Enum; V: PSL_NFA) is begin pragma Assert (Fields_Type (F) = Type_PSL_NFA); case F is when Field_PSL_NFA => Set_PSL_NFA (N, V); when others => raise Internal_Error; end case; end Set_PSL_NFA; function Get_PSL_Node (N : Iir; F : Fields_Enum) return PSL_Node is begin pragma Assert (Fields_Type (F) = Type_PSL_Node); case F is when Field_Psl_Property => return Get_Psl_Property (N); when Field_Psl_Declaration => return Get_Psl_Declaration (N); when Field_Psl_Expression => return Get_Psl_Expression (N); when Field_Psl_Boolean => return Get_Psl_Boolean (N); when Field_PSL_Clock => return Get_PSL_Clock (N); when others => raise Internal_Error; end case; end Get_PSL_Node; procedure Set_PSL_Node (N : Iir; F : Fields_Enum; V: PSL_Node) is begin pragma Assert (Fields_Type (F) = Type_PSL_Node); case F is when Field_Psl_Property => Set_Psl_Property (N, V); when Field_Psl_Declaration => Set_Psl_Declaration (N, V); when Field_Psl_Expression => Set_Psl_Expression (N, V); when Field_Psl_Boolean => Set_Psl_Boolean (N, V); when Field_PSL_Clock => Set_PSL_Clock (N, V); when others => raise Internal_Error; end case; end Set_PSL_Node; function Get_Source_Ptr (N : Iir; F : Fields_Enum) return Source_Ptr is begin pragma Assert (Fields_Type (F) = Type_Source_Ptr); case F is when Field_Design_Unit_Source_Pos => return Get_Design_Unit_Source_Pos (N); when others => raise Internal_Error; end case; end Get_Source_Ptr; procedure Set_Source_Ptr (N : Iir; F : Fields_Enum; V: Source_Ptr) is begin pragma Assert (Fields_Type (F) = Type_Source_Ptr); case F is when Field_Design_Unit_Source_Pos => Set_Design_Unit_Source_Pos (N, V); when others => raise Internal_Error; end case; end Set_Source_Ptr; function Get_String8_Id (N : Iir; F : Fields_Enum) return String8_Id is begin pragma Assert (Fields_Type (F) = Type_String8_Id); case F is when Field_String8_Id => return Get_String8_Id (N); when others => raise Internal_Error; end case; end Get_String8_Id; procedure Set_String8_Id (N : Iir; F : Fields_Enum; V: String8_Id) is begin pragma Assert (Fields_Type (F) = Type_String8_Id); case F is when Field_String8_Id => Set_String8_Id (N, V); when others => raise Internal_Error; end case; end Set_String8_Id; function Get_Time_Stamp_Id (N : Iir; F : Fields_Enum) return Time_Stamp_Id is begin pragma Assert (Fields_Type (F) = Type_Time_Stamp_Id); case F is when Field_File_Time_Stamp => return Get_File_Time_Stamp (N); when Field_Analysis_Time_Stamp => return Get_Analysis_Time_Stamp (N); when others => raise Internal_Error; end case; end Get_Time_Stamp_Id; procedure Set_Time_Stamp_Id (N : Iir; F : Fields_Enum; V: Time_Stamp_Id) is begin pragma Assert (Fields_Type (F) = Type_Time_Stamp_Id); case F is when Field_File_Time_Stamp => Set_File_Time_Stamp (N, V); when Field_Analysis_Time_Stamp => Set_Analysis_Time_Stamp (N, V); when others => raise Internal_Error; end case; end Set_Time_Stamp_Id; function Get_Token_Type (N : Iir; F : Fields_Enum) return Token_Type is begin pragma Assert (Fields_Type (F) = Type_Token_Type); case F is when Field_Entity_Class => return Get_Entity_Class (N); when others => raise Internal_Error; end case; end Get_Token_Type; procedure Set_Token_Type (N : Iir; F : Fields_Enum; V: Token_Type) is begin pragma Assert (Fields_Type (F) = Type_Token_Type); case F is when Field_Entity_Class => Set_Entity_Class (N, V); when others => raise Internal_Error; end case; end Set_Token_Type; function Get_Tri_State_Type (N : Iir; F : Fields_Enum) return Tri_State_Type is begin pragma Assert (Fields_Type (F) = Type_Tri_State_Type); case F is when Field_Guarded_Target_State => return Get_Guarded_Target_State (N); when Field_Wait_State => return Get_Wait_State (N); when others => raise Internal_Error; end case; end Get_Tri_State_Type; procedure Set_Tri_State_Type (N : Iir; F : Fields_Enum; V: Tri_State_Type) is begin pragma Assert (Fields_Type (F) = Type_Tri_State_Type); case F is when Field_Guarded_Target_State => Set_Guarded_Target_State (N, V); when Field_Wait_State => Set_Wait_State (N, V); when others => raise Internal_Error; end case; end Set_Tri_State_Type; function Has_First_Design_Unit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_First_Design_Unit; function Has_Last_Design_Unit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_Last_Design_Unit; function Has_Library_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Library_Clause; end Has_Library_Declaration; function Has_File_Time_Stamp (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_File_Time_Stamp; function Has_Analysis_Time_Stamp (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_Analysis_Time_Stamp; function Has_Library (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_Library; function Has_File_Dependence_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_File_Dependence_List; function Has_Design_File_Filename (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_Design_File_Filename; function Has_Design_File_Directory (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_File; end Has_Design_File_Directory; function Has_Design_File (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Design_File; function Has_Design_File_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Library_Declaration; end Has_Design_File_Chain; function Has_Library_Directory (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Library_Declaration; end Has_Library_Directory; function Has_Date (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Design_Unit | Iir_Kind_Library_Declaration => return True; when others => return False; end case; end Has_Date; function Has_Context_Items (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Context_Items; function Has_Dependence_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Dependence_List; function Has_Analysis_Checks_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Analysis_Checks_List; function Has_Date_State (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Date_State; function Has_Guarded_Target_State (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Signal_Assignment_Statement => return True; when others => return False; end case; end Has_Guarded_Target_State; function Has_Library_Unit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Library_Unit; function Has_Hash_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Hash_Chain; function Has_Design_Unit_Source_Pos (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Design_Unit_Source_Pos; function Has_Design_Unit_Source_Line (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Design_Unit_Source_Line; function Has_Design_Unit_Source_Col (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_Design_Unit_Source_Col; function Has_Value (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Integer_Literal | Iir_Kind_Physical_Int_Literal => return True; when others => return False; end case; end Has_Value; function Has_Enum_Pos (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Enumeration_Literal; end Has_Enum_Pos; function Has_Physical_Literal (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Unit_Declaration; end Has_Physical_Literal; function Has_Physical_Unit_Value (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Unit_Declaration; end Has_Physical_Unit_Value; function Has_Fp_Value (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Floating_Point_Literal | Iir_Kind_Physical_Fp_Literal => return True; when others => return False; end case; end Has_Fp_Value; function Has_Simple_Aggregate_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Aggregate; end Has_Simple_Aggregate_List; function Has_String8_Id (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_String8_Id; function Has_String_Length (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_String_Length; function Has_Bit_String_Base (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_Bit_String_Base; function Has_Has_Signed (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_Has_Signed; function Has_Has_Sign (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_Has_Sign; function Has_Has_Length (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_String_Literal8; end Has_Has_Length; function Has_Literal_Origin (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Integer_Literal | Iir_Kind_Floating_Point_Literal | Iir_Kind_String_Literal8 | Iir_Kind_Physical_Int_Literal | Iir_Kind_Physical_Fp_Literal | Iir_Kind_Simple_Aggregate | Iir_Kind_Overflow_Literal | Iir_Kind_Enumeration_Literal => return True; when others => return False; end case; end Has_Literal_Origin; function Has_Range_Origin (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Range_Expression; end Has_Range_Origin; function Has_Literal_Subtype (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_String_Literal8 | Iir_Kind_Simple_Aggregate | Iir_Kind_Aggregate => return True; when others => return False; end case; end Has_Literal_Subtype; function Has_Entity_Class (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Entity_Class | Iir_Kind_Attribute_Specification => return True; when others => return False; end case; end Has_Entity_Class; function Has_Entity_Name_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Specification; end Has_Entity_Name_List; function Has_Attribute_Designator (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Specification; end Has_Attribute_Designator; function Has_Attribute_Specification_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Specification; end Has_Attribute_Specification_Chain; function Has_Attribute_Specification (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Value; end Has_Attribute_Specification; function Has_Signal_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Disconnection_Specification; end Has_Signal_List; function Has_Designated_Entity (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Value; end Has_Designated_Entity; function Has_Formal (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_By_Individual | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package => return True; when others => return False; end case; end Has_Formal; function Has_Actual (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_Package => return True; when others => return False; end case; end Has_Actual; function Has_In_Conversion (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_By_Expression; end Has_In_Conversion; function Has_Out_Conversion (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_By_Expression; end Has_Out_Conversion; function Has_Whole_Association_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_By_Individual | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package => return True; when others => return False; end case; end Has_Whole_Association_Flag; function Has_Collapse_Signal_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_By_Individual | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package => return True; when others => return False; end case; end Has_Collapse_Signal_Flag; function Has_Artificial_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_Open; end Has_Artificial_Flag; function Has_Open_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Interface_Signal_Declaration; end Has_Open_Flag; function Has_After_Drivers_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Object_Alias_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_After_Drivers_Flag; function Has_We_Value (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Waveform_Element; end Has_We_Value; function Has_Time (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Waveform_Element; end Has_Time; function Has_Associated_Expr (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Choice_By_Others | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_None | Iir_Kind_Choice_By_Name => return True; when others => return False; end case; end Has_Associated_Expr; function Has_Associated_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Choice_By_Others | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_None | Iir_Kind_Choice_By_Name => return True; when others => return False; end case; end Has_Associated_Chain; function Has_Choice_Name (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Choice_By_Name; end Has_Choice_Name; function Has_Choice_Expression (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Choice_By_Expression; end Has_Choice_Expression; function Has_Choice_Range (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Choice_By_Range; end Has_Choice_Range; function Has_Same_Alternative_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Choice_By_Others | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_None | Iir_Kind_Choice_By_Name => return True; when others => return False; end case; end Has_Same_Alternative_Flag; function Has_Architecture (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Entity_Aspect_Entity; end Has_Architecture; function Has_Block_Specification (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Configuration; end Has_Block_Specification; function Has_Prev_Block_Configuration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Configuration; end Has_Prev_Block_Configuration; function Has_Configuration_Item_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Configuration; end Has_Configuration_Item_Chain; function Has_Attribute_Value_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_Generate_Statement_Body => return True; when others => return False; end case; end Has_Attribute_Value_Chain; function Has_Spec_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Value; end Has_Spec_Chain; function Has_Attribute_Value_Spec_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Specification; end Has_Attribute_Value_Spec_Chain; function Has_Entity_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Entity_Aspect_Entity | Iir_Kind_Configuration_Declaration | Iir_Kind_Architecture_Body => return True; when others => return False; end case; end Has_Entity_Name; function Has_Package (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Package_Body; end Has_Package; function Has_Package_Body (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration => return True; when others => return False; end case; end Has_Package_Body; function Has_Need_Body (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Package_Declaration; end Has_Need_Body; function Has_Block_Configuration (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Component_Configuration | Iir_Kind_Configuration_Declaration => return True; when others => return False; end case; end Has_Block_Configuration; function Has_Concurrent_Statement_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Block_Statement | Iir_Kind_Generate_Statement_Body => return True; when others => return False; end case; end Has_Concurrent_Statement_Chain; function Has_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Design_File | Iir_Kind_Design_Unit | Iir_Kind_Library_Clause | Iir_Kind_Use_Clause | Iir_Kind_Waveform_Element | Iir_Kind_Conditional_Waveform | Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_By_Individual | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package | Iir_Kind_Choice_By_Others | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_None | Iir_Kind_Choice_By_Name | Iir_Kind_Block_Configuration | Iir_Kind_Component_Configuration | Iir_Kind_Entity_Class | Iir_Kind_Attribute_Value | Iir_Kind_Record_Element_Resolution | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Terminal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Null_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement | Iir_Kind_Wait_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement | Iir_Kind_If_Statement | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute => return True; when others => return False; end case; end Has_Chain; function Has_Port_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Block_Header | Iir_Kind_Entity_Declaration | Iir_Kind_Component_Declaration => return True; when others => return False; end case; end Has_Port_Chain; function Has_Generic_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Block_Header | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Package_Header | Iir_Kind_Component_Declaration | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Interface_Package_Declaration => return True; when others => return False; end case; end Has_Generic_Chain; function Has_Type (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Integer_Literal | Iir_Kind_Floating_Point_Literal | Iir_Kind_Null_Literal | Iir_Kind_String_Literal8 | Iir_Kind_Physical_Int_Literal | Iir_Kind_Physical_Fp_Literal | Iir_Kind_Simple_Aggregate | Iir_Kind_Overflow_Literal | Iir_Kind_Attribute_Value | Iir_Kind_Record_Element_Constraint | Iir_Kind_Range_Expression | Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Unit_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator | Iir_Kind_Not_Operator | Iir_Kind_Condition_Operator | Iir_Kind_Reduction_And_Operator | Iir_Kind_Reduction_Or_Operator | Iir_Kind_Reduction_Nand_Operator | Iir_Kind_Reduction_Nor_Operator | Iir_Kind_Reduction_Xor_Operator | Iir_Kind_Reduction_Xnor_Operator | Iir_Kind_And_Operator | Iir_Kind_Or_Operator | Iir_Kind_Nand_Operator | Iir_Kind_Nor_Operator | Iir_Kind_Xor_Operator | Iir_Kind_Xnor_Operator | Iir_Kind_Equality_Operator | Iir_Kind_Inequality_Operator | Iir_Kind_Less_Than_Operator | Iir_Kind_Less_Than_Or_Equal_Operator | Iir_Kind_Greater_Than_Operator | Iir_Kind_Greater_Than_Or_Equal_Operator | Iir_Kind_Match_Equality_Operator | Iir_Kind_Match_Inequality_Operator | Iir_Kind_Match_Less_Than_Operator | Iir_Kind_Match_Less_Than_Or_Equal_Operator | Iir_Kind_Match_Greater_Than_Operator | Iir_Kind_Match_Greater_Than_Or_Equal_Operator | Iir_Kind_Sll_Operator | Iir_Kind_Sla_Operator | Iir_Kind_Srl_Operator | Iir_Kind_Sra_Operator | Iir_Kind_Rol_Operator | Iir_Kind_Ror_Operator | Iir_Kind_Addition_Operator | Iir_Kind_Substraction_Operator | Iir_Kind_Concatenation_Operator | Iir_Kind_Multiplication_Operator | Iir_Kind_Division_Operator | Iir_Kind_Modulus_Operator | Iir_Kind_Remainder_Operator | Iir_Kind_Exponentiation_Operator | Iir_Kind_Function_Call | Iir_Kind_Aggregate | Iir_Kind_Parenthesis_Expression | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion | Iir_Kind_Allocator_By_Expression | Iir_Kind_Allocator_By_Subtype | Iir_Kind_Selected_Element | Iir_Kind_Dereference | Iir_Kind_Implicit_Dereference | Iir_Kind_Slice_Name | Iir_Kind_Indexed_Name | Iir_Kind_Psl_Expression | Iir_Kind_Return_Statement | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Operator_Symbol | Iir_Kind_Selected_By_All_Name | Iir_Kind_Parenthesis_Name | Iir_Kind_Base_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute | Iir_Kind_Low_Type_Attribute | Iir_Kind_Ascending_Type_Attribute | Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Event_Attribute | Iir_Kind_Active_Attribute | Iir_Kind_Last_Event_Attribute | Iir_Kind_Last_Active_Attribute | Iir_Kind_Last_Value_Attribute | Iir_Kind_Driving_Attribute | Iir_Kind_Driving_Value_Attribute | Iir_Kind_Simple_Name_Attribute | Iir_Kind_Instance_Name_Attribute | Iir_Kind_Path_Name_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Type; function Has_Subtype_Indication (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Subtype_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Allocator_By_Subtype => return True; when others => return False; end case; end Has_Subtype_Indication; function Has_Discrete_Range (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Iterator_Declaration; end Has_Discrete_Range; function Has_Type_Definition (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration => return True; when others => return False; end case; end Has_Type_Definition; function Has_Subtype_Definition (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Anonymous_Type_Declaration; end Has_Subtype_Definition; function Has_Nature (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Terminal_Declaration => return True; when others => return False; end case; end Has_Nature; function Has_Mode (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_File_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Mode; function Has_Guarded_Signal_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => return True; when others => return False; end case; end Has_Guarded_Signal_Flag; function Has_Signal_Kind (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => return True; when others => return False; end case; end Has_Signal_Kind; function Has_Base_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Attribute_Value | Iir_Kind_Function_Call | Iir_Kind_Selected_Element | Iir_Kind_Dereference | Iir_Kind_Implicit_Dereference | Iir_Kind_Slice_Name | Iir_Kind_Indexed_Name | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Operator_Symbol | Iir_Kind_Selected_By_All_Name | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute | Iir_Kind_Low_Type_Attribute | Iir_Kind_Ascending_Type_Attribute | Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Simple_Name_Attribute | Iir_Kind_Instance_Name_Attribute | Iir_Kind_Path_Name_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Base_Name; function Has_Interface_Declaration_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Interface_Declaration_Chain; function Has_Subprogram_Specification (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Body | Iir_Kind_Procedure_Body => return True; when others => return False; end case; end Has_Subprogram_Specification; function Has_Sequential_Statement_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => return False; end case; end Has_Sequential_Statement_Chain; function Has_Subprogram_Body (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Subprogram_Body; function Has_Overload_Number (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Overload_Number; function Has_Subprogram_Depth (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Subprogram_Depth; function Has_Subprogram_Hash (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Subprogram_Hash; function Has_Impure_Depth (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Body | Iir_Kind_Procedure_Body => return True; when others => return False; end case; end Has_Impure_Depth; function Has_Return_Type (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration => return True; when others => return False; end case; end Has_Return_Type; function Has_Implicit_Definition (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Implicit_Definition; function Has_Type_Reference (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Type_Reference; function Has_Default_Value (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Default_Value; function Has_Deferred_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Constant_Declaration; end Has_Deferred_Declaration; function Has_Deferred_Declaration_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Constant_Declaration; end Has_Deferred_Declaration_Flag; function Has_Shared_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Variable_Declaration; end Has_Shared_Flag; function Has_Design_Unit (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body => return True; when others => return False; end case; end Has_Design_Unit; function Has_Block_Statement (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Guard_Signal_Declaration; end Has_Block_Statement; function Has_Signal_Driver (K : Iir_Kind) return Boolean is pragma Unreferenced (K); begin return False; end Has_Signal_Driver; function Has_Declaration_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Block_Configuration | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Protected_Type_Body | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_Generate_Statement_Body => return True; when others => return False; end case; end Has_Declaration_Chain; function Has_File_Logical_Name (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_File_Declaration; end Has_File_Logical_Name; function Has_File_Open_Kind (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_File_Declaration; end Has_File_Open_Kind; function Has_Element_Position (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Record_Element_Constraint | Iir_Kind_Element_Declaration => return True; when others => return False; end case; end Has_Element_Position; function Has_Element_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Record_Element_Constraint; end Has_Element_Declaration; function Has_Selected_Element (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Selected_Element; end Has_Selected_Element; function Has_Use_Clause_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Use_Clause; end Has_Use_Clause_Chain; function Has_Selected_Name (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Use_Clause; end Has_Selected_Name; function Has_Type_Declarator (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Access_Type_Definition | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_File_Type_Definition | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Type_Declarator; function Has_Enumeration_Literal_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Enumeration_Type_Definition; end Has_Enumeration_Literal_List; function Has_Entity_Class_Entry_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Group_Template_Declaration; end Has_Entity_Class_Entry_Chain; function Has_Group_Constituent_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Group_Declaration; end Has_Group_Constituent_List; function Has_Unit_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Physical_Type_Definition; end Has_Unit_Chain; function Has_Primary_Unit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Physical_Type_Definition; end Has_Primary_Unit; function Has_Identifier (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Design_Unit | Iir_Kind_Library_Clause | Iir_Kind_Record_Element_Constraint | Iir_Kind_Record_Element_Resolution | Iir_Kind_Protected_Type_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Terminal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Null_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement | Iir_Kind_Wait_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement | Iir_Kind_If_Statement | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Operator_Symbol | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Identifier; function Has_Label (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Null_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement | Iir_Kind_Wait_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement | Iir_Kind_If_Statement => return True; when others => return False; end case; end Has_Label; function Has_Visible_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Record_Element_Constraint | Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Unit_Declaration | Iir_Kind_Library_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Terminal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_If_Generate_Else_Clause | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Null_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement | Iir_Kind_Wait_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement | Iir_Kind_If_Statement => return True; when others => return False; end case; end Has_Visible_Flag; function Has_Range_Constraint (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Subtype_Definition => return True; when others => return False; end case; end Has_Range_Constraint; function Has_Direction (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Range_Expression; end Has_Direction; function Has_Left_Limit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Range_Expression; end Has_Left_Limit; function Has_Right_Limit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Range_Expression; end Has_Right_Limit; function Has_Base_Type (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Access_Type_Definition | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_File_Type_Definition | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Base_Type; function Has_Resolution_Indication (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Element_Resolution | Iir_Kind_Record_Element_Resolution | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Subtype_Definition => return True; when others => return False; end case; end Has_Resolution_Indication; function Has_Record_Element_Resolution_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Record_Resolution; end Has_Record_Element_Resolution_Chain; function Has_Tolerance (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Subtype_Definition | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Simple_Simultaneous_Statement => return True; when others => return False; end case; end Has_Tolerance; function Has_Plus_Terminal (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration => return True; when others => return False; end case; end Has_Plus_Terminal; function Has_Minus_Terminal (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration => return True; when others => return False; end case; end Has_Minus_Terminal; function Has_Simultaneous_Left (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Simultaneous_Statement; end Has_Simultaneous_Left; function Has_Simultaneous_Right (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Simultaneous_Statement; end Has_Simultaneous_Right; function Has_Text_File_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_File_Type_Definition; end Has_Text_File_Flag; function Has_Only_Characters_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Enumeration_Type_Definition; end Has_Only_Characters_Flag; function Has_Type_Staticness (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Access_Type_Definition | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_File_Type_Definition | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Type_Staticness; function Has_Constraint_State (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition => return True; when others => return False; end case; end Has_Constraint_State; function Has_Index_Subtype_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition => return True; when others => return False; end case; end Has_Index_Subtype_List; function Has_Index_Subtype_Definition_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Array_Type_Definition; end Has_Index_Subtype_Definition_List; function Has_Element_Subtype_Indication (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Array_Type_Definition; end Has_Element_Subtype_Indication; function Has_Element_Subtype (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition => return True; when others => return False; end case; end Has_Element_Subtype; function Has_Index_Constraint_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Array_Subtype_Definition; end Has_Index_Constraint_List; function Has_Array_Element_Constraint (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Array_Subtype_Definition; end Has_Array_Element_Constraint; function Has_Elements_Declaration_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Record_Type_Definition | Iir_Kind_Record_Subtype_Definition => return True; when others => return False; end case; end Has_Elements_Declaration_List; function Has_Designated_Type (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Access_Type_Definition | Iir_Kind_Access_Subtype_Definition => return True; when others => return False; end case; end Has_Designated_Type; function Has_Designated_Subtype_Indication (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Access_Type_Definition | Iir_Kind_Access_Subtype_Definition => return True; when others => return False; end case; end Has_Designated_Subtype_Indication; function Has_Index_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Indexed_Name; end Has_Index_List; function Has_Reference (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Scalar_Nature_Definition; end Has_Reference; function Has_Nature_Declarator (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Scalar_Nature_Definition; end Has_Nature_Declarator; function Has_Across_Type (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Scalar_Nature_Definition; end Has_Across_Type; function Has_Through_Type (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Scalar_Nature_Definition; end Has_Through_Type; function Has_Target (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Variable_Assignment_Statement => return True; when others => return False; end case; end Has_Target; function Has_Waveform_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Conditional_Waveform | Iir_Kind_Signal_Assignment_Statement => return True; when others => return False; end case; end Has_Waveform_Chain; function Has_Guard (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment => return True; when others => return False; end case; end Has_Guard; function Has_Delay_Mechanism (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Signal_Assignment_Statement => return True; when others => return False; end case; end Has_Delay_Mechanism; function Has_Reject_Time_Expression (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Signal_Assignment_Statement => return True; when others => return False; end case; end Has_Reject_Time_Expression; function Has_Sensitivity_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Wait_Statement => return True; when others => return False; end case; end Has_Sensitivity_List; function Has_Process_Origin (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Process_Origin; function Has_Condition_Clause (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Wait_Statement; end Has_Condition_Clause; function Has_Timeout_Clause (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Wait_Statement; end Has_Timeout_Clause; function Has_Postponed_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement => return True; when others => return False; end case; end Has_Postponed_Flag; function Has_Callees_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Callees_List; function Has_Passive_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Procedure_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Passive_Flag; function Has_Resolution_Function_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Function_Declaration; end Has_Resolution_Function_Flag; function Has_Wait_State (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Wait_State; function Has_All_Sensitized_State (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_All_Sensitized_State; function Has_Seen_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Seen_Flag; function Has_Pure_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Function_Declaration; end Has_Pure_Flag; function Has_Foreign_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Architecture_Body | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Foreign_Flag; function Has_Resolved_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Access_Type_Definition | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_File_Type_Definition | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Resolved_Flag; function Has_Signal_Type_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Access_Type_Definition | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_File_Type_Definition | Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Signal_Type_Flag; function Has_Has_Signal_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Incomplete_Type_Definition | Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Enumeration_Type_Definition | Iir_Kind_Integer_Type_Definition | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition => return True; when others => return False; end case; end Has_Has_Signal_Flag; function Has_Purity_State (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Procedure_Declaration; end Has_Purity_State; function Has_Elab_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Design_File | Iir_Kind_Design_Unit | Iir_Kind_Library_Declaration => return True; when others => return False; end case; end Has_Elab_Flag; function Has_Index_Constraint_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition => return True; when others => return False; end case; end Has_Index_Constraint_Flag; function Has_Assertion_Condition (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Assertion_Statement => return True; when others => return False; end case; end Has_Assertion_Condition; function Has_Report_Expression (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement => return True; when others => return False; end case; end Has_Report_Expression; function Has_Severity_Expression (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement => return True; when others => return False; end case; end Has_Severity_Expression; function Has_Instantiated_Unit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Component_Instantiation_Statement; end Has_Instantiated_Unit; function Has_Generic_Map_Aspect_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Block_Header | Iir_Kind_Binding_Indication | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Header | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Component_Instantiation_Statement => return True; when others => return False; end case; end Has_Generic_Map_Aspect_Chain; function Has_Port_Map_Aspect_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Block_Header | Iir_Kind_Binding_Indication | Iir_Kind_Component_Instantiation_Statement => return True; when others => return False; end case; end Has_Port_Map_Aspect_Chain; function Has_Configuration_Name (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Entity_Aspect_Configuration; end Has_Configuration_Name; function Has_Component_Configuration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Component_Instantiation_Statement; end Has_Component_Configuration; function Has_Configuration_Specification (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Component_Instantiation_Statement; end Has_Configuration_Specification; function Has_Default_Binding_Indication (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Component_Instantiation_Statement; end Has_Default_Binding_Indication; function Has_Default_Configuration_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Architecture_Body; end Has_Default_Configuration_Declaration; function Has_Expression (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification | Iir_Kind_Parenthesis_Expression | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion | Iir_Kind_Allocator_By_Expression | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_Case_Statement => return True; when others => return False; end case; end Has_Expression; function Has_Allocator_Designated_Type (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Allocator_By_Expression | Iir_Kind_Allocator_By_Subtype => return True; when others => return False; end case; end Has_Allocator_Designated_Type; function Has_Selected_Waveform_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Concurrent_Selected_Signal_Assignment; end Has_Selected_Waveform_Chain; function Has_Conditional_Waveform_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Concurrent_Conditional_Signal_Assignment; end Has_Conditional_Waveform_Chain; function Has_Guard_Expression (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Guard_Signal_Declaration; end Has_Guard_Expression; function Has_Guard_Decl (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Statement; end Has_Guard_Decl; function Has_Guard_Sensitivity_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Guard_Signal_Declaration; end Has_Guard_Sensitivity_List; function Has_Block_Block_Configuration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Statement; end Has_Block_Block_Configuration; function Has_Package_Header (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Package_Declaration; end Has_Package_Header; function Has_Block_Header (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Block_Statement; end Has_Block_Header; function Has_Uninstantiated_Package_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Interface_Package_Declaration => return True; when others => return False; end case; end Has_Uninstantiated_Package_Name; function Has_Generate_Block_Configuration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Generate_Statement_Body; end Has_Generate_Block_Configuration; function Has_Generate_Statement_Body (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_If_Generate_Else_Clause => return True; when others => return False; end case; end Has_Generate_Statement_Body; function Has_Alternative_Label (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Generate_Statement_Body; end Has_Alternative_Label; function Has_Generate_Else_Clause (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_If_Generate_Statement | Iir_Kind_If_Generate_Else_Clause => return True; when others => return False; end case; end Has_Generate_Else_Clause; function Has_Condition (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Conditional_Waveform | Iir_Kind_If_Generate_Statement | Iir_Kind_If_Generate_Else_Clause | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => return False; end case; end Has_Condition; function Has_Else_Clause (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => return False; end case; end Has_Else_Clause; function Has_Parameter_Specification (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_For_Generate_Statement | Iir_Kind_For_Loop_Statement => return True; when others => return False; end case; end Has_Parameter_Specification; function Has_Parent (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Design_File | Iir_Kind_Design_Unit | Iir_Kind_Library_Clause | Iir_Kind_Use_Clause | Iir_Kind_Choice_By_Others | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_None | Iir_Kind_Choice_By_Name | Iir_Kind_Block_Configuration | Iir_Kind_Component_Configuration | Iir_Kind_Record_Element_Constraint | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body | Iir_Kind_Type_Declaration | Iir_Kind_Anonymous_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Unit_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Terminal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_If_Generate_Else_Clause | Iir_Kind_Signal_Assignment_Statement | Iir_Kind_Null_Statement | Iir_Kind_Assertion_Statement | Iir_Kind_Report_Statement | Iir_Kind_Wait_Statement | Iir_Kind_Variable_Assignment_Statement | Iir_Kind_Return_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => return False; end case; end Has_Parent; function Has_Loop_Label (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement => return True; when others => return False; end case; end Has_Loop_Label; function Has_Component_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Component_Configuration | Iir_Kind_Configuration_Specification => return True; when others => return False; end case; end Has_Component_Name; function Has_Instantiation_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Component_Configuration | Iir_Kind_Configuration_Specification => return True; when others => return False; end case; end Has_Instantiation_List; function Has_Entity_Aspect (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Binding_Indication; end Has_Entity_Aspect; function Has_Default_Entity_Aspect (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Binding_Indication; end Has_Default_Entity_Aspect; function Has_Default_Generic_Map_Aspect_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Binding_Indication; end Has_Default_Generic_Map_Aspect_Chain; function Has_Default_Port_Map_Aspect_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Binding_Indication; end Has_Default_Port_Map_Aspect_Chain; function Has_Binding_Indication (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Component_Configuration | Iir_Kind_Configuration_Specification => return True; when others => return False; end case; end Has_Binding_Indication; function Has_Named_Entity (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Operator_Symbol | Iir_Kind_Selected_By_All_Name | Iir_Kind_Parenthesis_Name | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Named_Entity; function Has_Alias_Declaration (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Operator_Symbol => return True; when others => return False; end case; end Has_Alias_Declaration; function Has_Expr_Staticness (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Error | Iir_Kind_Integer_Literal | Iir_Kind_Floating_Point_Literal | Iir_Kind_Null_Literal | Iir_Kind_String_Literal8 | Iir_Kind_Physical_Int_Literal | Iir_Kind_Physical_Fp_Literal | Iir_Kind_Simple_Aggregate | Iir_Kind_Overflow_Literal | Iir_Kind_Attribute_Value | Iir_Kind_Range_Expression | Iir_Kind_Unit_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator | Iir_Kind_Not_Operator | Iir_Kind_Condition_Operator | Iir_Kind_Reduction_And_Operator | Iir_Kind_Reduction_Or_Operator | Iir_Kind_Reduction_Nand_Operator | Iir_Kind_Reduction_Nor_Operator | Iir_Kind_Reduction_Xor_Operator | Iir_Kind_Reduction_Xnor_Operator | Iir_Kind_And_Operator | Iir_Kind_Or_Operator | Iir_Kind_Nand_Operator | Iir_Kind_Nor_Operator | Iir_Kind_Xor_Operator | Iir_Kind_Xnor_Operator | Iir_Kind_Equality_Operator | Iir_Kind_Inequality_Operator | Iir_Kind_Less_Than_Operator | Iir_Kind_Less_Than_Or_Equal_Operator | Iir_Kind_Greater_Than_Operator | Iir_Kind_Greater_Than_Or_Equal_Operator | Iir_Kind_Match_Equality_Operator | Iir_Kind_Match_Inequality_Operator | Iir_Kind_Match_Less_Than_Operator | Iir_Kind_Match_Less_Than_Or_Equal_Operator | Iir_Kind_Match_Greater_Than_Operator | Iir_Kind_Match_Greater_Than_Or_Equal_Operator | Iir_Kind_Sll_Operator | Iir_Kind_Sla_Operator | Iir_Kind_Srl_Operator | Iir_Kind_Sra_Operator | Iir_Kind_Rol_Operator | Iir_Kind_Ror_Operator | Iir_Kind_Addition_Operator | Iir_Kind_Substraction_Operator | Iir_Kind_Concatenation_Operator | Iir_Kind_Multiplication_Operator | Iir_Kind_Division_Operator | Iir_Kind_Modulus_Operator | Iir_Kind_Remainder_Operator | Iir_Kind_Exponentiation_Operator | Iir_Kind_Function_Call | Iir_Kind_Aggregate | Iir_Kind_Parenthesis_Expression | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion | Iir_Kind_Allocator_By_Expression | Iir_Kind_Allocator_By_Subtype | Iir_Kind_Selected_Element | Iir_Kind_Dereference | Iir_Kind_Implicit_Dereference | Iir_Kind_Slice_Name | Iir_Kind_Indexed_Name | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Selected_By_All_Name | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute | Iir_Kind_Low_Type_Attribute | Iir_Kind_Ascending_Type_Attribute | Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Event_Attribute | Iir_Kind_Active_Attribute | Iir_Kind_Last_Event_Attribute | Iir_Kind_Last_Active_Attribute | Iir_Kind_Last_Value_Attribute | Iir_Kind_Driving_Attribute | Iir_Kind_Driving_Value_Attribute | Iir_Kind_Simple_Name_Attribute | Iir_Kind_Instance_Name_Attribute | Iir_Kind_Path_Name_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Expr_Staticness; function Has_Error_Origin (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Error; end Has_Error_Origin; function Has_Operand (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator | Iir_Kind_Not_Operator | Iir_Kind_Condition_Operator | Iir_Kind_Reduction_And_Operator | Iir_Kind_Reduction_Or_Operator | Iir_Kind_Reduction_Nand_Operator | Iir_Kind_Reduction_Nor_Operator | Iir_Kind_Reduction_Xor_Operator | Iir_Kind_Reduction_Xnor_Operator => return True; when others => return False; end case; end Has_Operand; function Has_Left (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_And_Operator | Iir_Kind_Or_Operator | Iir_Kind_Nand_Operator | Iir_Kind_Nor_Operator | Iir_Kind_Xor_Operator | Iir_Kind_Xnor_Operator | Iir_Kind_Equality_Operator | Iir_Kind_Inequality_Operator | Iir_Kind_Less_Than_Operator | Iir_Kind_Less_Than_Or_Equal_Operator | Iir_Kind_Greater_Than_Operator | Iir_Kind_Greater_Than_Or_Equal_Operator | Iir_Kind_Match_Equality_Operator | Iir_Kind_Match_Inequality_Operator | Iir_Kind_Match_Less_Than_Operator | Iir_Kind_Match_Less_Than_Or_Equal_Operator | Iir_Kind_Match_Greater_Than_Operator | Iir_Kind_Match_Greater_Than_Or_Equal_Operator | Iir_Kind_Sll_Operator | Iir_Kind_Sla_Operator | Iir_Kind_Srl_Operator | Iir_Kind_Sra_Operator | Iir_Kind_Rol_Operator | Iir_Kind_Ror_Operator | Iir_Kind_Addition_Operator | Iir_Kind_Substraction_Operator | Iir_Kind_Concatenation_Operator | Iir_Kind_Multiplication_Operator | Iir_Kind_Division_Operator | Iir_Kind_Modulus_Operator | Iir_Kind_Remainder_Operator | Iir_Kind_Exponentiation_Operator => return True; when others => return False; end case; end Has_Left; function Has_Right (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_And_Operator | Iir_Kind_Or_Operator | Iir_Kind_Nand_Operator | Iir_Kind_Nor_Operator | Iir_Kind_Xor_Operator | Iir_Kind_Xnor_Operator | Iir_Kind_Equality_Operator | Iir_Kind_Inequality_Operator | Iir_Kind_Less_Than_Operator | Iir_Kind_Less_Than_Or_Equal_Operator | Iir_Kind_Greater_Than_Operator | Iir_Kind_Greater_Than_Or_Equal_Operator | Iir_Kind_Match_Equality_Operator | Iir_Kind_Match_Inequality_Operator | Iir_Kind_Match_Less_Than_Operator | Iir_Kind_Match_Less_Than_Or_Equal_Operator | Iir_Kind_Match_Greater_Than_Operator | Iir_Kind_Match_Greater_Than_Or_Equal_Operator | Iir_Kind_Sll_Operator | Iir_Kind_Sla_Operator | Iir_Kind_Srl_Operator | Iir_Kind_Sra_Operator | Iir_Kind_Rol_Operator | Iir_Kind_Ror_Operator | Iir_Kind_Addition_Operator | Iir_Kind_Substraction_Operator | Iir_Kind_Concatenation_Operator | Iir_Kind_Multiplication_Operator | Iir_Kind_Division_Operator | Iir_Kind_Modulus_Operator | Iir_Kind_Remainder_Operator | Iir_Kind_Exponentiation_Operator => return True; when others => return False; end case; end Has_Right; function Has_Unit_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Physical_Int_Literal | Iir_Kind_Physical_Fp_Literal => return True; when others => return False; end case; end Has_Unit_Name; function Has_Name (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Object_Alias_Declaration => return True; when others => return False; end case; end Has_Name; function Has_Group_Template_Name (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Group_Declaration; end Has_Group_Template_Name; function Has_Name_Staticness (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Attribute_Value | Iir_Kind_Unit_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration | Iir_Kind_Function_Call | Iir_Kind_Selected_Element | Iir_Kind_Dereference | Iir_Kind_Implicit_Dereference | Iir_Kind_Slice_Name | Iir_Kind_Indexed_Name | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name | Iir_Kind_Selected_Name | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute | Iir_Kind_Low_Type_Attribute | Iir_Kind_Ascending_Type_Attribute | Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Event_Attribute | Iir_Kind_Active_Attribute | Iir_Kind_Last_Event_Attribute | Iir_Kind_Last_Active_Attribute | Iir_Kind_Last_Value_Attribute | Iir_Kind_Driving_Attribute | Iir_Kind_Driving_Value_Attribute | Iir_Kind_Simple_Name_Attribute | Iir_Kind_Instance_Name_Attribute | Iir_Kind_Path_Name_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Name_Staticness; function Has_Prefix (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Procedure_Call | Iir_Kind_Function_Call | Iir_Kind_Selected_Element | Iir_Kind_Dereference | Iir_Kind_Implicit_Dereference | Iir_Kind_Slice_Name | Iir_Kind_Indexed_Name | Iir_Kind_Selected_Name | Iir_Kind_Selected_By_All_Name | Iir_Kind_Parenthesis_Name | Iir_Kind_Base_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute | Iir_Kind_Low_Type_Attribute | Iir_Kind_Ascending_Type_Attribute | Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Event_Attribute | Iir_Kind_Active_Attribute | Iir_Kind_Last_Event_Attribute | Iir_Kind_Last_Active_Attribute | Iir_Kind_Last_Value_Attribute | Iir_Kind_Driving_Attribute | Iir_Kind_Driving_Value_Attribute | Iir_Kind_Simple_Name_Attribute | Iir_Kind_Instance_Name_Attribute | Iir_Kind_Path_Name_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute | Iir_Kind_Attribute_Name => return True; when others => return False; end case; end Has_Prefix; function Has_Signature_Prefix (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Signature; end Has_Signature_Prefix; function Has_Slice_Subtype (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Slice_Name; end Has_Slice_Subtype; function Has_Suffix (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Slice_Name; end Has_Suffix; function Has_Index_Subtype (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute => return True; when others => return False; end case; end Has_Index_Subtype; function Has_Parameter (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Image_Attribute | Iir_Kind_Value_Attribute | Iir_Kind_Pos_Attribute | Iir_Kind_Val_Attribute | Iir_Kind_Succ_Attribute | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute | Iir_Kind_Left_Array_Attribute | Iir_Kind_Right_Array_Attribute | Iir_Kind_High_Array_Attribute | Iir_Kind_Low_Array_Attribute | Iir_Kind_Length_Array_Attribute | Iir_Kind_Ascending_Array_Attribute | Iir_Kind_Range_Array_Attribute | Iir_Kind_Reverse_Range_Array_Attribute => return True; when others => return False; end case; end Has_Parameter; function Has_Actual_Type (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_By_Individual; end Has_Actual_Type; function Has_Associated_Interface (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_Package; end Has_Associated_Interface; function Has_Association_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Parenthesis_Name; end Has_Association_Chain; function Has_Individual_Association_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Association_Element_By_Individual; end Has_Individual_Association_Chain; function Has_Aggregate_Info (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate; end Has_Aggregate_Info; function Has_Sub_Aggregate_Info (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Sub_Aggregate_Info; function Has_Aggr_Dynamic_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_Dynamic_Flag; function Has_Aggr_Min_Length (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_Min_Length; function Has_Aggr_Low_Limit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_Low_Limit; function Has_Aggr_High_Limit (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_High_Limit; function Has_Aggr_Others_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_Others_Flag; function Has_Aggr_Named_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate_Info; end Has_Aggr_Named_Flag; function Has_Value_Staticness (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate; end Has_Value_Staticness; function Has_Association_Choices_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Aggregate; end Has_Association_Choices_Chain; function Has_Case_Statement_Alternative_Chain (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Case_Statement; end Has_Case_Statement_Alternative_Chain; function Has_Choice_Staticness (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Range => return True; when others => return False; end case; end Has_Choice_Staticness; function Has_Procedure_Call (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Procedure_Call_Statement => return True; when others => return False; end case; end Has_Procedure_Call; function Has_Implementation (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Procedure_Call | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator | Iir_Kind_Absolute_Operator | Iir_Kind_Not_Operator | Iir_Kind_Condition_Operator | Iir_Kind_Reduction_And_Operator | Iir_Kind_Reduction_Or_Operator | Iir_Kind_Reduction_Nand_Operator | Iir_Kind_Reduction_Nor_Operator | Iir_Kind_Reduction_Xor_Operator | Iir_Kind_Reduction_Xnor_Operator | Iir_Kind_And_Operator | Iir_Kind_Or_Operator | Iir_Kind_Nand_Operator | Iir_Kind_Nor_Operator | Iir_Kind_Xor_Operator | Iir_Kind_Xnor_Operator | Iir_Kind_Equality_Operator | Iir_Kind_Inequality_Operator | Iir_Kind_Less_Than_Operator | Iir_Kind_Less_Than_Or_Equal_Operator | Iir_Kind_Greater_Than_Operator | Iir_Kind_Greater_Than_Or_Equal_Operator | Iir_Kind_Match_Equality_Operator | Iir_Kind_Match_Inequality_Operator | Iir_Kind_Match_Less_Than_Operator | Iir_Kind_Match_Less_Than_Or_Equal_Operator | Iir_Kind_Match_Greater_Than_Operator | Iir_Kind_Match_Greater_Than_Or_Equal_Operator | Iir_Kind_Sll_Operator | Iir_Kind_Sla_Operator | Iir_Kind_Srl_Operator | Iir_Kind_Sra_Operator | Iir_Kind_Rol_Operator | Iir_Kind_Ror_Operator | Iir_Kind_Addition_Operator | Iir_Kind_Substraction_Operator | Iir_Kind_Concatenation_Operator | Iir_Kind_Multiplication_Operator | Iir_Kind_Division_Operator | Iir_Kind_Modulus_Operator | Iir_Kind_Remainder_Operator | Iir_Kind_Exponentiation_Operator | Iir_Kind_Function_Call => return True; when others => return False; end case; end Has_Implementation; function Has_Parameter_Association_Chain (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Procedure_Call | Iir_Kind_Function_Call => return True; when others => return False; end case; end Has_Parameter_Association_Chain; function Has_Method_Object (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Procedure_Call | Iir_Kind_Function_Call => return True; when others => return False; end case; end Has_Method_Object; function Has_Subtype_Type_Mark (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Array_Subtype_Definition | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Access_Subtype_Definition | Iir_Kind_Physical_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Integer_Subtype_Definition | Iir_Kind_Enumeration_Subtype_Definition | Iir_Kind_Subtype_Definition => return True; when others => return False; end case; end Has_Subtype_Type_Mark; function Has_Type_Conversion_Subtype (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Type_Conversion; end Has_Type_Conversion_Subtype; function Has_Type_Mark (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Disconnection_Specification | Iir_Kind_Attribute_Declaration | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion => return True; when others => return False; end case; end Has_Type_Mark; function Has_File_Type_Mark (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_File_Type_Definition; end Has_File_Type_Mark; function Has_Return_Type_Mark (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Signature | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Return_Type_Mark; function Has_Incomplete_Type_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Incomplete_Type_Definition; end Has_Incomplete_Type_List; function Has_Has_Disconnect_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration => return True; when others => return False; end case; end Has_Has_Disconnect_Flag; function Has_Has_Active_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute => return True; when others => return False; end case; end Has_Has_Active_Flag; function Has_Is_Within_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_For_Loop_Statement => return True; when others => return False; end case; end Has_Is_Within_Flag; function Has_Type_Marks_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Signature; end Has_Type_Marks_List; function Has_Implicit_Alias_Flag (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Non_Object_Alias_Declaration; end Has_Implicit_Alias_Flag; function Has_Alias_Signature (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Non_Object_Alias_Declaration; end Has_Alias_Signature; function Has_Attribute_Signature (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Name; end Has_Attribute_Signature; function Has_Overload_List (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Overload_List; end Has_Overload_List; function Has_Simple_Name_Identifier (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Name_Attribute; end Has_Simple_Name_Identifier; function Has_Simple_Name_Subtype (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Name_Attribute; end Has_Simple_Name_Subtype; function Has_Protected_Type_Body (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Protected_Type_Declaration; end Has_Protected_Type_Body; function Has_Protected_Type_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Protected_Type_Body; end Has_Protected_Type_Declaration; function Has_End_Location (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Design_Unit; end Has_End_Location; function Has_Use_Flag (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Type_Declaration | Iir_Kind_Subtype_Declaration | Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration | Iir_Kind_Component_Declaration | Iir_Kind_Attribute_Declaration | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Terminal_Declaration | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Use_Flag; function Has_End_Has_Reserved_Id (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Physical_Type_Definition | Iir_Kind_Protected_Type_Body | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Component_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement => return True; when others => return False; end case; end Has_End_Has_Reserved_Id; function Has_End_Has_Identifier (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Protected_Type_Declaration | Iir_Kind_Record_Type_Definition | Iir_Kind_Physical_Type_Definition | Iir_Kind_Protected_Type_Body | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration | Iir_Kind_Package_Body | Iir_Kind_Configuration_Declaration | Iir_Kind_Entity_Declaration | Iir_Kind_Architecture_Body | Iir_Kind_Component_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Case_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => return False; end case; end Has_End_Has_Identifier; function Has_End_Has_Postponed (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_End_Has_Postponed; function Has_Has_Label (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Generate_Statement_Body => return True; when others => return False; end case; end Has_Has_Label; function Has_Has_Begin (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Entity_Declaration | Iir_Kind_Generate_Statement_Body => return True; when others => return False; end case; end Has_Has_Begin; function Has_Has_End (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Generate_Statement_Body; end Has_Has_End; function Has_Has_Is (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Component_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement => return True; when others => return False; end case; end Has_Has_Is; function Has_Has_Pure (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Function_Declaration; end Has_Has_Pure; function Has_Has_Body (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration => return True; when others => return False; end case; end Has_Has_Body; function Has_Has_Identifier_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Library_Clause | Iir_Kind_Element_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Has_Identifier_List; function Has_Has_Mode (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_File_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Has_Mode; function Has_Has_Class (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Has_Class; function Has_Is_Ref (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Subtype_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration | Iir_Kind_Iterator_Declaration | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration => return True; when others => return False; end case; end Has_Is_Ref; function Has_Psl_Property (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement => return True; when others => return False; end case; end Has_Psl_Property; function Has_Psl_Declaration (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Psl_Declaration; end Has_Psl_Declaration; function Has_Psl_Expression (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Psl_Expression; end Has_Psl_Expression; function Has_Psl_Boolean (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Psl_Default_Clock; end Has_Psl_Boolean; function Has_PSL_Clock (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement => return True; when others => return False; end case; end Has_PSL_Clock; function Has_PSL_NFA (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Assert_Statement | Iir_Kind_Psl_Cover_Statement => return True; when others => return False; end case; end Has_PSL_NFA; end Nodes_Meta;