From 5ec4adc52ffacb8407d17dc728e45f7ac8f66261 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 14 May 2019 18:26:25 +0200 Subject: python/libghdl: refactoring --- src/vhdl/Makefile | 20 +- src/vhdl/python/libghdl/__init__.py | 17 + src/vhdl/python/libghdl/thin.py | 303 --- src/vhdl/python/libghdl/thin/errorout.py | 39 + src/vhdl/python/libghdl/thin/errorout_memory.py | 13 + src/vhdl/python/libghdl/thin/files_map.py | 41 + src/vhdl/python/libghdl/thin/files_map_editor.py | 6 + src/vhdl/python/libghdl/thin/flags.py | 9 + src/vhdl/python/libghdl/thin/libraries.py | 17 + src/vhdl/python/libghdl/thin/name_table.py | 14 + src/vhdl/python/libghdl/thin/std_names.py | 747 +++++++ src/vhdl/python/libghdl/thin/vhdl/canon.py | 14 + src/vhdl/python/libghdl/thin/vhdl/elocations.py | 62 + src/vhdl/python/libghdl/thin/vhdl/flists.py | 11 + src/vhdl/python/libghdl/thin/vhdl/ieee.py | 21 + src/vhdl/python/libghdl/thin/vhdl/lists.py | 33 + src/vhdl/python/libghdl/thin/vhdl/nodes.py | 2367 ++++++++++++++++++++++ src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py | 1435 +++++++++++++ src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py | 14 + src/vhdl/python/libghdl/thin/vhdl/parse.py | 7 + src/vhdl/python/libghdl/thin/vhdl/pyutils.py | 407 ++++ src/vhdl/python/libghdl/thin/vhdl/scanner.py | 23 + src/vhdl/python/libghdl/thin/vhdl/sem_lib.py | 5 + src/vhdl/python/libghdl/thin/vhdl/std_package.py | 13 + src/vhdl/python/libghdl/thin/vhdl/tokens.py | 196 ++ src/vhdl/python/libghdl/thinutils.py | 407 ---- src/vhdl/python/pnodespy.py | 23 +- 27 files changed, 5542 insertions(+), 722 deletions(-) delete mode 100644 src/vhdl/python/libghdl/thin.py create mode 100644 src/vhdl/python/libghdl/thin/errorout.py create mode 100644 src/vhdl/python/libghdl/thin/errorout_memory.py create mode 100644 src/vhdl/python/libghdl/thin/files_map.py create mode 100644 src/vhdl/python/libghdl/thin/files_map_editor.py create mode 100644 src/vhdl/python/libghdl/thin/flags.py create mode 100644 src/vhdl/python/libghdl/thin/libraries.py create mode 100644 src/vhdl/python/libghdl/thin/name_table.py create mode 100644 src/vhdl/python/libghdl/thin/std_names.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/canon.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/elocations.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/flists.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/ieee.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/lists.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/parse.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/pyutils.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/scanner.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/sem_lib.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/std_package.py create mode 100644 src/vhdl/python/libghdl/thin/vhdl/tokens.py delete mode 100644 src/vhdl/python/libghdl/thinutils.py (limited to 'src') diff --git a/src/vhdl/Makefile b/src/vhdl/Makefile index 6eb52cfae..425563a18 100644 --- a/src/vhdl/Makefile +++ b/src/vhdl/Makefile @@ -27,9 +27,9 @@ DEPS=vhdl-nodes.ads vhdl-nodes.adb.in $(PNODES) GEN_FILES=vhdl-nodes.adb vhdl-nodes_meta.ads vhdl-nodes_meta.adb \ vhdl-elocations.adb vhdl-elocations_meta.ads vhdl-elocations_meta.adb \ - python/libghdl/iirs.py python/libghdl/nodes_meta.py \ - python/libghdl/std_names.py python/libghdl/tokens.py \ - python/libghdl/elocations.py python/libghdl/errorout.py + python/libghdl/thin/vhdl/nodes.py python/libghdl/thin/vhdl/nodes_meta.py \ + python/libghdl/thin/vhdl/tokens.py python/libghdl/thin/vhdl/elocations.py \ + python/libghdl/thin/errorout.py python/libghdl/thin/std_names.py NODES_FLAGS=--node-file=vhdl-nodes.ads --field-file=vhdl-nodes.adb.in \ --template-file=vhdl-nodes.adb.in --kind-file=vhdl-nodes.ads \ @@ -71,32 +71,32 @@ vhdl-elocations_meta.adb: vhdl-elocations_meta.adb.in vhdl-elocations.ads $(DEPS $(PNODES) $(ELOCATIONS_FLAGS) meta_body > $@ chmod -w $@ -python/libghdl/iirs.py: $(DEPS) $(PNODESPY) +python/libghdl/thin/vhdl/nodes.py: $(DEPS) $(PNODESPY) $(RM) $@ - $(PNODESPY) $(NODES_FLAGS) libghdl-iirs > $@ + $(PNODESPY) $(NODES_FLAGS) libghdl-nodes > $@ chmod -w $@ -python/libghdl/nodes_meta.py: $(DEPS) $(PNODESPY) +python/libghdl/thin/vhdl/nodes_meta.py: $(DEPS) $(PNODESPY) $(RM) $@ $(PNODESPY) $(NODES_FLAGS) libghdl-meta > $@ chmod -w $@ -python/libghdl/std_names.py: $(PNODESPY) ../std_names.ads +python/libghdl/thin/std_names.py: $(PNODESPY) ../std_names.ads $(RM) $@ $(PNODESPY) $(NODES_FLAGS) libghdl-names > $@ chmod -w $@ -python/libghdl/tokens.py: $(PNODESPY) vhdl-tokens.ads +python/libghdl/thin/vhdl/tokens.py: $(PNODESPY) vhdl-tokens.ads $(RM) $@ $(PNODESPY) $(NODES_FLAGS) libghdl-tokens > $@ chmod -w $@ -python/libghdl/elocations.py: $(PNODESPY) vhdl-elocations.ads +python/libghdl/thin/vhdl/elocations.py: $(PNODESPY) vhdl-elocations.ads $(RM) $@ $(PNODESPY) $(ELOCATIONS_FLAGS) libghdl-elocs > $@ chmod -w $@ -python/libghdl/errorout.py: $(PNODESPY) ../errorout.ads +python/libghdl/thin/errorout.py: $(PNODESPY) ../errorout.ads $(RM) $@ $(PNODESPY) $(ELOCATIONS_FLAGS) libghdl-errorout > $@ chmod -w $@ diff --git a/src/vhdl/python/libghdl/__init__.py b/src/vhdl/python/libghdl/__init__.py index 8ca7a977b..6589aec3f 100644 --- a/src/vhdl/python/libghdl/__init__.py +++ b/src/vhdl/python/libghdl/__init__.py @@ -14,3 +14,20 @@ _prefix = os.path.join(_basedir, "ghdl") _prefix_opt = ("--PREFIX=" + _prefix).encode('utf-8') libghdl.libghdl__set_option( ctypes.c_char_p(_prefix_opt), len(_prefix_opt)) + +# libghdl + +_set_option = libghdl.libghdl__set_option +_analyze_file = libghdl.libghdl__analyze_file + + +def set_option(opt): + return _set_option(ctypes.c_char_p(opt), len(opt)) + + +def analyze_init(): + return libghdl.libghdl__analyze_init() + + +def analyze_file(filename): + return _analyze_file(ctypes.c_char_p(filename), len(filename)) diff --git a/src/vhdl/python/libghdl/thin.py b/src/vhdl/python/libghdl/thin.py deleted file mode 100644 index 5ff197175..000000000 --- a/src/vhdl/python/libghdl/thin.py +++ /dev/null @@ -1,303 +0,0 @@ -from libghdl import libghdl -from ctypes import (c_char_p, c_int32, c_int, c_int8, c_bool, sizeof, c_void_p, - POINTER, Structure) -import libghdl.iirs as iirs -import libghdl.nodes_meta as nodes_meta -from libghdl.nodes_meta import (Attr, types) -# from libghdl_defs import (fields, Iir_Kind, types, Attr) - -assert sizeof(c_bool) == 1 - -# libghdl - -_set_option = libghdl.libghdl__set_option -_analyze_file = libghdl.libghdl__analyze_file - - -def set_option(opt): - return _set_option(c_char_p(opt), len(opt)) - - -def analyze_init(): - return libghdl.libghdl__analyze_init() - - -def analyze_file(filename): - return _analyze_file(c_char_p(filename), len(filename)) - -EOT = b'\x04' - -No_Source_File_Entry = 0 - -No_Location = 0 - -Null_Iir = 0 -Null_Iir_List = 0 -Iir_List_All = 1 - -Null_Iir_Flist = 0 -Iir_Flist_Others = 1 -Iir_Flist_All = 2 - -# Lists - -class Lists: - List_Type = c_int32 - - class Iterator(Structure): - _fields_ = [("chunk", c_int32), - ("chunk_idx", c_int32), - ("remain", c_int32)] - - Iterate = libghdl.vhdl__lists__iterate - Iterate.argstype = [List_Type] - Iterate.restype = Iterator - - Is_Valid = libghdl.vhdl__lists__is_valid - Is_Valid.argstype = [POINTER(Iterator)] - Is_Valid.restype = c_bool - - Next = libghdl.vhdl__lists__next - Next.argstype = [POINTER(Iterator)] - Next.restype = None - - Get_Element = libghdl.vhdl__lists__get_element - Get_Element.argstype = [POINTER(Iterator)] - Get_Element.restype = c_int32 - - Get_Nbr_Elements = libghdl.vhdl__lists__get_nbr_elements - Get_Nbr_Elements.argtype = [List_Type] - Get_Nbr_Elements.restype = c_int32 - - Create_Iir_List = libghdl.vhdl__lists__create_list - - Destroy_Iir_List = libghdl.vhdl__lists__destroy_list - - -class Flists: - Flist_Type = c_int32 - - Ffirst = 0 - Flast = libghdl.vhdl__flists__flast - - Length = libghdl.vhdl__flists__length - - Get_Nth_Element = libghdl.vhdl__flists__get_nth_element - - -# Files -class Files_Map: - Location_To_File = libghdl.files_map__location_to_file - - Location_File_To_Pos = libghdl.files_map__location_file_to_pos - - Location_File_To_Line = libghdl.files_map__location_file_to_line - - Location_File_Line_To_Offset = \ - libghdl.files_map__location_file_line_to_offset - - Location_File_Line_To_Col = libghdl.files_map__location_file_line_to_col - - File_To_Location = libghdl.files_map__file_to_location - - File_Pos_To_Location = libghdl.files_map__file_pos_to_location - - File_Line_To_Position = libghdl.files_map__file_line_to_position - - Get_File_Name = libghdl.files_map__get_file_name - - Get_Directory_Name = libghdl.files_map__get_directory_name - - Get_File_Buffer = libghdl.files_map__get_file_buffer - Get_File_Buffer.restype = c_void_p - - Get_File_Length = libghdl.files_map__get_file_length - Set_File_Length = libghdl.files_map__set_file_length - - Read_Source_File = libghdl.files_map__read_source_file - - Reserve_Source_File = libghdl.files_map__reserve_source_file - - Get_Last_Source_File_Entry = libghdl.files_map__get_last_source_file_entry - - -class Files_Map_Editor: - Set_Gap = libghdl.files_map__editor__set_gap - Replace_Text = libghdl.files_map__editor__replace_text_ptr - - Check_Buffer_Content = libghdl.files_map__editor__check_buffer_content - -# Names - -Get_Name_Length = libghdl.name_table__get_name_length - -Get_Name_Ptr = libghdl.name_table__get_name_ptr -Get_Name_Ptr.restype = c_char_p - -_Get_Identifier_With_Len = libghdl.name_table__get_identifier_with_len - -def Get_Identifier(s): - return _Get_Identifier_With_Len(c_char_p(s), len(s)) - -Null_Identifier = 0 - -# Ieee - -class Ieee: - Std_Logic_1164_Pkg = c_int.in_dll( - libghdl, "vhdl__ieee__std_logic_1164__std_logic_1164_pkg") - - # Get value - Std_Logic_Type = c_int.in_dll( - libghdl, "vhdl__ieee__std_logic_1164__std_logic_type") - - # Get value - Std_Logic_Vector_Type = c_int.in_dll( - libghdl, "vhdl__ieee__std_logic_1164__std_logic_vector_type") - - # Get value - Rising_Edge = c_int.in_dll( - libghdl, "vhdl__ieee__std_logic_1164__rising_edge") - - # Get value - Falling_Edge = c_int.in_dll( - libghdl, "vhdl__ieee__std_logic_1164__falling_edge") - - -# Flags -class Flags: - Flag_Elocations = c_bool.in_dll(libghdl, "flags__flag_elocations") - - Verbose = c_bool.in_dll(libghdl, "flags__verbose") - - Flag_Elaborate_With_Outdated = c_bool.in_dll( - libghdl, "flags__flag_elaborate_with_outdated") - - -# Scanner -class Scanner: - Set_File = libghdl.vhdl__scanner__set_file - - Close_File = libghdl.vhdl__scanner__close_file - - Scan = libghdl.vhdl__scanner__scan - - # This is a c_int, so you want to use its .value - Current_Token = c_int.in_dll(libghdl, "vhdl__scanner__current_token") - - Flag_Comment = c_bool.in_dll(libghdl, "vhdl__scanner__flag_comment") - - Get_Current_Line = libghdl.vhdl__scanner__get_current_line - - Get_Token_Offset = libghdl.vhdl__scanner__get_token_offset - - Get_Token_Position = libghdl.vhdl__scanner__get_token_position - - Get_Position = libghdl.vhdl__scanner__get_position - - Current_Identifier = libghdl.vhdl__scanner__current_identifier - - -class Parse: - Parse_Design_File = libghdl.vhdl__parse__parse_design_file - - Flag_Parse_Parenthesis = c_bool.in_dll( - libghdl, "vhdl__parse__flag_parse_parenthesis") - - -class Canon: - Flag_Concurrent_Stmts = c_bool.in_dll( - libghdl, "vhdl__canon__canon_flag_concurrent_stmts") - - Flag_Configurations = c_bool.in_dll( - libghdl, "vhdl__canon__canon_flag_configurations") - - Flag_Associations = c_bool.in_dll( - libghdl, "vhdl__canon__canon_flag_associations") - - Extract_Sequential_Statement_Chain_Sensitivity = \ - libghdl.vhdl__canon__canon_extract_sequential_statement_chain_sensitivity - - -class Sem_Lib: - Load_File = libghdl.vhdl__sem_lib__load_file - - Finish_Compilation = libghdl.vhdl__sem_lib__finish_compilation - - -class Std_Package: - # Use .value - Std_Location = c_int32.in_dll(libghdl, "vhdl__std_package__std_location") - - # Use .value - Standard_Package = c_int32.in_dll( - libghdl, "vhdl__std_package__standard_package") - - # Use .value - Character_Type_Definition = c_int32.in_dll( - libghdl, "vhdl__std_package__character_type_definition") - -class Libraries: - Get_Libraries_Chain = libghdl.libraries__get_libraries_chain - - Add_Design_Unit_Into_Library = \ - libghdl.libraries__add_design_unit_into_library - - # Use .value - Library_Location = c_int32.in_dll(libghdl, "libraries__library_location") - - # Use .value - Work_Library = c_int32.in_dll(libghdl, "libraries__work_library") - - Purge_Design_File = libghdl.libraries__purge_design_file - - Find_Entity_For_Component = libghdl.libraries__find_entity_for_component - - -# Disp_Tree - -Disp_Iir = libghdl.vhdl__disp_tree__disp_iir - -# Iirs_Utils - -class Iirs_Utils: - Strip_Denoting_Name = libghdl.vhdl__utils__strip_denoting_name - - Get_Entity = libghdl.vhdl__utils__get_entity - - Is_Second_Subprogram_Specification = \ - libghdl.vhdl__utils__is_second_subprogram_specification - - Get_Entity_From_Entity_Aspect = \ - libghdl.vhdl__utils__get_entity_from_entity_aspect - - Get_Interface_Of_Formal = \ - libghdl.vhdl__utils__get_interface_of_formal - -# Errorout - -class Errorout: - class Error_Record(Structure): - _fields_ = [("origin", c_int8), - ("id", c_int8), - ("cont", c_int8), - ("file", c_int32), - ("line", c_int32), - ("offset", c_int32), - ("length", c_int32)] - - -class Errorout_Memory: - Install_Handler = libghdl.errorout__memory__install_handler - - Get_Nbr_Messages = libghdl.errorout__memory__get_nbr_messages - - Get_Error_Record = libghdl.errorout__memory__get_error_record - Get_Error_Record.argstypes = [c_int32] - Get_Error_Record.restype = Errorout.Error_Record - - Get_Error_Message = libghdl.errorout__memory__get_error_message_addr - Get_Error_Message.argstype = [c_int32] - Get_Error_Message.restype = c_char_p - - Clear_Errors = libghdl.errorout__memory__clear_errors diff --git a/src/vhdl/python/libghdl/thin/errorout.py b/src/vhdl/python/libghdl/thin/errorout.py new file mode 100644 index 000000000..0af8a0a1f --- /dev/null +++ b/src/vhdl/python/libghdl/thin/errorout.py @@ -0,0 +1,39 @@ +from ctypes import c_int8, c_int32 +class Error_Record(Structure): + _fields_ = [("origin", c_int8), + ("id", c_int8), + ("file", c_int32), + ("line", c_int32), + ("offset", c_int32), + ("length", c_int32)] + + + +class Msgid: + Msgid_Note = 0 + Warnid_Library = 1 + Warnid_Missing_Xref = 2 + Warnid_Default_Binding = 3 + Warnid_Binding = 4 + Warnid_Port = 5 + Warnid_Reserved_Word = 6 + Warnid_Nested_Comment = 7 + Warnid_Directive = 8 + Warnid_Parenthesis = 9 + Warnid_Vital_Generic = 10 + Warnid_Delayed_Checks = 11 + Warnid_Body = 12 + Warnid_Specs = 13 + Warnid_Universal = 14 + Warnid_Port_Bounds = 15 + Warnid_Runtime_Error = 16 + Warnid_Delta_Cycle = 17 + Warnid_Shared = 18 + Warnid_Hide = 19 + Warnid_Unused = 20 + Warnid_Others = 21 + Warnid_Pure = 22 + Warnid_Static = 23 + Msgid_Warning = 24 + Msgid_Error = 25 + Msgid_Fatal = 26 diff --git a/src/vhdl/python/libghdl/thin/errorout_memory.py b/src/vhdl/python/libghdl/thin/errorout_memory.py new file mode 100644 index 000000000..2967863f5 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/errorout_memory.py @@ -0,0 +1,13 @@ +Install_Handler = libghdl.errorout__memory__install_handler + +Get_Nbr_Messages = libghdl.errorout__memory__get_nbr_messages + +Get_Error_Record = libghdl.errorout__memory__get_error_record +Get_Error_Record.argstypes = [c_int32] +Get_Error_Record.restype = Errorout.Error_Record + +Get_Error_Message = libghdl.errorout__memory__get_error_message_addr +Get_Error_Message.argstype = [c_int32] +Get_Error_Message.restype = c_char_p + +Clear_Errors = libghdl.errorout__memory__clear_errors diff --git a/src/vhdl/python/libghdl/thin/files_map.py b/src/vhdl/python/libghdl/thin/files_map.py new file mode 100644 index 000000000..b0029b0a4 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/files_map.py @@ -0,0 +1,41 @@ +from libghdl import libghdl +from ctypes import c_void_p + +EOT = b'\x04' + +No_Source_File_Entry = 0 + +No_Location = 0 + +Location_To_File = libghdl.files_map__location_to_file + +Location_File_To_Pos = libghdl.files_map__location_file_to_pos + +Location_File_To_Line = libghdl.files_map__location_file_to_line + +Location_File_Line_To_Offset = \ + libghdl.files_map__location_file_line_to_offset + +Location_File_Line_To_Col = libghdl.files_map__location_file_line_to_col + +File_To_Location = libghdl.files_map__file_to_location + +File_Pos_To_Location = libghdl.files_map__file_pos_to_location + +File_Line_To_Position = libghdl.files_map__file_line_to_position + +Get_File_Name = libghdl.files_map__get_file_name + +Get_Directory_Name = libghdl.files_map__get_directory_name + +Get_File_Buffer = libghdl.files_map__get_file_buffer +Get_File_Buffer.restype = c_void_p + +Get_File_Length = libghdl.files_map__get_file_length +Set_File_Length = libghdl.files_map__set_file_length + +Read_Source_File = libghdl.files_map__read_source_file + +Reserve_Source_File = libghdl.files_map__reserve_source_file + +Get_Last_Source_File_Entry = libghdl.files_map__get_last_source_file_entry diff --git a/src/vhdl/python/libghdl/thin/files_map_editor.py b/src/vhdl/python/libghdl/thin/files_map_editor.py new file mode 100644 index 000000000..27ea6feda --- /dev/null +++ b/src/vhdl/python/libghdl/thin/files_map_editor.py @@ -0,0 +1,6 @@ +from libghdl import libghdl + +Set_Gap = libghdl.files_map__editor__set_gap +Replace_Text = libghdl.files_map__editor__replace_text_ptr + +Check_Buffer_Content = libghdl.files_map__editor__check_buffer_content diff --git a/src/vhdl/python/libghdl/thin/flags.py b/src/vhdl/python/libghdl/thin/flags.py new file mode 100644 index 000000000..b50480442 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/flags.py @@ -0,0 +1,9 @@ +from libghdl import libghdl +from ctypes import c_bool + +Flag_Elocations = c_bool.in_dll(libghdl, "flags__flag_elocations") + +Verbose = c_bool.in_dll(libghdl, "flags__verbose") + +Flag_Elaborate_With_Outdated = c_bool.in_dll( + libghdl, "flags__flag_elaborate_with_outdated") diff --git a/src/vhdl/python/libghdl/thin/libraries.py b/src/vhdl/python/libghdl/thin/libraries.py new file mode 100644 index 000000000..cb5f20ec2 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/libraries.py @@ -0,0 +1,17 @@ +from libghdl import libghdl +from ctypes import c_int32 + +Get_Libraries_Chain = libghdl.libraries__get_libraries_chain + +Add_Design_Unit_Into_Library = \ + libghdl.libraries__add_design_unit_into_library + +# Use .value +Library_Location = c_int32.in_dll(libghdl, "libraries__library_location") + +# Use .value +Work_Library = c_int32.in_dll(libghdl, "libraries__work_library") + +Purge_Design_File = libghdl.libraries__purge_design_file + +Find_Entity_For_Component = libghdl.libraries__find_entity_for_component diff --git a/src/vhdl/python/libghdl/thin/name_table.py b/src/vhdl/python/libghdl/thin/name_table.py new file mode 100644 index 000000000..cda0b3e1c --- /dev/null +++ b/src/vhdl/python/libghdl/thin/name_table.py @@ -0,0 +1,14 @@ +from libghdl import libghdl +from ctypes import c_char_p + +Get_Name_Length = libghdl.name_table__get_name_length + +Get_Name_Ptr = libghdl.name_table__get_name_ptr +Get_Name_Ptr.restype = c_char_p + +_Get_Identifier_With_Len = libghdl.name_table__get_identifier_with_len + +def Get_Identifier(s): + return _Get_Identifier_With_Len(c_char_p(s), len(s)) + +Null_Identifier = 0 diff --git a/src/vhdl/python/libghdl/thin/std_names.py b/src/vhdl/python/libghdl/thin/std_names.py new file mode 100644 index 000000000..bef6eee48 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/std_names.py @@ -0,0 +1,747 @@ +class Name: + First_Character = 1 + Last_Character = 256 + First_Keyword = 257 + Mod = 257 + Rem = 258 + Abs = 259 + Not = 260 + Access = 261 + After = 262 + Alias = 263 + All = 264 + Architecture = 265 + Array = 266 + Assert = 267 + Attribute = 268 + Begin = 269 + Block = 270 + Body = 271 + Buffer = 272 + Bus = 273 + Case = 274 + Component = 275 + Configuration = 276 + Constant = 277 + Disconnect = 278 + Downto = 279 + Else = 280 + Elsif = 281 + End = 282 + Entity = 283 + Exit = 284 + File = 285 + For = 286 + Function = 287 + Generate = 288 + Generic = 289 + Guarded = 290 + If = 291 + In = 292 + Inout = 293 + Is = 294 + Label = 295 + Library = 296 + Linkage = 297 + Loop = 298 + Map = 299 + New = 300 + Next = 301 + Null = 302 + Of = 303 + On = 304 + Open = 305 + Others = 306 + Out = 307 + Package = 308 + Port = 309 + Procedure = 310 + Process = 311 + Range = 312 + Record = 313 + Register = 314 + Report = 315 + Return = 316 + Select = 317 + Severity = 318 + Signal = 319 + Subtype = 320 + Then = 321 + To = 322 + Transport = 323 + Type = 324 + Units = 325 + Until = 326 + Use = 327 + Variable = 328 + Wait = 329 + When = 330 + While = 331 + With = 332 + And = 333 + Or = 334 + Xor = 335 + Nand = 336 + Nor = 337 + Last_Vhdl87 = 337 + Xnor = 338 + Group = 339 + Impure = 340 + Inertial = 341 + Literal = 342 + Postponed = 343 + Pure = 344 + Reject = 345 + Shared = 346 + Unaffected = 347 + Sll = 348 + Sla = 349 + Sra = 350 + Srl = 351 + Rol = 352 + Ror = 353 + Last_Vhdl93 = 353 + Protected = 354 + Last_Vhdl00 = 354 + Context = 355 + Parameter = 356 + Last_Vhdl08 = 356 + First_Ams_Keyword = 357 + Across = 357 + Break = 358 + Limit = 359 + Nature = 360 + Noise = 361 + Procedural = 362 + Quantity = 363 + Reference = 364 + Spectrum = 365 + Subnature = 366 + Terminal = 367 + Through = 368 + Tolerance = 369 + Last_AMS_Vhdl = 369 + Last_Keyword = 369 + First_Verilog = 370 + Always = 370 + Assign = 371 + Buf = 372 + Bufif0 = 373 + Bufif1 = 374 + Casex = 375 + Casez = 376 + Cmos = 377 + Deassign = 378 + Default = 379 + Defparam = 380 + Disable = 381 + Edge = 382 + Endcase = 383 + Endfunction = 384 + Endmodule = 385 + Endprimitive = 386 + Endspecify = 387 + Endtable = 388 + Endtask = 389 + Force = 390 + Forever = 391 + Fork = 392 + Highz0 = 393 + Highz1 = 394 + Ifnone = 395 + Initial = 396 + Input = 397 + Join = 398 + Large = 399 + Macromodule = 400 + Medium = 401 + Module = 402 + Negedge = 403 + Nmos = 404 + Notif0 = 405 + Notif1 = 406 + Output = 407 + Pmos = 408 + Posedge = 409 + Primitive = 410 + Pull0 = 411 + Pull1 = 412 + Pulldown = 413 + Pullup = 414 + Realtime = 415 + Release = 416 + Reg = 417 + Repeat = 418 + Rcmos = 419 + Rnmos = 420 + Rpmos = 421 + Rtran = 422 + Rtranif0 = 423 + Rtranif1 = 424 + Scalared = 425 + Small = 426 + Specify = 427 + Specparam = 428 + Strong0 = 429 + Strong1 = 430 + Supply0 = 431 + Supply1 = 432 + Tablex = 433 + Task = 434 + Tran = 435 + Tranif0 = 436 + Tranif1 = 437 + Tri = 438 + Tri0 = 439 + Tri1 = 440 + Triand = 441 + Trior = 442 + Trireg = 443 + Vectored = 444 + Wand = 445 + Weak0 = 446 + Weak1 = 447 + Wire = 448 + Wor = 449 + Last_Verilog = 449 + First_V2001 = 450 + Automatic = 450 + Endgenerate = 451 + Genvar = 452 + Localparam = 453 + Unsigned = 454 + Signed = 455 + Last_V2001 = 455 + Uwire = 456 + First_SV3_0 = 457 + Always_Comb = 457 + Always_Ff = 458 + Always_Latch = 459 + Bit = 460 + Byte = 461 + Changed = 462 + Char = 463 + Const = 464 + Continue = 465 + Do = 466 + Endinterface = 467 + Endtransition = 468 + Enum = 469 + Export = 470 + Extern = 471 + Forkjoin = 472 + Iff = 473 + Import = 474 + Int = 475 + Interface = 476 + Logic = 477 + Longint = 478 + Longreal = 479 + Modport = 480 + Packed = 481 + Priority = 482 + Shortint = 483 + Shortreal = 484 + Static = 485 + Struct = 486 + Timeprecision = 487 + Timeunit = 488 + Transition = 489 + Typedef = 490 + Union = 491 + Unique = 492 + Unique0 = 493 + Void = 494 + Last_SV3_0 = 494 + First_SV3_1 = 495 + Chandle = 495 + Class = 496 + Clocking = 497 + Constraint = 498 + Cover = 499 + Dist = 500 + Endclass = 501 + Endclocking = 502 + Endprogram = 503 + Endproperty = 504 + Endsequence = 505 + Extends = 506 + Final = 507 + First_Match = 508 + Inside = 509 + Intersect = 510 + Join_Any = 511 + Join_None = 512 + Local = 513 + Program = 514 + Property = 515 + Rand = 516 + Randc = 517 + Ref = 518 + Sequence = 519 + Solve = 520 + String = 521 + Super = 522 + This = 523 + Throughout = 524 + Var = 525 + Virtual = 526 + Wait_Order = 527 + Last_SV3_1 = 527 + First_SV3_1a = 528 + Assume = 528 + Covergroup = 529 + Coverpoint = 530 + Endgroup = 531 + Endpackage = 532 + Expect = 533 + Foreach = 534 + Ignore_Bins = 535 + Illegal_Bins = 536 + Matches = 537 + Randcase = 538 + Randsequence = 539 + Tagged = 540 + Wildcard = 541 + Last_SV3_1a = 541 + First_SV2009 = 542 + Implies = 542 + S_Until = 543 + S_Until_With = 544 + Until_With = 545 + Last_SV2009 = 545 + First_Operator = 546 + Op_Equality = 546 + Op_Inequality = 547 + Op_Less = 548 + Op_Less_Equal = 549 + Op_Greater = 550 + Op_Greater_Equal = 551 + Op_Plus = 552 + Op_Minus = 553 + Op_Mul = 554 + Op_Div = 555 + Op_Exp = 556 + Op_Concatenation = 557 + Op_Condition = 558 + Op_Match_Equality = 559 + Op_Match_Inequality = 560 + Op_Match_Less = 561 + Op_Match_Less_Equal = 562 + Op_Match_Greater = 563 + Op_Match_Greater_Equal = 564 + Last_Operator = 564 + First_Attribute = 565 + Base = 565 + Left = 566 + Right = 567 + High = 568 + Low = 569 + Pos = 570 + Val = 571 + Succ = 572 + Pred = 573 + Leftof = 574 + Rightof = 575 + Reverse_Range = 576 + Length = 577 + Delayed = 578 + Stable = 579 + Quiet = 580 + Transaction = 581 + Event = 582 + Active = 583 + Last_Event = 584 + Last_Active = 585 + Last_Value = 586 + Last_Attribute = 586 + First_Vhdl87_Attribute = 587 + Behavior = 587 + Structure = 588 + Last_Vhdl87_Attribute = 588 + First_Vhdl93_Attribute = 589 + Ascending = 589 + Image = 590 + Value = 591 + Driving = 592 + Driving_Value = 593 + Simple_Name = 594 + Instance_Name = 595 + Path_Name = 596 + Last_Vhdl93_Attribute = 596 + First_Vhdl08_Attribute = 597 + Element = 597 + Last_Vhdl08_Attribute = 597 + First_AMS_Attribute = 598 + Contribution = 598 + Dot = 599 + Integ = 600 + Above = 601 + ZOH = 602 + LTF = 603 + ZTF = 604 + Ramp = 605 + Slew = 606 + Last_AMS_Attribute = 606 + First_Standard = 607 + Std = 607 + Standard = 608 + Boolean = 609 + NFalse = 610 + NTrue = 611 + Character = 612 + Severity_Level = 613 + Note = 614 + Warning = 615 + Error = 616 + Failure = 617 + Universal_Integer = 618 + Universal_Real = 619 + Convertible_Integer = 620 + Convertible_Real = 621 + Integer = 622 + Real = 623 + Time = 624 + Fs = 625 + Ps = 626 + Ns = 627 + Us = 628 + Ms = 629 + Sec = 630 + Min = 631 + Hr = 632 + Max = 633 + Delay_Length = 634 + Now = 635 + Natural = 636 + Positive = 637 + Bit_Vector = 638 + File_Open_Kind = 639 + Read_Mode = 640 + Write_Mode = 641 + Append_Mode = 642 + File_Open_Status = 643 + Open_Ok = 644 + Status_Error = 645 + Name_Error = 646 + Mode_Error = 647 + Foreign = 648 + Boolean_Vector = 649 + To_Bstring = 650 + To_Binary_String = 651 + To_Ostring = 652 + To_Octal_String = 653 + To_Hstring = 654 + To_Hex_String = 655 + Integer_Vector = 656 + Real_Vector = 657 + Time_Vector = 658 + Digits = 659 + Format = 660 + Unit = 661 + Domain_Type = 662 + Quiescent_Domain = 663 + Time_Domain = 664 + Frequency_Domain = 665 + Domain = 666 + Frequency = 667 + Last_Standard = 667 + First_Charname = 668 + Nul = 668 + Soh = 669 + Stx = 670 + Etx = 671 + Eot = 672 + Enq = 673 + Ack = 674 + Bel = 675 + Bs = 676 + Ht = 677 + Lf = 678 + Vt = 679 + Ff = 680 + Cr = 681 + So = 682 + Si = 683 + Dle = 684 + Dc1 = 685 + Dc2 = 686 + Dc3 = 687 + Dc4 = 688 + Nak = 689 + Syn = 690 + Etb = 691 + Can = 692 + Em = 693 + Sub = 694 + Esc = 695 + Fsp = 696 + Gsp = 697 + Rsp = 698 + Usp = 699 + Del = 700 + C128 = 701 + C129 = 702 + C130 = 703 + C131 = 704 + C132 = 705 + C133 = 706 + C134 = 707 + C135 = 708 + C136 = 709 + C137 = 710 + C138 = 711 + C139 = 712 + C140 = 713 + C141 = 714 + C142 = 715 + C143 = 716 + C144 = 717 + C145 = 718 + C146 = 719 + C147 = 720 + C148 = 721 + C149 = 722 + C150 = 723 + C151 = 724 + C152 = 725 + C153 = 726 + C154 = 727 + C155 = 728 + C156 = 729 + C157 = 730 + C158 = 731 + C159 = 732 + Last_Charname = 732 + First_Misc = 733 + Guard = 733 + Deallocate = 734 + File_Open = 735 + File_Close = 736 + Read = 737 + Write = 738 + Flush = 739 + Endfile = 740 + I = 741 + J = 742 + F = 743 + L = 744 + P = 745 + R = 746 + S = 747 + V = 748 + External_Name = 749 + Open_Kind = 750 + First = 751 + Last = 752 + Textio = 753 + Work = 754 + Text = 755 + To_String = 756 + Minimum = 757 + Maximum = 758 + Untruncated_Text_Read = 759 + Textio_Read_Real = 760 + Textio_Write_Real = 761 + Get_Resolution_Limit = 762 + Control_Simulation = 763 + Step = 764 + Index = 765 + Item = 766 + Uu_File_Uu = 767 + Uu_Line_Uu = 768 + NNone = 769 + Last_Misc = 769 + First_Ieee = 770 + Ieee = 770 + Std_Logic_1164 = 771 + Std_Ulogic = 772 + Std_Ulogic_Vector = 773 + Std_Logic = 774 + Std_Logic_Vector = 775 + Rising_Edge = 776 + Falling_Edge = 777 + VITAL_Timing = 778 + VITAL_Level0 = 779 + VITAL_Level1 = 780 + Numeric_Std = 781 + Numeric_Bit = 782 + Unresolved_Unsigned = 783 + Unresolved_Signed = 784 + Std_Logic_Arith = 785 + Std_Logic_Signed = 786 + Std_Logic_Textio = 787 + Std_Logic_Unsigned = 788 + Last_Ieee = 788 + First_Directive = 789 + Define = 789 + Endif = 790 + Ifdef = 791 + Ifndef = 792 + Include = 793 + Timescale = 794 + Undef = 795 + Protect = 796 + Begin_Protected = 797 + End_Protected = 798 + Key_Block = 799 + Data_Block = 800 + Line = 801 + Celldefine = 802 + Endcelldefine = 803 + Default_Nettype = 804 + Resetall = 805 + Last_Directive = 805 + First_Systask = 806 + Bits = 806 + D_Root = 807 + D_Unit = 808 + Last_Systask = 808 + First_SV_Method = 809 + Size = 809 + Insert = 810 + Delete = 811 + Pop_Front = 812 + Pop_Back = 813 + Push_Front = 814 + Push_Back = 815 + Name = 816 + Len = 817 + Substr = 818 + Exists = 819 + Atoi = 820 + Itoa = 821 + Find = 822 + Find_Index = 823 + Find_First = 824 + Find_First_Index = 825 + Find_Last = 826 + Find_Last_Index = 827 + Num = 828 + Randomize = 829 + Pre_Randomize = 830 + Post_Randomize = 831 + Srandom = 832 + Get_Randstate = 833 + Set_Randstate = 834 + Seed = 835 + State = 836 + Last_SV_Method = 836 + First_BSV = 837 + uAction = 837 + uActionValue = 838 + BVI = 839 + uC = 840 + uCF = 841 + uE = 842 + uSB = 843 + uSBR = 844 + Action = 845 + Endaction = 846 + Actionvalue = 847 + Endactionvalue = 848 + Ancestor = 849 + Clocked_By = 850 + Default_Clock = 851 + Default_Reset = 852 + Dependencies = 853 + Deriving = 854 + Determines = 855 + Enable = 856 + Ifc_Inout = 857 + Input_Clock = 858 + Input_Reset = 859 + Instance = 860 + Endinstance = 861 + Let = 862 + Match = 863 + Method = 864 + Endmethod = 865 + Numeric = 866 + Output_Clock = 867 + Output_Reset = 868 + Par = 869 + Endpar = 870 + Path = 871 + Provisos = 872 + Ready = 873 + Reset_By = 874 + Rule = 875 + Endrule = 876 + Rules = 877 + Endrules = 878 + Same_Family = 879 + Schedule = 880 + Seq = 881 + Endseq = 882 + Typeclass = 883 + Endtypeclass = 884 + Valueof = 885 + uValueof = 886 + Last_BSV = 886 + First_Comment = 887 + Psl = 887 + Pragma = 888 + Last_Comment = 888 + First_PSL = 889 + A = 889 + Af = 890 + Ag = 891 + Ax = 892 + Abort = 893 + Assume_Guarantee = 894 + Before = 895 + Clock = 896 + E = 897 + Ef = 898 + Eg = 899 + Ex = 900 + Endpoint = 901 + Eventually = 902 + Fairness = 903 + Fell = 904 + Forall = 905 + G = 906 + Inf = 907 + Inherit = 908 + Never = 909 + Next_A = 910 + Next_E = 911 + Next_Event = 912 + Next_Event_A = 913 + Next_Event_E = 914 + Prev = 915 + Restrict = 916 + Restrict_Guarantee = 917 + Rose = 918 + Strong = 919 + Vmode = 920 + Vprop = 921 + Vunit = 922 + W = 923 + Whilenot = 924 + Within = 925 + X = 926 + Last_PSL = 926 + First_Edif = 927 + Celltype = 937 + View = 938 + Viewtype = 939 + Direction = 940 + Contents = 941 + Net = 942 + Viewref = 943 + Cellref = 944 + Libraryref = 945 + Portinstance = 946 + Joined = 947 + Portref = 948 + Instanceref = 949 + Design = 950 + Designator = 951 + Owner = 952 + Member = 953 + Number = 954 + Rename = 955 + Userdata = 956 + Last_Edif = 956 diff --git a/src/vhdl/python/libghdl/thin/vhdl/canon.py b/src/vhdl/python/libghdl/thin/vhdl/canon.py new file mode 100644 index 000000000..48f421618 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/canon.py @@ -0,0 +1,14 @@ +from libghdl import libghdl +from ctypes import c_bool + +Flag_Concurrent_Stmts = c_bool.in_dll( + libghdl, "vhdl__canon__canon_flag_concurrent_stmts") + +Flag_Configurations = c_bool.in_dll( + libghdl, "vhdl__canon__canon_flag_configurations") + +Flag_Associations = c_bool.in_dll( + libghdl, "vhdl__canon__canon_flag_associations") + +Extract_Sequential_Statement_Chain_Sensitivity = \ + libghdl.vhdl__canon__canon_extract_sequential_statement_chain_sensitivity diff --git a/src/vhdl/python/libghdl/thin/vhdl/elocations.py b/src/vhdl/python/libghdl/thin/vhdl/elocations.py new file mode 100644 index 000000000..8b627e33b --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/elocations.py @@ -0,0 +1,62 @@ +from libghdl import libghdl + + +Get_Start_Location = libghdl.elocations__get_start_location + +Set_Start_Location = libghdl.elocations__set_start_location + +Get_Right_Paren_Location = libghdl.elocations__get_right_paren_location + +Set_Right_Paren_Location = libghdl.elocations__set_right_paren_location + +Get_End_Location = libghdl.elocations__get_end_location + +Set_End_Location = libghdl.elocations__set_end_location + +Get_Is_Location = libghdl.elocations__get_is_location + +Set_Is_Location = libghdl.elocations__set_is_location + +Get_Begin_Location = libghdl.elocations__get_begin_location + +Set_Begin_Location = libghdl.elocations__set_begin_location + +Get_Then_Location = libghdl.elocations__get_then_location + +Set_Then_Location = libghdl.elocations__set_then_location + +Get_Loop_Location = libghdl.elocations__get_loop_location + +Set_Loop_Location = libghdl.elocations__set_loop_location + +Get_Generate_Location = libghdl.elocations__get_generate_location + +Set_Generate_Location = libghdl.elocations__set_generate_location + +Get_Generic_Location = libghdl.elocations__get_generic_location + +Set_Generic_Location = libghdl.elocations__set_generic_location + +Get_Port_Location = libghdl.elocations__get_port_location + +Set_Port_Location = libghdl.elocations__set_port_location + +Get_Generic_Map_Location = libghdl.elocations__get_generic_map_location + +Set_Generic_Map_Location = libghdl.elocations__set_generic_map_location + +Get_Port_Map_Location = libghdl.elocations__get_port_map_location + +Set_Port_Map_Location = libghdl.elocations__set_port_map_location + +Get_Arrow_Location = libghdl.elocations__get_arrow_location + +Set_Arrow_Location = libghdl.elocations__set_arrow_location + +Get_Colon_Location = libghdl.elocations__get_colon_location + +Set_Colon_Location = libghdl.elocations__set_colon_location + +Get_Assign_Location = libghdl.elocations__get_assign_location + +Set_Assign_Location = libghdl.elocations__set_assign_location diff --git a/src/vhdl/python/libghdl/thin/vhdl/flists.py b/src/vhdl/python/libghdl/thin/vhdl/flists.py new file mode 100644 index 000000000..6cdd39ff3 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/flists.py @@ -0,0 +1,11 @@ +from libghdl import libghdl +from ctypes import c_int32 + +Flist_Type = c_int32 + +Ffirst = 0 +Flast = libghdl.vhdl__flists__flast + +Length = libghdl.vhdl__flists__length + +Get_Nth_Element = libghdl.vhdl__flists__get_nth_element diff --git a/src/vhdl/python/libghdl/thin/vhdl/ieee.py b/src/vhdl/python/libghdl/thin/vhdl/ieee.py new file mode 100644 index 000000000..d1192537d --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/ieee.py @@ -0,0 +1,21 @@ +from libghdl import libghdl +from ctypes import c_int + +Std_Logic_1164_Pkg = c_int.in_dll( + libghdl, "vhdl__ieee__std_logic_1164__std_logic_1164_pkg") + +# Get value +Std_Logic_Type = c_int.in_dll( + libghdl, "vhdl__ieee__std_logic_1164__std_logic_type") + +# Get value +Std_Logic_Vector_Type = c_int.in_dll( + libghdl, "vhdl__ieee__std_logic_1164__std_logic_vector_type") + +# Get value +Rising_Edge = c_int.in_dll( + libghdl, "vhdl__ieee__std_logic_1164__rising_edge") + +# Get value +Falling_Edge = c_int.in_dll( + libghdl, "vhdl__ieee__std_logic_1164__falling_edge") diff --git a/src/vhdl/python/libghdl/thin/vhdl/lists.py b/src/vhdl/python/libghdl/thin/vhdl/lists.py new file mode 100644 index 000000000..c1c40e6e7 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/lists.py @@ -0,0 +1,33 @@ +from libghdl import libghdl +from ctypes import c_int32, POINTER + +List_Type = c_int32 + +class Iterator(Structure): + _fields_ = [("chunk", c_int32), + ("chunk_idx", c_int32), + ("remain", c_int32)] + +Iterate = libghdl.vhdl__lists__iterate +Iterate.argstype = [List_Type] +Iterate.restype = Iterator + +Is_Valid = libghdl.vhdl__lists__is_valid +Is_Valid.argstype = [POINTER(Iterator)] +Is_Valid.restype = c_bool + +Next = libghdl.vhdl__lists__next +Next.argstype = [POINTER(Iterator)] +Next.restype = None + +Get_Element = libghdl.vhdl__lists__get_element +Get_Element.argstype = [POINTER(Iterator)] +Get_Element.restype = c_int32 + +Get_Nbr_Elements = libghdl.vhdl__lists__get_nbr_elements +Get_Nbr_Elements.argtype = [List_Type] +Get_Nbr_Elements.restype = c_int32 + +Create_Iir_List = libghdl.vhdl__lists__create_list + +Destroy_Iir_List = libghdl.vhdl__lists__destroy_list diff --git a/src/vhdl/python/libghdl/thin/vhdl/nodes.py b/src/vhdl/python/libghdl/thin/vhdl/nodes.py new file mode 100644 index 000000000..9e687eebd --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/nodes.py @@ -0,0 +1,2367 @@ +from libghdl import libghdl + +Null_Iir = 0 +Null_Iir_List = 0 +Iir_List_All = 1 + +Null_Iir_Flist = 0 +Iir_Flist_Others = 1 +Iir_Flist_All = 2 + + + +class Iir_Kind: + Unused = 0 + Error = 1 + Design_File = 2 + Design_Unit = 3 + Library_Clause = 4 + Use_Clause = 5 + Context_Reference = 6 + Integer_Literal = 7 + Floating_Point_Literal = 8 + Null_Literal = 9 + String_Literal8 = 10 + Physical_Int_Literal = 11 + Physical_Fp_Literal = 12 + Simple_Aggregate = 13 + Overflow_Literal = 14 + Unaffected_Waveform = 15 + Waveform_Element = 16 + Conditional_Waveform = 17 + Conditional_Expression = 18 + Association_Element_By_Expression = 19 + Association_Element_By_Individual = 20 + Association_Element_Open = 21 + Association_Element_Package = 22 + Association_Element_Type = 23 + Association_Element_Subprogram = 24 + Choice_By_Range = 25 + Choice_By_Expression = 26 + Choice_By_Others = 27 + Choice_By_None = 28 + Choice_By_Name = 29 + Entity_Aspect_Entity = 30 + Entity_Aspect_Configuration = 31 + Entity_Aspect_Open = 32 + Block_Configuration = 33 + Block_Header = 34 + Component_Configuration = 35 + Binding_Indication = 36 + Entity_Class = 37 + Attribute_Value = 38 + Signature = 39 + Aggregate_Info = 40 + Procedure_Call = 41 + Record_Element_Constraint = 42 + Array_Element_Resolution = 43 + Record_Resolution = 44 + Record_Element_Resolution = 45 + Attribute_Specification = 46 + Disconnection_Specification = 47 + Configuration_Specification = 48 + Access_Type_Definition = 49 + Incomplete_Type_Definition = 50 + Interface_Type_Definition = 51 + File_Type_Definition = 52 + Protected_Type_Declaration = 53 + Record_Type_Definition = 54 + Array_Type_Definition = 55 + Array_Subtype_Definition = 56 + Record_Subtype_Definition = 57 + Access_Subtype_Definition = 58 + Physical_Subtype_Definition = 59 + Floating_Subtype_Definition = 60 + Integer_Subtype_Definition = 61 + Enumeration_Subtype_Definition = 62 + Enumeration_Type_Definition = 63 + Integer_Type_Definition = 64 + Floating_Type_Definition = 65 + Physical_Type_Definition = 66 + Range_Expression = 67 + Protected_Type_Body = 68 + Wildcard_Type_Definition = 69 + Subtype_Definition = 70 + Scalar_Nature_Definition = 71 + Overload_List = 72 + Type_Declaration = 73 + Anonymous_Type_Declaration = 74 + Subtype_Declaration = 75 + Nature_Declaration = 76 + Subnature_Declaration = 77 + Entity_Declaration = 78 + Configuration_Declaration = 79 + Context_Declaration = 80 + Package_Declaration = 81 + Package_Instantiation_Declaration = 82 + Package_Body = 83 + Architecture_Body = 84 + Package_Header = 85 + Unit_Declaration = 86 + Library_Declaration = 87 + Component_Declaration = 88 + Attribute_Declaration = 89 + Group_Template_Declaration = 90 + Group_Declaration = 91 + Element_Declaration = 92 + Non_Object_Alias_Declaration = 93 + Psl_Declaration = 94 + Psl_Endpoint_Declaration = 95 + Terminal_Declaration = 96 + Free_Quantity_Declaration = 97 + Across_Quantity_Declaration = 98 + Through_Quantity_Declaration = 99 + Enumeration_Literal = 100 + Function_Declaration = 101 + Procedure_Declaration = 102 + Function_Body = 103 + Procedure_Body = 104 + Object_Alias_Declaration = 105 + File_Declaration = 106 + Guard_Signal_Declaration = 107 + Signal_Declaration = 108 + Variable_Declaration = 109 + Constant_Declaration = 110 + Iterator_Declaration = 111 + Interface_Constant_Declaration = 112 + Interface_Variable_Declaration = 113 + Interface_Signal_Declaration = 114 + Interface_File_Declaration = 115 + Interface_Type_Declaration = 116 + Interface_Package_Declaration = 117 + Interface_Function_Declaration = 118 + Interface_Procedure_Declaration = 119 + Signal_Attribute_Declaration = 120 + Identity_Operator = 121 + Negation_Operator = 122 + Absolute_Operator = 123 + Not_Operator = 124 + Implicit_Condition_Operator = 125 + Condition_Operator = 126 + Reduction_And_Operator = 127 + Reduction_Or_Operator = 128 + Reduction_Nand_Operator = 129 + Reduction_Nor_Operator = 130 + Reduction_Xor_Operator = 131 + Reduction_Xnor_Operator = 132 + And_Operator = 133 + Or_Operator = 134 + Nand_Operator = 135 + Nor_Operator = 136 + Xor_Operator = 137 + Xnor_Operator = 138 + Equality_Operator = 139 + Inequality_Operator = 140 + Less_Than_Operator = 141 + Less_Than_Or_Equal_Operator = 142 + Greater_Than_Operator = 143 + Greater_Than_Or_Equal_Operator = 144 + Match_Equality_Operator = 145 + Match_Inequality_Operator = 146 + Match_Less_Than_Operator = 147 + Match_Less_Than_Or_Equal_Operator = 148 + Match_Greater_Than_Operator = 149 + Match_Greater_Than_Or_Equal_Operator = 150 + Sll_Operator = 151 + Sla_Operator = 152 + Srl_Operator = 153 + Sra_Operator = 154 + Rol_Operator = 155 + Ror_Operator = 156 + Addition_Operator = 157 + Substraction_Operator = 158 + Concatenation_Operator = 159 + Multiplication_Operator = 160 + Division_Operator = 161 + Modulus_Operator = 162 + Remainder_Operator = 163 + Exponentiation_Operator = 164 + Function_Call = 165 + Aggregate = 166 + Parenthesis_Expression = 167 + Qualified_Expression = 168 + Type_Conversion = 169 + Allocator_By_Expression = 170 + Allocator_By_Subtype = 171 + Selected_Element = 172 + Dereference = 173 + Implicit_Dereference = 174 + Slice_Name = 175 + Indexed_Name = 176 + Psl_Expression = 177 + Sensitized_Process_Statement = 178 + Process_Statement = 179 + Concurrent_Simple_Signal_Assignment = 180 + Concurrent_Conditional_Signal_Assignment = 181 + Concurrent_Selected_Signal_Assignment = 182 + Concurrent_Assertion_Statement = 183 + Concurrent_Procedure_Call_Statement = 184 + Psl_Assert_Statement = 185 + Psl_Cover_Statement = 186 + Block_Statement = 187 + If_Generate_Statement = 188 + Case_Generate_Statement = 189 + For_Generate_Statement = 190 + Component_Instantiation_Statement = 191 + Psl_Default_Clock = 192 + Simple_Simultaneous_Statement = 193 + Generate_Statement_Body = 194 + If_Generate_Else_Clause = 195 + Simple_Signal_Assignment_Statement = 196 + Conditional_Signal_Assignment_Statement = 197 + Selected_Waveform_Assignment_Statement = 198 + Null_Statement = 199 + Assertion_Statement = 200 + Report_Statement = 201 + Wait_Statement = 202 + Variable_Assignment_Statement = 203 + Conditional_Variable_Assignment_Statement = 204 + Return_Statement = 205 + For_Loop_Statement = 206 + While_Loop_Statement = 207 + Next_Statement = 208 + Exit_Statement = 209 + Case_Statement = 210 + Procedure_Call_Statement = 211 + If_Statement = 212 + Elsif = 213 + Character_Literal = 214 + Simple_Name = 215 + Selected_Name = 216 + Operator_Symbol = 217 + Reference_Name = 218 + External_Constant_Name = 219 + External_Signal_Name = 220 + External_Variable_Name = 221 + Selected_By_All_Name = 222 + Parenthesis_Name = 223 + Package_Pathname = 224 + Absolute_Pathname = 225 + Relative_Pathname = 226 + Pathname_Element = 227 + Base_Attribute = 228 + Subtype_Attribute = 229 + Element_Attribute = 230 + Left_Type_Attribute = 231 + Right_Type_Attribute = 232 + High_Type_Attribute = 233 + Low_Type_Attribute = 234 + Ascending_Type_Attribute = 235 + Image_Attribute = 236 + Value_Attribute = 237 + Pos_Attribute = 238 + Val_Attribute = 239 + Succ_Attribute = 240 + Pred_Attribute = 241 + Leftof_Attribute = 242 + Rightof_Attribute = 243 + Delayed_Attribute = 244 + Stable_Attribute = 245 + Quiet_Attribute = 246 + Transaction_Attribute = 247 + Event_Attribute = 248 + Active_Attribute = 249 + Last_Event_Attribute = 250 + Last_Active_Attribute = 251 + Last_Value_Attribute = 252 + Driving_Attribute = 253 + Driving_Value_Attribute = 254 + Behavior_Attribute = 255 + Structure_Attribute = 256 + Simple_Name_Attribute = 257 + Instance_Name_Attribute = 258 + Path_Name_Attribute = 259 + Left_Array_Attribute = 260 + Right_Array_Attribute = 261 + High_Array_Attribute = 262 + Low_Array_Attribute = 263 + Length_Array_Attribute = 264 + Ascending_Array_Attribute = 265 + Range_Array_Attribute = 266 + Reverse_Range_Array_Attribute = 267 + Attribute_Name = 268 + + +class Iir_Kinds: + Variable_Assignment_Statement = [ + Iir_Kind.Variable_Assignment_Statement, + Iir_Kind.Conditional_Variable_Assignment_Statement] + + Case_Choice = [ + Iir_Kind.Choice_By_Range, + Iir_Kind.Choice_By_Expression, + Iir_Kind.Choice_By_Others] + + Array_Type_Definition = [ + Iir_Kind.Array_Type_Definition, + Iir_Kind.Array_Subtype_Definition] + + Library_Unit = [ + Iir_Kind.Entity_Declaration, + Iir_Kind.Configuration_Declaration, + Iir_Kind.Context_Declaration, + Iir_Kind.Package_Declaration, + Iir_Kind.Package_Instantiation_Declaration, + Iir_Kind.Package_Body, + Iir_Kind.Architecture_Body] + + Array_Choice = [ + Iir_Kind.Choice_By_Range, + Iir_Kind.Choice_By_Expression, + Iir_Kind.Choice_By_Others, + Iir_Kind.Choice_By_None] + + Subprogram_Declaration = [ + Iir_Kind.Function_Declaration, + Iir_Kind.Procedure_Declaration] + + Subtype_Attribute = [ + Iir_Kind.Base_Attribute, + Iir_Kind.Subtype_Attribute, + Iir_Kind.Element_Attribute] + + Scalar_Subtype_Definition = [ + Iir_Kind.Physical_Subtype_Definition, + Iir_Kind.Floating_Subtype_Definition, + Iir_Kind.Integer_Subtype_Definition, + Iir_Kind.Enumeration_Subtype_Definition] + + Nonoverloadable_Declaration = [ + Iir_Kind.Type_Declaration, + Iir_Kind.Anonymous_Type_Declaration, + Iir_Kind.Subtype_Declaration, + Iir_Kind.Nature_Declaration, + Iir_Kind.Subnature_Declaration, + Iir_Kind.Entity_Declaration, + Iir_Kind.Configuration_Declaration, + Iir_Kind.Context_Declaration, + Iir_Kind.Package_Declaration, + Iir_Kind.Package_Instantiation_Declaration, + Iir_Kind.Package_Body, + Iir_Kind.Architecture_Body, + Iir_Kind.Package_Header, + 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] + + Literal = [ + 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] + + Process_Statement = [ + Iir_Kind.Sensitized_Process_Statement, + Iir_Kind.Process_Statement] + + Object_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] + + Clause = [ + Iir_Kind.Library_Clause, + Iir_Kind.Use_Clause, + Iir_Kind.Context_Reference] + + Type_And_Subtype_Definition = [ + Iir_Kind.Access_Type_Definition, + Iir_Kind.Incomplete_Type_Definition, + Iir_Kind.Interface_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] + + External_Name = [ + Iir_Kind.External_Constant_Name, + Iir_Kind.External_Signal_Name, + Iir_Kind.External_Variable_Name] + + Primary_Unit = [ + Iir_Kind.Entity_Declaration, + Iir_Kind.Configuration_Declaration, + Iir_Kind.Context_Declaration, + Iir_Kind.Package_Declaration, + Iir_Kind.Package_Instantiation_Declaration] + + Record_Choice = [ + Iir_Kind.Choice_By_Others, + Iir_Kind.Choice_By_None, + Iir_Kind.Choice_By_Name] + + Functions_And_Literals = [ + Iir_Kind.Enumeration_Literal, + Iir_Kind.Function_Declaration] + + Secondary_Unit = [ + Iir_Kind.Package_Body, + Iir_Kind.Architecture_Body] + + Package_Declaration = [ + Iir_Kind.Package_Declaration, + Iir_Kind.Package_Instantiation_Declaration] + + Dereference = [ + Iir_Kind.Dereference, + Iir_Kind.Implicit_Dereference] + + Composite_Subtype_Definition = [ + Iir_Kind.Array_Subtype_Definition, + Iir_Kind.Record_Subtype_Definition] + + Choice = [ + Iir_Kind.Choice_By_Range, + Iir_Kind.Choice_By_Expression, + Iir_Kind.Choice_By_Others, + Iir_Kind.Choice_By_None, + Iir_Kind.Choice_By_Name] + + If_Case_Generate_Statement = [ + Iir_Kind.If_Generate_Statement, + Iir_Kind.Case_Generate_Statement] + + Simple_Concurrent_Statement = [ + Iir_Kind.Sensitized_Process_Statement, + Iir_Kind.Process_Statement, + Iir_Kind.Concurrent_Simple_Signal_Assignment, + Iir_Kind.Concurrent_Conditional_Signal_Assignment, + Iir_Kind.Concurrent_Selected_Signal_Assignment, + Iir_Kind.Concurrent_Assertion_Statement, + Iir_Kind.Concurrent_Procedure_Call_Statement, + Iir_Kind.Psl_Assert_Statement, + Iir_Kind.Psl_Cover_Statement] + + Non_Alias_Object_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] + + Entity_Aspect = [ + Iir_Kind.Entity_Aspect_Entity, + Iir_Kind.Entity_Aspect_Configuration, + Iir_Kind.Entity_Aspect_Open] + + Subprogram_Body = [ + Iir_Kind.Function_Body, + Iir_Kind.Procedure_Body] + + Type_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] + + Specification = [ + Iir_Kind.Attribute_Specification, + Iir_Kind.Disconnection_Specification, + Iir_Kind.Configuration_Specification] + + Dyadic_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] + + Expression_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.Behavior_Attribute, + Iir_Kind.Structure_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] + + Monadic_Operator = [ + Iir_Kind.Identity_Operator, + Iir_Kind.Negation_Operator, + Iir_Kind.Absolute_Operator, + Iir_Kind.Not_Operator, + Iir_Kind.Implicit_Condition_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] + + Interface_Declaration = [ + Iir_Kind.Interface_Constant_Declaration, + Iir_Kind.Interface_Variable_Declaration, + Iir_Kind.Interface_Signal_Declaration, + Iir_Kind.Interface_File_Declaration, + Iir_Kind.Interface_Type_Declaration, + Iir_Kind.Interface_Package_Declaration, + Iir_Kind.Interface_Function_Declaration, + Iir_Kind.Interface_Procedure_Declaration] + + Array_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] + + Sequential_Statement = [ + Iir_Kind.Simple_Signal_Assignment_Statement, + Iir_Kind.Conditional_Signal_Assignment_Statement, + Iir_Kind.Selected_Waveform_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.Conditional_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] + + Denoting_And_External_Name = [ + Iir_Kind.Character_Literal, + Iir_Kind.Simple_Name, + Iir_Kind.Selected_Name, + Iir_Kind.Operator_Symbol, + Iir_Kind.Reference_Name, + Iir_Kind.External_Constant_Name, + Iir_Kind.External_Signal_Name, + Iir_Kind.External_Variable_Name] + + Range_Type_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] + + Discrete_Type_Definition = [ + Iir_Kind.Integer_Subtype_Definition, + Iir_Kind.Enumeration_Subtype_Definition, + Iir_Kind.Enumeration_Type_Definition, + Iir_Kind.Integer_Type_Definition] + + Concurrent_Statement = [ + Iir_Kind.Sensitized_Process_Statement, + Iir_Kind.Process_Statement, + Iir_Kind.Concurrent_Simple_Signal_Assignment, + Iir_Kind.Concurrent_Conditional_Signal_Assignment, + Iir_Kind.Concurrent_Selected_Signal_Assignment, + Iir_Kind.Concurrent_Assertion_Statement, + Iir_Kind.Concurrent_Procedure_Call_Statement, + Iir_Kind.Psl_Assert_Statement, + Iir_Kind.Psl_Cover_Statement, + Iir_Kind.Block_Statement, + Iir_Kind.If_Generate_Statement, + Iir_Kind.Case_Generate_Statement, + Iir_Kind.For_Generate_Statement, + Iir_Kind.Component_Instantiation_Statement, + Iir_Kind.Psl_Default_Clock] + + Signal_Attribute = [ + Iir_Kind.Delayed_Attribute, + Iir_Kind.Stable_Attribute, + Iir_Kind.Quiet_Attribute, + Iir_Kind.Transaction_Attribute] + + Type_Declaration = [ + Iir_Kind.Type_Declaration, + Iir_Kind.Anonymous_Type_Declaration, + Iir_Kind.Subtype_Declaration] + + Association_Element = [ + Iir_Kind.Association_Element_By_Expression, + Iir_Kind.Association_Element_By_Individual, + Iir_Kind.Association_Element_Open] + + Interface_Object_Declaration = [ + Iir_Kind.Interface_Constant_Declaration, + Iir_Kind.Interface_Variable_Declaration, + Iir_Kind.Interface_Signal_Declaration, + Iir_Kind.Interface_File_Declaration] + + Composite_Type_Definition = [ + Iir_Kind.Record_Type_Definition, + Iir_Kind.Array_Type_Definition, + Iir_Kind.Array_Subtype_Definition, + Iir_Kind.Record_Subtype_Definition] + + Interface_Subprogram_Declaration = [ + Iir_Kind.Interface_Function_Declaration, + Iir_Kind.Interface_Procedure_Declaration] + + Branch_Quantity_Declaration = [ + Iir_Kind.Across_Quantity_Declaration, + Iir_Kind.Through_Quantity_Declaration] + + Signal_Value_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] + + Quantity_Declaration = [ + Iir_Kind.Free_Quantity_Declaration, + Iir_Kind.Across_Quantity_Declaration, + Iir_Kind.Through_Quantity_Declaration] + + Physical_Literal = [ + Iir_Kind.Physical_Int_Literal, + Iir_Kind.Physical_Fp_Literal] + + Scalar_Type_And_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] + + Attribute = [ + Iir_Kind.Base_Attribute, + Iir_Kind.Subtype_Attribute, + Iir_Kind.Element_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.Behavior_Attribute, + Iir_Kind.Structure_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] + + Denoting_Name = [ + Iir_Kind.Character_Literal, + Iir_Kind.Simple_Name, + Iir_Kind.Selected_Name, + Iir_Kind.Operator_Symbol, + Iir_Kind.Reference_Name] + + Concurrent_Signal_Assignment = [ + Iir_Kind.Concurrent_Simple_Signal_Assignment, + Iir_Kind.Concurrent_Conditional_Signal_Assignment, + Iir_Kind.Concurrent_Selected_Signal_Assignment] + + Range_Attribute = [ + Iir_Kind.Range_Array_Attribute, + Iir_Kind.Reverse_Range_Array_Attribute] + + Name_Attribute = [ + Iir_Kind.Simple_Name_Attribute, + Iir_Kind.Instance_Name_Attribute, + Iir_Kind.Path_Name_Attribute] + + Scalar_Type_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] + + Name = [ + Iir_Kind.Character_Literal, + Iir_Kind.Simple_Name, + Iir_Kind.Selected_Name, + Iir_Kind.Operator_Symbol, + Iir_Kind.Reference_Name, + Iir_Kind.External_Constant_Name, + Iir_Kind.External_Signal_Name, + Iir_Kind.External_Variable_Name, + Iir_Kind.Selected_By_All_Name, + Iir_Kind.Parenthesis_Name] + + Subtype_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] + + Allocator = [ + Iir_Kind.Allocator_By_Expression, + Iir_Kind.Allocator_By_Subtype] + + + +class Iir_Mode: + Unknown_Mode = 0 + Linkage_Mode = 1 + Buffer_Mode = 2 + Out_Mode = 3 + Inout_Mode = 4 + In_Mode = 5 + + +class Iir_Staticness: + Unknown = 0 + PNone = 1 + Globally = 2 + Locally = 3 + + +class Iir_Constraint: + Unconstrained = 0 + Partially_Constrained = 1 + Fully_Constrained = 2 + + +class Iir_Direction: + To = 0 + Downto = 1 + + +class Iir_Delay_Mechanism: + Inertial_Delay = 0 + Transport_Delay = 1 + + +class Date_State: + Extern = 0 + Disk = 1 + Parse = 2 + Analyze = 3 + + +class Iir_Predefined: + Error = 0 + Boolean_And = 1 + Boolean_Or = 2 + Boolean_Nand = 3 + Boolean_Nor = 4 + Boolean_Xor = 5 + Boolean_Xnor = 6 + Boolean_Not = 7 + Boolean_Rising_Edge = 8 + Boolean_Falling_Edge = 9 + Enum_Equality = 10 + Enum_Inequality = 11 + Enum_Less = 12 + Enum_Less_Equal = 13 + Enum_Greater = 14 + Enum_Greater_Equal = 15 + Enum_Minimum = 16 + Enum_Maximum = 17 + Enum_To_String = 18 + Bit_And = 19 + Bit_Or = 20 + Bit_Nand = 21 + Bit_Nor = 22 + Bit_Xor = 23 + Bit_Xnor = 24 + Bit_Not = 25 + Bit_Match_Equality = 26 + Bit_Match_Inequality = 27 + Bit_Match_Less = 28 + Bit_Match_Less_Equal = 29 + Bit_Match_Greater = 30 + Bit_Match_Greater_Equal = 31 + Bit_Condition = 32 + Bit_Rising_Edge = 33 + Bit_Falling_Edge = 34 + Integer_Equality = 35 + Integer_Inequality = 36 + Integer_Less = 37 + Integer_Less_Equal = 38 + Integer_Greater = 39 + Integer_Greater_Equal = 40 + Integer_Identity = 41 + Integer_Negation = 42 + Integer_Absolute = 43 + Integer_Plus = 44 + Integer_Minus = 45 + Integer_Mul = 46 + Integer_Div = 47 + Integer_Mod = 48 + Integer_Rem = 49 + Integer_Exp = 50 + Integer_Minimum = 51 + Integer_Maximum = 52 + Integer_To_String = 53 + Floating_Equality = 54 + Floating_Inequality = 55 + Floating_Less = 56 + Floating_Less_Equal = 57 + Floating_Greater = 58 + Floating_Greater_Equal = 59 + Floating_Identity = 60 + Floating_Negation = 61 + Floating_Absolute = 62 + Floating_Plus = 63 + Floating_Minus = 64 + Floating_Mul = 65 + Floating_Div = 66 + Floating_Exp = 67 + Floating_Minimum = 68 + Floating_Maximum = 69 + Floating_To_String = 70 + Real_To_String_Digits = 71 + Real_To_String_Format = 72 + Universal_R_I_Mul = 73 + Universal_I_R_Mul = 74 + Universal_R_I_Div = 75 + Physical_Equality = 76 + Physical_Inequality = 77 + Physical_Less = 78 + Physical_Less_Equal = 79 + Physical_Greater = 80 + Physical_Greater_Equal = 81 + Physical_Identity = 82 + Physical_Negation = 83 + Physical_Absolute = 84 + Physical_Plus = 85 + Physical_Minus = 86 + Physical_Integer_Mul = 87 + Physical_Real_Mul = 88 + Integer_Physical_Mul = 89 + Real_Physical_Mul = 90 + Physical_Integer_Div = 91 + Physical_Real_Div = 92 + Physical_Physical_Div = 93 + Physical_Minimum = 94 + Physical_Maximum = 95 + Physical_To_String = 96 + Time_To_String_Unit = 97 + Access_Equality = 98 + Access_Inequality = 99 + Record_Equality = 100 + Record_Inequality = 101 + Array_Equality = 102 + Array_Inequality = 103 + Array_Less = 104 + Array_Less_Equal = 105 + Array_Greater = 106 + Array_Greater_Equal = 107 + Array_Array_Concat = 108 + Array_Element_Concat = 109 + Element_Array_Concat = 110 + Element_Element_Concat = 111 + Array_Minimum = 112 + Array_Maximum = 113 + Vector_Minimum = 114 + Vector_Maximum = 115 + Array_Sll = 116 + Array_Srl = 117 + Array_Sla = 118 + Array_Sra = 119 + Array_Rol = 120 + Array_Ror = 121 + TF_Array_And = 122 + TF_Array_Or = 123 + TF_Array_Nand = 124 + TF_Array_Nor = 125 + TF_Array_Xor = 126 + TF_Array_Xnor = 127 + TF_Array_Not = 128 + TF_Reduction_And = 129 + TF_Reduction_Or = 130 + TF_Reduction_Nand = 131 + TF_Reduction_Nor = 132 + TF_Reduction_Xor = 133 + TF_Reduction_Xnor = 134 + TF_Reduction_Not = 135 + TF_Array_Element_And = 136 + TF_Element_Array_And = 137 + TF_Array_Element_Or = 138 + TF_Element_Array_Or = 139 + TF_Array_Element_Nand = 140 + TF_Element_Array_Nand = 141 + TF_Array_Element_Nor = 142 + TF_Element_Array_Nor = 143 + TF_Array_Element_Xor = 144 + TF_Element_Array_Xor = 145 + TF_Array_Element_Xnor = 146 + TF_Element_Array_Xnor = 147 + Bit_Array_Match_Equality = 148 + Bit_Array_Match_Inequality = 149 + Array_Char_To_String = 150 + Bit_Vector_To_Ostring = 151 + Bit_Vector_To_Hstring = 152 + Std_Ulogic_Match_Equality = 153 + Std_Ulogic_Match_Inequality = 154 + Std_Ulogic_Match_Less = 155 + Std_Ulogic_Match_Less_Equal = 156 + Std_Ulogic_Match_Greater = 157 + Std_Ulogic_Match_Greater_Equal = 158 + Std_Ulogic_Array_Match_Equality = 159 + Std_Ulogic_Array_Match_Inequality = 160 + Deallocate = 161 + File_Open = 162 + File_Open_Status = 163 + File_Close = 164 + Read = 165 + Read_Length = 166 + Flush = 167 + Write = 168 + Endfile = 169 + Now_Function = 170 + PNone = 171 + Ieee_1164_Scalar_And = 172 + Ieee_1164_Scalar_Nand = 173 + Ieee_1164_Scalar_Or = 174 + Ieee_1164_Scalar_Nor = 175 + Ieee_1164_Scalar_Xor = 176 + Ieee_1164_Scalar_Xnor = 177 + Ieee_1164_Scalar_Not = 178 + Ieee_1164_Vector_And = 179 + Ieee_1164_Vector_Nand = 180 + Ieee_1164_Vector_Or = 181 + Ieee_1164_Vector_Nor = 182 + Ieee_1164_Vector_Xor = 183 + Ieee_1164_Vector_Xnor = 184 + Ieee_1164_Vector_Not = 185 + Ieee_Numeric_Std_Add_Uns_Uns = 186 + Ieee_Numeric_Std_Add_Uns_Nat = 187 + Ieee_Numeric_Std_Add_Nat_Uns = 188 + Ieee_Numeric_Std_Add_Sgn_Sgn = 189 + Ieee_Numeric_Std_Add_Sgn_Int = 190 + Ieee_Numeric_Std_Add_Int_Sgn = 191 + Ieee_Numeric_Std_Eq_Uns_Uns = 192 + Ieee_Numeric_Std_Eq_Uns_Nat = 193 + Ieee_Numeric_Std_Eq_Nat_Uns = 194 + Ieee_Numeric_Std_Eq_Sgn_Sgn = 195 + Ieee_Numeric_Std_Eq_Sgn_Int = 196 + Ieee_Numeric_Std_Eq_Int_Sgn = 197 + +Get_Kind = libghdl.vhdl__nodes__get_kind +Get_Location = libghdl.vhdl__nodes__get_location + +Get_First_Design_Unit = libghdl.vhdl__nodes__get_first_design_unit + +Set_First_Design_Unit = libghdl.vhdl__nodes__set_first_design_unit + +Get_Last_Design_Unit = libghdl.vhdl__nodes__get_last_design_unit + +Set_Last_Design_Unit = libghdl.vhdl__nodes__set_last_design_unit + +Get_Library_Declaration = libghdl.vhdl__nodes__get_library_declaration + +Set_Library_Declaration = libghdl.vhdl__nodes__set_library_declaration + +Get_File_Checksum = libghdl.vhdl__nodes__get_file_checksum + +Set_File_Checksum = libghdl.vhdl__nodes__set_file_checksum + +Get_Analysis_Time_Stamp = libghdl.vhdl__nodes__get_analysis_time_stamp + +Set_Analysis_Time_Stamp = libghdl.vhdl__nodes__set_analysis_time_stamp + +Get_Design_File_Source = libghdl.vhdl__nodes__get_design_file_source + +Set_Design_File_Source = libghdl.vhdl__nodes__set_design_file_source + +Get_Library = libghdl.vhdl__nodes__get_library + +Set_Library = libghdl.vhdl__nodes__set_library + +Get_File_Dependence_List = libghdl.vhdl__nodes__get_file_dependence_list + +Set_File_Dependence_List = libghdl.vhdl__nodes__set_file_dependence_list + +Get_Design_File_Filename = libghdl.vhdl__nodes__get_design_file_filename + +Set_Design_File_Filename = libghdl.vhdl__nodes__set_design_file_filename + +Get_Design_File_Directory = libghdl.vhdl__nodes__get_design_file_directory + +Set_Design_File_Directory = libghdl.vhdl__nodes__set_design_file_directory + +Get_Design_File = libghdl.vhdl__nodes__get_design_file + +Set_Design_File = libghdl.vhdl__nodes__set_design_file + +Get_Design_File_Chain = libghdl.vhdl__nodes__get_design_file_chain + +Set_Design_File_Chain = libghdl.vhdl__nodes__set_design_file_chain + +Get_Library_Directory = libghdl.vhdl__nodes__get_library_directory + +Set_Library_Directory = libghdl.vhdl__nodes__set_library_directory + +Get_Date = libghdl.vhdl__nodes__get_date + +Set_Date = libghdl.vhdl__nodes__set_date + +Get_Context_Items = libghdl.vhdl__nodes__get_context_items + +Set_Context_Items = libghdl.vhdl__nodes__set_context_items + +Get_Dependence_List = libghdl.vhdl__nodes__get_dependence_list + +Set_Dependence_List = libghdl.vhdl__nodes__set_dependence_list + +Get_Analysis_Checks_List = libghdl.vhdl__nodes__get_analysis_checks_list + +Set_Analysis_Checks_List = libghdl.vhdl__nodes__set_analysis_checks_list + +Get_Date_State = libghdl.vhdl__nodes__get_date_state + +Set_Date_State = libghdl.vhdl__nodes__set_date_state + +Get_Guarded_Target_State = libghdl.vhdl__nodes__get_guarded_target_state + +Set_Guarded_Target_State = libghdl.vhdl__nodes__set_guarded_target_state + +Get_Library_Unit = libghdl.vhdl__nodes__get_library_unit + +Set_Library_Unit = libghdl.vhdl__nodes__set_library_unit + +Get_Hash_Chain = libghdl.vhdl__nodes__get_hash_chain + +Set_Hash_Chain = libghdl.vhdl__nodes__set_hash_chain + +Get_Design_Unit_Source_Pos = libghdl.vhdl__nodes__get_design_unit_source_pos + +Set_Design_Unit_Source_Pos = libghdl.vhdl__nodes__set_design_unit_source_pos + +Get_Design_Unit_Source_Line = libghdl.vhdl__nodes__get_design_unit_source_line + +Set_Design_Unit_Source_Line = libghdl.vhdl__nodes__set_design_unit_source_line + +Get_Design_Unit_Source_Col = libghdl.vhdl__nodes__get_design_unit_source_col + +Set_Design_Unit_Source_Col = libghdl.vhdl__nodes__set_design_unit_source_col + +Get_Value = libghdl.vhdl__nodes__get_value + +Set_Value = libghdl.vhdl__nodes__set_value + +Get_Enum_Pos = libghdl.vhdl__nodes__get_enum_pos + +Set_Enum_Pos = libghdl.vhdl__nodes__set_enum_pos + +Get_Physical_Literal = libghdl.vhdl__nodes__get_physical_literal + +Set_Physical_Literal = libghdl.vhdl__nodes__set_physical_literal + +Get_Fp_Value = libghdl.vhdl__nodes__get_fp_value + +Set_Fp_Value = libghdl.vhdl__nodes__set_fp_value + +Get_Simple_Aggregate_List = libghdl.vhdl__nodes__get_simple_aggregate_list + +Set_Simple_Aggregate_List = libghdl.vhdl__nodes__set_simple_aggregate_list + +Get_String8_Id = libghdl.vhdl__nodes__get_string8_id + +Set_String8_Id = libghdl.vhdl__nodes__set_string8_id + +Get_String_Length = libghdl.vhdl__nodes__get_string_length + +Set_String_Length = libghdl.vhdl__nodes__set_string_length + +Get_Bit_String_Base = libghdl.vhdl__nodes__get_bit_string_base + +Set_Bit_String_Base = libghdl.vhdl__nodes__set_bit_string_base + +Get_Has_Signed = libghdl.vhdl__nodes__get_has_signed + +Set_Has_Signed = libghdl.vhdl__nodes__set_has_signed + +Get_Has_Sign = libghdl.vhdl__nodes__get_has_sign + +Set_Has_Sign = libghdl.vhdl__nodes__set_has_sign + +Get_Has_Length = libghdl.vhdl__nodes__get_has_length + +Set_Has_Length = libghdl.vhdl__nodes__set_has_length + +Get_Literal_Origin = libghdl.vhdl__nodes__get_literal_origin + +Set_Literal_Origin = libghdl.vhdl__nodes__set_literal_origin + +Get_Range_Origin = libghdl.vhdl__nodes__get_range_origin + +Set_Range_Origin = libghdl.vhdl__nodes__set_range_origin + +Get_Literal_Subtype = libghdl.vhdl__nodes__get_literal_subtype + +Set_Literal_Subtype = libghdl.vhdl__nodes__set_literal_subtype + +Get_Allocator_Subtype = libghdl.vhdl__nodes__get_allocator_subtype + +Set_Allocator_Subtype = libghdl.vhdl__nodes__set_allocator_subtype + +Get_Entity_Class = libghdl.vhdl__nodes__get_entity_class + +Set_Entity_Class = libghdl.vhdl__nodes__set_entity_class + +Get_Entity_Name_List = libghdl.vhdl__nodes__get_entity_name_list + +Set_Entity_Name_List = libghdl.vhdl__nodes__set_entity_name_list + +Get_Attribute_Designator = libghdl.vhdl__nodes__get_attribute_designator + +Set_Attribute_Designator = libghdl.vhdl__nodes__set_attribute_designator + +Get_Attribute_Specification_Chain = libghdl.vhdl__nodes__get_attribute_specification_chain + +Set_Attribute_Specification_Chain = libghdl.vhdl__nodes__set_attribute_specification_chain + +Get_Attribute_Specification = libghdl.vhdl__nodes__get_attribute_specification + +Set_Attribute_Specification = libghdl.vhdl__nodes__set_attribute_specification + +Get_Signal_List = libghdl.vhdl__nodes__get_signal_list + +Set_Signal_List = libghdl.vhdl__nodes__set_signal_list + +Get_Designated_Entity = libghdl.vhdl__nodes__get_designated_entity + +Set_Designated_Entity = libghdl.vhdl__nodes__set_designated_entity + +Get_Formal = libghdl.vhdl__nodes__get_formal + +Set_Formal = libghdl.vhdl__nodes__set_formal + +Get_Actual = libghdl.vhdl__nodes__get_actual + +Set_Actual = libghdl.vhdl__nodes__set_actual + +Get_Actual_Conversion = libghdl.vhdl__nodes__get_actual_conversion + +Set_Actual_Conversion = libghdl.vhdl__nodes__set_actual_conversion + +Get_Formal_Conversion = libghdl.vhdl__nodes__get_formal_conversion + +Set_Formal_Conversion = libghdl.vhdl__nodes__set_formal_conversion + +Get_Whole_Association_Flag = libghdl.vhdl__nodes__get_whole_association_flag + +Set_Whole_Association_Flag = libghdl.vhdl__nodes__set_whole_association_flag + +Get_Collapse_Signal_Flag = libghdl.vhdl__nodes__get_collapse_signal_flag + +Set_Collapse_Signal_Flag = libghdl.vhdl__nodes__set_collapse_signal_flag + +Get_Artificial_Flag = libghdl.vhdl__nodes__get_artificial_flag + +Set_Artificial_Flag = libghdl.vhdl__nodes__set_artificial_flag + +Get_Open_Flag = libghdl.vhdl__nodes__get_open_flag + +Set_Open_Flag = libghdl.vhdl__nodes__set_open_flag + +Get_After_Drivers_Flag = libghdl.vhdl__nodes__get_after_drivers_flag + +Set_After_Drivers_Flag = libghdl.vhdl__nodes__set_after_drivers_flag + +Get_We_Value = libghdl.vhdl__nodes__get_we_value + +Set_We_Value = libghdl.vhdl__nodes__set_we_value + +Get_Time = libghdl.vhdl__nodes__get_time + +Set_Time = libghdl.vhdl__nodes__set_time + +Get_Choice_Order = libghdl.vhdl__nodes__get_choice_order + +Set_Choice_Order = libghdl.vhdl__nodes__set_choice_order + +Get_Associated_Expr = libghdl.vhdl__nodes__get_associated_expr + +Set_Associated_Expr = libghdl.vhdl__nodes__set_associated_expr + +Get_Associated_Block = libghdl.vhdl__nodes__get_associated_block + +Set_Associated_Block = libghdl.vhdl__nodes__set_associated_block + +Get_Associated_Chain = libghdl.vhdl__nodes__get_associated_chain + +Set_Associated_Chain = libghdl.vhdl__nodes__set_associated_chain + +Get_Choice_Name = libghdl.vhdl__nodes__get_choice_name + +Set_Choice_Name = libghdl.vhdl__nodes__set_choice_name + +Get_Choice_Expression = libghdl.vhdl__nodes__get_choice_expression + +Set_Choice_Expression = libghdl.vhdl__nodes__set_choice_expression + +Get_Choice_Range = libghdl.vhdl__nodes__get_choice_range + +Set_Choice_Range = libghdl.vhdl__nodes__set_choice_range + +Get_Same_Alternative_Flag = libghdl.vhdl__nodes__get_same_alternative_flag + +Set_Same_Alternative_Flag = libghdl.vhdl__nodes__set_same_alternative_flag + +Get_Element_Type_Flag = libghdl.vhdl__nodes__get_element_type_flag + +Set_Element_Type_Flag = libghdl.vhdl__nodes__set_element_type_flag + +Get_Architecture = libghdl.vhdl__nodes__get_architecture + +Set_Architecture = libghdl.vhdl__nodes__set_architecture + +Get_Block_Specification = libghdl.vhdl__nodes__get_block_specification + +Set_Block_Specification = libghdl.vhdl__nodes__set_block_specification + +Get_Prev_Block_Configuration = libghdl.vhdl__nodes__get_prev_block_configuration + +Set_Prev_Block_Configuration = libghdl.vhdl__nodes__set_prev_block_configuration + +Get_Configuration_Item_Chain = libghdl.vhdl__nodes__get_configuration_item_chain + +Set_Configuration_Item_Chain = libghdl.vhdl__nodes__set_configuration_item_chain + +Get_Attribute_Value_Chain = libghdl.vhdl__nodes__get_attribute_value_chain + +Set_Attribute_Value_Chain = libghdl.vhdl__nodes__set_attribute_value_chain + +Get_Spec_Chain = libghdl.vhdl__nodes__get_spec_chain + +Set_Spec_Chain = libghdl.vhdl__nodes__set_spec_chain + +Get_Value_Chain = libghdl.vhdl__nodes__get_value_chain + +Set_Value_Chain = libghdl.vhdl__nodes__set_value_chain + +Get_Attribute_Value_Spec_Chain = libghdl.vhdl__nodes__get_attribute_value_spec_chain + +Set_Attribute_Value_Spec_Chain = libghdl.vhdl__nodes__set_attribute_value_spec_chain + +Get_Entity_Name = libghdl.vhdl__nodes__get_entity_name + +Set_Entity_Name = libghdl.vhdl__nodes__set_entity_name + +Get_Package = libghdl.vhdl__nodes__get_package + +Set_Package = libghdl.vhdl__nodes__set_package + +Get_Package_Body = libghdl.vhdl__nodes__get_package_body + +Set_Package_Body = libghdl.vhdl__nodes__set_package_body + +Get_Instance_Package_Body = libghdl.vhdl__nodes__get_instance_package_body + +Set_Instance_Package_Body = libghdl.vhdl__nodes__set_instance_package_body + +Get_Need_Body = libghdl.vhdl__nodes__get_need_body + +Set_Need_Body = libghdl.vhdl__nodes__set_need_body + +Get_Macro_Expanded_Flag = libghdl.vhdl__nodes__get_macro_expanded_flag + +Set_Macro_Expanded_Flag = libghdl.vhdl__nodes__set_macro_expanded_flag + +Get_Need_Instance_Bodies = libghdl.vhdl__nodes__get_need_instance_bodies + +Set_Need_Instance_Bodies = libghdl.vhdl__nodes__set_need_instance_bodies + +Get_Block_Configuration = libghdl.vhdl__nodes__get_block_configuration + +Set_Block_Configuration = libghdl.vhdl__nodes__set_block_configuration + +Get_Concurrent_Statement_Chain = libghdl.vhdl__nodes__get_concurrent_statement_chain + +Set_Concurrent_Statement_Chain = libghdl.vhdl__nodes__set_concurrent_statement_chain + +Get_Chain = libghdl.vhdl__nodes__get_chain + +Set_Chain = libghdl.vhdl__nodes__set_chain + +Get_Port_Chain = libghdl.vhdl__nodes__get_port_chain + +Set_Port_Chain = libghdl.vhdl__nodes__set_port_chain + +Get_Generic_Chain = libghdl.vhdl__nodes__get_generic_chain + +Set_Generic_Chain = libghdl.vhdl__nodes__set_generic_chain + +Get_Type = libghdl.vhdl__nodes__get_type + +Set_Type = libghdl.vhdl__nodes__set_type + +Get_Subtype_Indication = libghdl.vhdl__nodes__get_subtype_indication + +Set_Subtype_Indication = libghdl.vhdl__nodes__set_subtype_indication + +Get_Discrete_Range = libghdl.vhdl__nodes__get_discrete_range + +Set_Discrete_Range = libghdl.vhdl__nodes__set_discrete_range + +Get_Type_Definition = libghdl.vhdl__nodes__get_type_definition + +Set_Type_Definition = libghdl.vhdl__nodes__set_type_definition + +Get_Subtype_Definition = libghdl.vhdl__nodes__get_subtype_definition + +Set_Subtype_Definition = libghdl.vhdl__nodes__set_subtype_definition + +Get_Incomplete_Type_Declaration = libghdl.vhdl__nodes__get_incomplete_type_declaration + +Set_Incomplete_Type_Declaration = libghdl.vhdl__nodes__set_incomplete_type_declaration + +Get_Interface_Type_Subprograms = libghdl.vhdl__nodes__get_interface_type_subprograms + +Set_Interface_Type_Subprograms = libghdl.vhdl__nodes__set_interface_type_subprograms + +Get_Nature = libghdl.vhdl__nodes__get_nature + +Set_Nature = libghdl.vhdl__nodes__set_nature + +Get_Mode = libghdl.vhdl__nodes__get_mode + +Set_Mode = libghdl.vhdl__nodes__set_mode + +Get_Guarded_Signal_Flag = libghdl.vhdl__nodes__get_guarded_signal_flag + +Set_Guarded_Signal_Flag = libghdl.vhdl__nodes__set_guarded_signal_flag + +Get_Signal_Kind = libghdl.vhdl__nodes__get_signal_kind + +Set_Signal_Kind = libghdl.vhdl__nodes__set_signal_kind + +Get_Base_Name = libghdl.vhdl__nodes__get_base_name + +Set_Base_Name = libghdl.vhdl__nodes__set_base_name + +Get_Interface_Declaration_Chain = libghdl.vhdl__nodes__get_interface_declaration_chain + +Set_Interface_Declaration_Chain = libghdl.vhdl__nodes__set_interface_declaration_chain + +Get_Subprogram_Specification = libghdl.vhdl__nodes__get_subprogram_specification + +Set_Subprogram_Specification = libghdl.vhdl__nodes__set_subprogram_specification + +Get_Sequential_Statement_Chain = libghdl.vhdl__nodes__get_sequential_statement_chain + +Set_Sequential_Statement_Chain = libghdl.vhdl__nodes__set_sequential_statement_chain + +Get_Subprogram_Body = libghdl.vhdl__nodes__get_subprogram_body + +Set_Subprogram_Body = libghdl.vhdl__nodes__set_subprogram_body + +Get_Overload_Number = libghdl.vhdl__nodes__get_overload_number + +Set_Overload_Number = libghdl.vhdl__nodes__set_overload_number + +Get_Subprogram_Depth = libghdl.vhdl__nodes__get_subprogram_depth + +Set_Subprogram_Depth = libghdl.vhdl__nodes__set_subprogram_depth + +Get_Subprogram_Hash = libghdl.vhdl__nodes__get_subprogram_hash + +Set_Subprogram_Hash = libghdl.vhdl__nodes__set_subprogram_hash + +Get_Impure_Depth = libghdl.vhdl__nodes__get_impure_depth + +Set_Impure_Depth = libghdl.vhdl__nodes__set_impure_depth + +Get_Return_Type = libghdl.vhdl__nodes__get_return_type + +Set_Return_Type = libghdl.vhdl__nodes__set_return_type + +Get_Implicit_Definition = libghdl.vhdl__nodes__get_implicit_definition + +Set_Implicit_Definition = libghdl.vhdl__nodes__set_implicit_definition + +Get_Default_Value = libghdl.vhdl__nodes__get_default_value + +Set_Default_Value = libghdl.vhdl__nodes__set_default_value + +Get_Deferred_Declaration = libghdl.vhdl__nodes__get_deferred_declaration + +Set_Deferred_Declaration = libghdl.vhdl__nodes__set_deferred_declaration + +Get_Deferred_Declaration_Flag = libghdl.vhdl__nodes__get_deferred_declaration_flag + +Set_Deferred_Declaration_Flag = libghdl.vhdl__nodes__set_deferred_declaration_flag + +Get_Shared_Flag = libghdl.vhdl__nodes__get_shared_flag + +Set_Shared_Flag = libghdl.vhdl__nodes__set_shared_flag + +Get_Design_Unit = libghdl.vhdl__nodes__get_design_unit + +Set_Design_Unit = libghdl.vhdl__nodes__set_design_unit + +Get_Block_Statement = libghdl.vhdl__nodes__get_block_statement + +Set_Block_Statement = libghdl.vhdl__nodes__set_block_statement + +Get_Signal_Driver = libghdl.vhdl__nodes__get_signal_driver + +Set_Signal_Driver = libghdl.vhdl__nodes__set_signal_driver + +Get_Declaration_Chain = libghdl.vhdl__nodes__get_declaration_chain + +Set_Declaration_Chain = libghdl.vhdl__nodes__set_declaration_chain + +Get_File_Logical_Name = libghdl.vhdl__nodes__get_file_logical_name + +Set_File_Logical_Name = libghdl.vhdl__nodes__set_file_logical_name + +Get_File_Open_Kind = libghdl.vhdl__nodes__get_file_open_kind + +Set_File_Open_Kind = libghdl.vhdl__nodes__set_file_open_kind + +Get_Element_Position = libghdl.vhdl__nodes__get_element_position + +Set_Element_Position = libghdl.vhdl__nodes__set_element_position + +Get_Use_Clause_Chain = libghdl.vhdl__nodes__get_use_clause_chain + +Set_Use_Clause_Chain = libghdl.vhdl__nodes__set_use_clause_chain + +Get_Context_Reference_Chain = libghdl.vhdl__nodes__get_context_reference_chain + +Set_Context_Reference_Chain = libghdl.vhdl__nodes__set_context_reference_chain + +Get_Selected_Name = libghdl.vhdl__nodes__get_selected_name + +Set_Selected_Name = libghdl.vhdl__nodes__set_selected_name + +Get_Type_Declarator = libghdl.vhdl__nodes__get_type_declarator + +Set_Type_Declarator = libghdl.vhdl__nodes__set_type_declarator + +Get_Complete_Type_Definition = libghdl.vhdl__nodes__get_complete_type_definition + +Set_Complete_Type_Definition = libghdl.vhdl__nodes__set_complete_type_definition + +Get_Incomplete_Type_Ref_Chain = libghdl.vhdl__nodes__get_incomplete_type_ref_chain + +Set_Incomplete_Type_Ref_Chain = libghdl.vhdl__nodes__set_incomplete_type_ref_chain + +Get_Associated_Type = libghdl.vhdl__nodes__get_associated_type + +Set_Associated_Type = libghdl.vhdl__nodes__set_associated_type + +Get_Enumeration_Literal_List = libghdl.vhdl__nodes__get_enumeration_literal_list + +Set_Enumeration_Literal_List = libghdl.vhdl__nodes__set_enumeration_literal_list + +Get_Entity_Class_Entry_Chain = libghdl.vhdl__nodes__get_entity_class_entry_chain + +Set_Entity_Class_Entry_Chain = libghdl.vhdl__nodes__set_entity_class_entry_chain + +Get_Group_Constituent_List = libghdl.vhdl__nodes__get_group_constituent_list + +Set_Group_Constituent_List = libghdl.vhdl__nodes__set_group_constituent_list + +Get_Unit_Chain = libghdl.vhdl__nodes__get_unit_chain + +Set_Unit_Chain = libghdl.vhdl__nodes__set_unit_chain + +Get_Primary_Unit = libghdl.vhdl__nodes__get_primary_unit + +Set_Primary_Unit = libghdl.vhdl__nodes__set_primary_unit + +Get_Identifier = libghdl.vhdl__nodes__get_identifier + +Set_Identifier = libghdl.vhdl__nodes__set_identifier + +Get_Label = libghdl.vhdl__nodes__get_label + +Set_Label = libghdl.vhdl__nodes__set_label + +Get_Visible_Flag = libghdl.vhdl__nodes__get_visible_flag + +Set_Visible_Flag = libghdl.vhdl__nodes__set_visible_flag + +Get_Range_Constraint = libghdl.vhdl__nodes__get_range_constraint + +Set_Range_Constraint = libghdl.vhdl__nodes__set_range_constraint + +Get_Direction = libghdl.vhdl__nodes__get_direction + +Set_Direction = libghdl.vhdl__nodes__set_direction + +Get_Left_Limit = libghdl.vhdl__nodes__get_left_limit + +Set_Left_Limit = libghdl.vhdl__nodes__set_left_limit + +Get_Right_Limit = libghdl.vhdl__nodes__get_right_limit + +Set_Right_Limit = libghdl.vhdl__nodes__set_right_limit + +Get_Left_Limit_Expr = libghdl.vhdl__nodes__get_left_limit_expr + +Set_Left_Limit_Expr = libghdl.vhdl__nodes__set_left_limit_expr + +Get_Right_Limit_Expr = libghdl.vhdl__nodes__get_right_limit_expr + +Set_Right_Limit_Expr = libghdl.vhdl__nodes__set_right_limit_expr + +Get_Base_Type = libghdl.vhdl__nodes__get_base_type + +Set_Base_Type = libghdl.vhdl__nodes__set_base_type + +Get_Resolution_Indication = libghdl.vhdl__nodes__get_resolution_indication + +Set_Resolution_Indication = libghdl.vhdl__nodes__set_resolution_indication + +Get_Record_Element_Resolution_Chain = libghdl.vhdl__nodes__get_record_element_resolution_chain + +Set_Record_Element_Resolution_Chain = libghdl.vhdl__nodes__set_record_element_resolution_chain + +Get_Tolerance = libghdl.vhdl__nodes__get_tolerance + +Set_Tolerance = libghdl.vhdl__nodes__set_tolerance + +Get_Plus_Terminal = libghdl.vhdl__nodes__get_plus_terminal + +Set_Plus_Terminal = libghdl.vhdl__nodes__set_plus_terminal + +Get_Minus_Terminal = libghdl.vhdl__nodes__get_minus_terminal + +Set_Minus_Terminal = libghdl.vhdl__nodes__set_minus_terminal + +Get_Simultaneous_Left = libghdl.vhdl__nodes__get_simultaneous_left + +Set_Simultaneous_Left = libghdl.vhdl__nodes__set_simultaneous_left + +Get_Simultaneous_Right = libghdl.vhdl__nodes__get_simultaneous_right + +Set_Simultaneous_Right = libghdl.vhdl__nodes__set_simultaneous_right + +Get_Text_File_Flag = libghdl.vhdl__nodes__get_text_file_flag + +Set_Text_File_Flag = libghdl.vhdl__nodes__set_text_file_flag + +Get_Only_Characters_Flag = libghdl.vhdl__nodes__get_only_characters_flag + +Set_Only_Characters_Flag = libghdl.vhdl__nodes__set_only_characters_flag + +Get_Is_Character_Type = libghdl.vhdl__nodes__get_is_character_type + +Set_Is_Character_Type = libghdl.vhdl__nodes__set_is_character_type + +Get_Type_Staticness = libghdl.vhdl__nodes__get_type_staticness + +Set_Type_Staticness = libghdl.vhdl__nodes__set_type_staticness + +Get_Constraint_State = libghdl.vhdl__nodes__get_constraint_state + +Set_Constraint_State = libghdl.vhdl__nodes__set_constraint_state + +Get_Index_Subtype_List = libghdl.vhdl__nodes__get_index_subtype_list + +Set_Index_Subtype_List = libghdl.vhdl__nodes__set_index_subtype_list + +Get_Index_Subtype_Definition_List = libghdl.vhdl__nodes__get_index_subtype_definition_list + +Set_Index_Subtype_Definition_List = libghdl.vhdl__nodes__set_index_subtype_definition_list + +Get_Element_Subtype_Indication = libghdl.vhdl__nodes__get_element_subtype_indication + +Set_Element_Subtype_Indication = libghdl.vhdl__nodes__set_element_subtype_indication + +Get_Element_Subtype = libghdl.vhdl__nodes__get_element_subtype + +Set_Element_Subtype = libghdl.vhdl__nodes__set_element_subtype + +Get_Index_Constraint_List = libghdl.vhdl__nodes__get_index_constraint_list + +Set_Index_Constraint_List = libghdl.vhdl__nodes__set_index_constraint_list + +Get_Array_Element_Constraint = libghdl.vhdl__nodes__get_array_element_constraint + +Set_Array_Element_Constraint = libghdl.vhdl__nodes__set_array_element_constraint + +Get_Elements_Declaration_List = libghdl.vhdl__nodes__get_elements_declaration_list + +Set_Elements_Declaration_List = libghdl.vhdl__nodes__set_elements_declaration_list + +Get_Owned_Elements_Chain = libghdl.vhdl__nodes__get_owned_elements_chain + +Set_Owned_Elements_Chain = libghdl.vhdl__nodes__set_owned_elements_chain + +Get_Designated_Type = libghdl.vhdl__nodes__get_designated_type + +Set_Designated_Type = libghdl.vhdl__nodes__set_designated_type + +Get_Designated_Subtype_Indication = libghdl.vhdl__nodes__get_designated_subtype_indication + +Set_Designated_Subtype_Indication = libghdl.vhdl__nodes__set_designated_subtype_indication + +Get_Index_List = libghdl.vhdl__nodes__get_index_list + +Set_Index_List = libghdl.vhdl__nodes__set_index_list + +Get_Reference = libghdl.vhdl__nodes__get_reference + +Set_Reference = libghdl.vhdl__nodes__set_reference + +Get_Nature_Declarator = libghdl.vhdl__nodes__get_nature_declarator + +Set_Nature_Declarator = libghdl.vhdl__nodes__set_nature_declarator + +Get_Across_Type = libghdl.vhdl__nodes__get_across_type + +Set_Across_Type = libghdl.vhdl__nodes__set_across_type + +Get_Through_Type = libghdl.vhdl__nodes__get_through_type + +Set_Through_Type = libghdl.vhdl__nodes__set_through_type + +Get_Target = libghdl.vhdl__nodes__get_target + +Set_Target = libghdl.vhdl__nodes__set_target + +Get_Waveform_Chain = libghdl.vhdl__nodes__get_waveform_chain + +Set_Waveform_Chain = libghdl.vhdl__nodes__set_waveform_chain + +Get_Guard = libghdl.vhdl__nodes__get_guard + +Set_Guard = libghdl.vhdl__nodes__set_guard + +Get_Delay_Mechanism = libghdl.vhdl__nodes__get_delay_mechanism + +Set_Delay_Mechanism = libghdl.vhdl__nodes__set_delay_mechanism + +Get_Reject_Time_Expression = libghdl.vhdl__nodes__get_reject_time_expression + +Set_Reject_Time_Expression = libghdl.vhdl__nodes__set_reject_time_expression + +Get_Sensitivity_List = libghdl.vhdl__nodes__get_sensitivity_list + +Set_Sensitivity_List = libghdl.vhdl__nodes__set_sensitivity_list + +Get_Process_Origin = libghdl.vhdl__nodes__get_process_origin + +Set_Process_Origin = libghdl.vhdl__nodes__set_process_origin + +Get_Package_Origin = libghdl.vhdl__nodes__get_package_origin + +Set_Package_Origin = libghdl.vhdl__nodes__set_package_origin + +Get_Condition_Clause = libghdl.vhdl__nodes__get_condition_clause + +Set_Condition_Clause = libghdl.vhdl__nodes__set_condition_clause + +Get_Timeout_Clause = libghdl.vhdl__nodes__get_timeout_clause + +Set_Timeout_Clause = libghdl.vhdl__nodes__set_timeout_clause + +Get_Postponed_Flag = libghdl.vhdl__nodes__get_postponed_flag + +Set_Postponed_Flag = libghdl.vhdl__nodes__set_postponed_flag + +Get_Callees_List = libghdl.vhdl__nodes__get_callees_list + +Set_Callees_List = libghdl.vhdl__nodes__set_callees_list + +Get_Passive_Flag = libghdl.vhdl__nodes__get_passive_flag + +Set_Passive_Flag = libghdl.vhdl__nodes__set_passive_flag + +Get_Resolution_Function_Flag = libghdl.vhdl__nodes__get_resolution_function_flag + +Set_Resolution_Function_Flag = libghdl.vhdl__nodes__set_resolution_function_flag + +Get_Wait_State = libghdl.vhdl__nodes__get_wait_state + +Set_Wait_State = libghdl.vhdl__nodes__set_wait_state + +Get_All_Sensitized_State = libghdl.vhdl__nodes__get_all_sensitized_state + +Set_All_Sensitized_State = libghdl.vhdl__nodes__set_all_sensitized_state + +Get_Seen_Flag = libghdl.vhdl__nodes__get_seen_flag + +Set_Seen_Flag = libghdl.vhdl__nodes__set_seen_flag + +Get_Pure_Flag = libghdl.vhdl__nodes__get_pure_flag + +Set_Pure_Flag = libghdl.vhdl__nodes__set_pure_flag + +Get_Foreign_Flag = libghdl.vhdl__nodes__get_foreign_flag + +Set_Foreign_Flag = libghdl.vhdl__nodes__set_foreign_flag + +Get_Resolved_Flag = libghdl.vhdl__nodes__get_resolved_flag + +Set_Resolved_Flag = libghdl.vhdl__nodes__set_resolved_flag + +Get_Signal_Type_Flag = libghdl.vhdl__nodes__get_signal_type_flag + +Set_Signal_Type_Flag = libghdl.vhdl__nodes__set_signal_type_flag + +Get_Has_Signal_Flag = libghdl.vhdl__nodes__get_has_signal_flag + +Set_Has_Signal_Flag = libghdl.vhdl__nodes__set_has_signal_flag + +Get_Purity_State = libghdl.vhdl__nodes__get_purity_state + +Set_Purity_State = libghdl.vhdl__nodes__set_purity_state + +Get_Elab_Flag = libghdl.vhdl__nodes__get_elab_flag + +Set_Elab_Flag = libghdl.vhdl__nodes__set_elab_flag + +Get_Configuration_Mark_Flag = libghdl.vhdl__nodes__get_configuration_mark_flag + +Set_Configuration_Mark_Flag = libghdl.vhdl__nodes__set_configuration_mark_flag + +Get_Configuration_Done_Flag = libghdl.vhdl__nodes__get_configuration_done_flag + +Set_Configuration_Done_Flag = libghdl.vhdl__nodes__set_configuration_done_flag + +Get_Index_Constraint_Flag = libghdl.vhdl__nodes__get_index_constraint_flag + +Set_Index_Constraint_Flag = libghdl.vhdl__nodes__set_index_constraint_flag + +Get_Hide_Implicit_Flag = libghdl.vhdl__nodes__get_hide_implicit_flag + +Set_Hide_Implicit_Flag = libghdl.vhdl__nodes__set_hide_implicit_flag + +Get_Assertion_Condition = libghdl.vhdl__nodes__get_assertion_condition + +Set_Assertion_Condition = libghdl.vhdl__nodes__set_assertion_condition + +Get_Report_Expression = libghdl.vhdl__nodes__get_report_expression + +Set_Report_Expression = libghdl.vhdl__nodes__set_report_expression + +Get_Severity_Expression = libghdl.vhdl__nodes__get_severity_expression + +Set_Severity_Expression = libghdl.vhdl__nodes__set_severity_expression + +Get_Instantiated_Unit = libghdl.vhdl__nodes__get_instantiated_unit + +Set_Instantiated_Unit = libghdl.vhdl__nodes__set_instantiated_unit + +Get_Generic_Map_Aspect_Chain = libghdl.vhdl__nodes__get_generic_map_aspect_chain + +Set_Generic_Map_Aspect_Chain = libghdl.vhdl__nodes__set_generic_map_aspect_chain + +Get_Port_Map_Aspect_Chain = libghdl.vhdl__nodes__get_port_map_aspect_chain + +Set_Port_Map_Aspect_Chain = libghdl.vhdl__nodes__set_port_map_aspect_chain + +Get_Configuration_Name = libghdl.vhdl__nodes__get_configuration_name + +Set_Configuration_Name = libghdl.vhdl__nodes__set_configuration_name + +Get_Component_Configuration = libghdl.vhdl__nodes__get_component_configuration + +Set_Component_Configuration = libghdl.vhdl__nodes__set_component_configuration + +Get_Configuration_Specification = libghdl.vhdl__nodes__get_configuration_specification + +Set_Configuration_Specification = libghdl.vhdl__nodes__set_configuration_specification + +Get_Default_Binding_Indication = libghdl.vhdl__nodes__get_default_binding_indication + +Set_Default_Binding_Indication = libghdl.vhdl__nodes__set_default_binding_indication + +Get_Default_Configuration_Declaration = libghdl.vhdl__nodes__get_default_configuration_declaration + +Set_Default_Configuration_Declaration = libghdl.vhdl__nodes__set_default_configuration_declaration + +Get_Expression = libghdl.vhdl__nodes__get_expression + +Set_Expression = libghdl.vhdl__nodes__set_expression + +Get_Conditional_Expression = libghdl.vhdl__nodes__get_conditional_expression + +Set_Conditional_Expression = libghdl.vhdl__nodes__set_conditional_expression + +Get_Allocator_Designated_Type = libghdl.vhdl__nodes__get_allocator_designated_type + +Set_Allocator_Designated_Type = libghdl.vhdl__nodes__set_allocator_designated_type + +Get_Selected_Waveform_Chain = libghdl.vhdl__nodes__get_selected_waveform_chain + +Set_Selected_Waveform_Chain = libghdl.vhdl__nodes__set_selected_waveform_chain + +Get_Conditional_Waveform_Chain = libghdl.vhdl__nodes__get_conditional_waveform_chain + +Set_Conditional_Waveform_Chain = libghdl.vhdl__nodes__set_conditional_waveform_chain + +Get_Guard_Expression = libghdl.vhdl__nodes__get_guard_expression + +Set_Guard_Expression = libghdl.vhdl__nodes__set_guard_expression + +Get_Guard_Decl = libghdl.vhdl__nodes__get_guard_decl + +Set_Guard_Decl = libghdl.vhdl__nodes__set_guard_decl + +Get_Guard_Sensitivity_List = libghdl.vhdl__nodes__get_guard_sensitivity_list + +Set_Guard_Sensitivity_List = libghdl.vhdl__nodes__set_guard_sensitivity_list + +Get_Signal_Attribute_Chain = libghdl.vhdl__nodes__get_signal_attribute_chain + +Set_Signal_Attribute_Chain = libghdl.vhdl__nodes__set_signal_attribute_chain + +Get_Block_Block_Configuration = libghdl.vhdl__nodes__get_block_block_configuration + +Set_Block_Block_Configuration = libghdl.vhdl__nodes__set_block_block_configuration + +Get_Package_Header = libghdl.vhdl__nodes__get_package_header + +Set_Package_Header = libghdl.vhdl__nodes__set_package_header + +Get_Block_Header = libghdl.vhdl__nodes__get_block_header + +Set_Block_Header = libghdl.vhdl__nodes__set_block_header + +Get_Uninstantiated_Package_Name = libghdl.vhdl__nodes__get_uninstantiated_package_name + +Set_Uninstantiated_Package_Name = libghdl.vhdl__nodes__set_uninstantiated_package_name + +Get_Uninstantiated_Package_Decl = libghdl.vhdl__nodes__get_uninstantiated_package_decl + +Set_Uninstantiated_Package_Decl = libghdl.vhdl__nodes__set_uninstantiated_package_decl + +Get_Instance_Source_File = libghdl.vhdl__nodes__get_instance_source_file + +Set_Instance_Source_File = libghdl.vhdl__nodes__set_instance_source_file + +Get_Generate_Block_Configuration = libghdl.vhdl__nodes__get_generate_block_configuration + +Set_Generate_Block_Configuration = libghdl.vhdl__nodes__set_generate_block_configuration + +Get_Generate_Statement_Body = libghdl.vhdl__nodes__get_generate_statement_body + +Set_Generate_Statement_Body = libghdl.vhdl__nodes__set_generate_statement_body + +Get_Alternative_Label = libghdl.vhdl__nodes__get_alternative_label + +Set_Alternative_Label = libghdl.vhdl__nodes__set_alternative_label + +Get_Generate_Else_Clause = libghdl.vhdl__nodes__get_generate_else_clause + +Set_Generate_Else_Clause = libghdl.vhdl__nodes__set_generate_else_clause + +Get_Condition = libghdl.vhdl__nodes__get_condition + +Set_Condition = libghdl.vhdl__nodes__set_condition + +Get_Else_Clause = libghdl.vhdl__nodes__get_else_clause + +Set_Else_Clause = libghdl.vhdl__nodes__set_else_clause + +Get_Parameter_Specification = libghdl.vhdl__nodes__get_parameter_specification + +Set_Parameter_Specification = libghdl.vhdl__nodes__set_parameter_specification + +Get_Parent = libghdl.vhdl__nodes__get_parent + +Set_Parent = libghdl.vhdl__nodes__set_parent + +Get_Loop_Label = libghdl.vhdl__nodes__get_loop_label + +Set_Loop_Label = libghdl.vhdl__nodes__set_loop_label + +Get_Component_Name = libghdl.vhdl__nodes__get_component_name + +Set_Component_Name = libghdl.vhdl__nodes__set_component_name + +Get_Instantiation_List = libghdl.vhdl__nodes__get_instantiation_list + +Set_Instantiation_List = libghdl.vhdl__nodes__set_instantiation_list + +Get_Entity_Aspect = libghdl.vhdl__nodes__get_entity_aspect + +Set_Entity_Aspect = libghdl.vhdl__nodes__set_entity_aspect + +Get_Default_Entity_Aspect = libghdl.vhdl__nodes__get_default_entity_aspect + +Set_Default_Entity_Aspect = libghdl.vhdl__nodes__set_default_entity_aspect + +Get_Binding_Indication = libghdl.vhdl__nodes__get_binding_indication + +Set_Binding_Indication = libghdl.vhdl__nodes__set_binding_indication + +Get_Named_Entity = libghdl.vhdl__nodes__get_named_entity + +Set_Named_Entity = libghdl.vhdl__nodes__set_named_entity + +Get_Alias_Declaration = libghdl.vhdl__nodes__get_alias_declaration + +Set_Alias_Declaration = libghdl.vhdl__nodes__set_alias_declaration + +Get_Referenced_Name = libghdl.vhdl__nodes__get_referenced_name + +Set_Referenced_Name = libghdl.vhdl__nodes__set_referenced_name + +Get_Expr_Staticness = libghdl.vhdl__nodes__get_expr_staticness + +Set_Expr_Staticness = libghdl.vhdl__nodes__set_expr_staticness + +Get_Error_Origin = libghdl.vhdl__nodes__get_error_origin + +Set_Error_Origin = libghdl.vhdl__nodes__set_error_origin + +Get_Operand = libghdl.vhdl__nodes__get_operand + +Set_Operand = libghdl.vhdl__nodes__set_operand + +Get_Left = libghdl.vhdl__nodes__get_left + +Set_Left = libghdl.vhdl__nodes__set_left + +Get_Right = libghdl.vhdl__nodes__get_right + +Set_Right = libghdl.vhdl__nodes__set_right + +Get_Physical_Unit = libghdl.vhdl__nodes__get_physical_unit + +Set_Physical_Unit = libghdl.vhdl__nodes__set_physical_unit + +Get_Unit_Name = libghdl.vhdl__nodes__get_unit_name + +Set_Unit_Name = libghdl.vhdl__nodes__set_unit_name + +Get_Name = libghdl.vhdl__nodes__get_name + +Set_Name = libghdl.vhdl__nodes__set_name + +Get_Group_Template_Name = libghdl.vhdl__nodes__get_group_template_name + +Set_Group_Template_Name = libghdl.vhdl__nodes__set_group_template_name + +Get_Name_Staticness = libghdl.vhdl__nodes__get_name_staticness + +Set_Name_Staticness = libghdl.vhdl__nodes__set_name_staticness + +Get_Prefix = libghdl.vhdl__nodes__get_prefix + +Set_Prefix = libghdl.vhdl__nodes__set_prefix + +Get_Signature_Prefix = libghdl.vhdl__nodes__get_signature_prefix + +Set_Signature_Prefix = libghdl.vhdl__nodes__set_signature_prefix + +Get_External_Pathname = libghdl.vhdl__nodes__get_external_pathname + +Set_External_Pathname = libghdl.vhdl__nodes__set_external_pathname + +Get_Pathname_Suffix = libghdl.vhdl__nodes__get_pathname_suffix + +Set_Pathname_Suffix = libghdl.vhdl__nodes__set_pathname_suffix + +Get_Pathname_Expression = libghdl.vhdl__nodes__get_pathname_expression + +Set_Pathname_Expression = libghdl.vhdl__nodes__set_pathname_expression + +Get_In_Formal_Flag = libghdl.vhdl__nodes__get_in_formal_flag + +Set_In_Formal_Flag = libghdl.vhdl__nodes__set_in_formal_flag + +Get_Slice_Subtype = libghdl.vhdl__nodes__get_slice_subtype + +Set_Slice_Subtype = libghdl.vhdl__nodes__set_slice_subtype + +Get_Suffix = libghdl.vhdl__nodes__get_suffix + +Set_Suffix = libghdl.vhdl__nodes__set_suffix + +Get_Index_Subtype = libghdl.vhdl__nodes__get_index_subtype + +Set_Index_Subtype = libghdl.vhdl__nodes__set_index_subtype + +Get_Parameter = libghdl.vhdl__nodes__get_parameter + +Set_Parameter = libghdl.vhdl__nodes__set_parameter + +Get_Attr_Chain = libghdl.vhdl__nodes__get_attr_chain + +Set_Attr_Chain = libghdl.vhdl__nodes__set_attr_chain + +Get_Signal_Attribute_Declaration = libghdl.vhdl__nodes__get_signal_attribute_declaration + +Set_Signal_Attribute_Declaration = libghdl.vhdl__nodes__set_signal_attribute_declaration + +Get_Actual_Type = libghdl.vhdl__nodes__get_actual_type + +Set_Actual_Type = libghdl.vhdl__nodes__set_actual_type + +Get_Actual_Type_Definition = libghdl.vhdl__nodes__get_actual_type_definition + +Set_Actual_Type_Definition = libghdl.vhdl__nodes__set_actual_type_definition + +Get_Association_Chain = libghdl.vhdl__nodes__get_association_chain + +Set_Association_Chain = libghdl.vhdl__nodes__set_association_chain + +Get_Individual_Association_Chain = libghdl.vhdl__nodes__get_individual_association_chain + +Set_Individual_Association_Chain = libghdl.vhdl__nodes__set_individual_association_chain + +Get_Subprogram_Association_Chain = libghdl.vhdl__nodes__get_subprogram_association_chain + +Set_Subprogram_Association_Chain = libghdl.vhdl__nodes__set_subprogram_association_chain + +Get_Aggregate_Info = libghdl.vhdl__nodes__get_aggregate_info + +Set_Aggregate_Info = libghdl.vhdl__nodes__set_aggregate_info + +Get_Sub_Aggregate_Info = libghdl.vhdl__nodes__get_sub_aggregate_info + +Set_Sub_Aggregate_Info = libghdl.vhdl__nodes__set_sub_aggregate_info + +Get_Aggr_Dynamic_Flag = libghdl.vhdl__nodes__get_aggr_dynamic_flag + +Set_Aggr_Dynamic_Flag = libghdl.vhdl__nodes__set_aggr_dynamic_flag + +Get_Aggr_Min_Length = libghdl.vhdl__nodes__get_aggr_min_length + +Set_Aggr_Min_Length = libghdl.vhdl__nodes__set_aggr_min_length + +Get_Aggr_Low_Limit = libghdl.vhdl__nodes__get_aggr_low_limit + +Set_Aggr_Low_Limit = libghdl.vhdl__nodes__set_aggr_low_limit + +Get_Aggr_High_Limit = libghdl.vhdl__nodes__get_aggr_high_limit + +Set_Aggr_High_Limit = libghdl.vhdl__nodes__set_aggr_high_limit + +Get_Aggr_Others_Flag = libghdl.vhdl__nodes__get_aggr_others_flag + +Set_Aggr_Others_Flag = libghdl.vhdl__nodes__set_aggr_others_flag + +Get_Aggr_Named_Flag = libghdl.vhdl__nodes__get_aggr_named_flag + +Set_Aggr_Named_Flag = libghdl.vhdl__nodes__set_aggr_named_flag + +Get_Aggregate_Expand_Flag = libghdl.vhdl__nodes__get_aggregate_expand_flag + +Set_Aggregate_Expand_Flag = libghdl.vhdl__nodes__set_aggregate_expand_flag + +Get_Association_Choices_Chain = libghdl.vhdl__nodes__get_association_choices_chain + +Set_Association_Choices_Chain = libghdl.vhdl__nodes__set_association_choices_chain + +Get_Case_Statement_Alternative_Chain = libghdl.vhdl__nodes__get_case_statement_alternative_chain + +Set_Case_Statement_Alternative_Chain = libghdl.vhdl__nodes__set_case_statement_alternative_chain + +Get_Choice_Staticness = libghdl.vhdl__nodes__get_choice_staticness + +Set_Choice_Staticness = libghdl.vhdl__nodes__set_choice_staticness + +Get_Procedure_Call = libghdl.vhdl__nodes__get_procedure_call + +Set_Procedure_Call = libghdl.vhdl__nodes__set_procedure_call + +Get_Implementation = libghdl.vhdl__nodes__get_implementation + +Set_Implementation = libghdl.vhdl__nodes__set_implementation + +Get_Parameter_Association_Chain = libghdl.vhdl__nodes__get_parameter_association_chain + +Set_Parameter_Association_Chain = libghdl.vhdl__nodes__set_parameter_association_chain + +Get_Method_Object = libghdl.vhdl__nodes__get_method_object + +Set_Method_Object = libghdl.vhdl__nodes__set_method_object + +Get_Subtype_Type_Mark = libghdl.vhdl__nodes__get_subtype_type_mark + +Set_Subtype_Type_Mark = libghdl.vhdl__nodes__set_subtype_type_mark + +Get_Type_Conversion_Subtype = libghdl.vhdl__nodes__get_type_conversion_subtype + +Set_Type_Conversion_Subtype = libghdl.vhdl__nodes__set_type_conversion_subtype + +Get_Type_Mark = libghdl.vhdl__nodes__get_type_mark + +Set_Type_Mark = libghdl.vhdl__nodes__set_type_mark + +Get_File_Type_Mark = libghdl.vhdl__nodes__get_file_type_mark + +Set_File_Type_Mark = libghdl.vhdl__nodes__set_file_type_mark + +Get_Return_Type_Mark = libghdl.vhdl__nodes__get_return_type_mark + +Set_Return_Type_Mark = libghdl.vhdl__nodes__set_return_type_mark + +Get_Has_Disconnect_Flag = libghdl.vhdl__nodes__get_has_disconnect_flag + +Set_Has_Disconnect_Flag = libghdl.vhdl__nodes__set_has_disconnect_flag + +Get_Has_Active_Flag = libghdl.vhdl__nodes__get_has_active_flag + +Set_Has_Active_Flag = libghdl.vhdl__nodes__set_has_active_flag + +Get_Is_Within_Flag = libghdl.vhdl__nodes__get_is_within_flag + +Set_Is_Within_Flag = libghdl.vhdl__nodes__set_is_within_flag + +Get_Type_Marks_List = libghdl.vhdl__nodes__get_type_marks_list + +Set_Type_Marks_List = libghdl.vhdl__nodes__set_type_marks_list + +Get_Implicit_Alias_Flag = libghdl.vhdl__nodes__get_implicit_alias_flag + +Set_Implicit_Alias_Flag = libghdl.vhdl__nodes__set_implicit_alias_flag + +Get_Alias_Signature = libghdl.vhdl__nodes__get_alias_signature + +Set_Alias_Signature = libghdl.vhdl__nodes__set_alias_signature + +Get_Attribute_Signature = libghdl.vhdl__nodes__get_attribute_signature + +Set_Attribute_Signature = libghdl.vhdl__nodes__set_attribute_signature + +Get_Overload_List = libghdl.vhdl__nodes__get_overload_list + +Set_Overload_List = libghdl.vhdl__nodes__set_overload_list + +Get_Simple_Name_Identifier = libghdl.vhdl__nodes__get_simple_name_identifier + +Set_Simple_Name_Identifier = libghdl.vhdl__nodes__set_simple_name_identifier + +Get_Simple_Name_Subtype = libghdl.vhdl__nodes__get_simple_name_subtype + +Set_Simple_Name_Subtype = libghdl.vhdl__nodes__set_simple_name_subtype + +Get_Protected_Type_Body = libghdl.vhdl__nodes__get_protected_type_body + +Set_Protected_Type_Body = libghdl.vhdl__nodes__set_protected_type_body + +Get_Protected_Type_Declaration = libghdl.vhdl__nodes__get_protected_type_declaration + +Set_Protected_Type_Declaration = libghdl.vhdl__nodes__set_protected_type_declaration + +Get_Use_Flag = libghdl.vhdl__nodes__get_use_flag + +Set_Use_Flag = libghdl.vhdl__nodes__set_use_flag + +Get_End_Has_Reserved_Id = libghdl.vhdl__nodes__get_end_has_reserved_id + +Set_End_Has_Reserved_Id = libghdl.vhdl__nodes__set_end_has_reserved_id + +Get_End_Has_Identifier = libghdl.vhdl__nodes__get_end_has_identifier + +Set_End_Has_Identifier = libghdl.vhdl__nodes__set_end_has_identifier + +Get_End_Has_Postponed = libghdl.vhdl__nodes__get_end_has_postponed + +Set_End_Has_Postponed = libghdl.vhdl__nodes__set_end_has_postponed + +Get_Has_Label = libghdl.vhdl__nodes__get_has_label + +Set_Has_Label = libghdl.vhdl__nodes__set_has_label + +Get_Has_Begin = libghdl.vhdl__nodes__get_has_begin + +Set_Has_Begin = libghdl.vhdl__nodes__set_has_begin + +Get_Has_End = libghdl.vhdl__nodes__get_has_end + +Set_Has_End = libghdl.vhdl__nodes__set_has_end + +Get_Has_Is = libghdl.vhdl__nodes__get_has_is + +Set_Has_Is = libghdl.vhdl__nodes__set_has_is + +Get_Has_Pure = libghdl.vhdl__nodes__get_has_pure + +Set_Has_Pure = libghdl.vhdl__nodes__set_has_pure + +Get_Has_Body = libghdl.vhdl__nodes__get_has_body + +Set_Has_Body = libghdl.vhdl__nodes__set_has_body + +Get_Has_Parameter = libghdl.vhdl__nodes__get_has_parameter + +Set_Has_Parameter = libghdl.vhdl__nodes__set_has_parameter + +Get_Has_Component = libghdl.vhdl__nodes__get_has_component + +Set_Has_Component = libghdl.vhdl__nodes__set_has_component + +Get_Has_Identifier_List = libghdl.vhdl__nodes__get_has_identifier_list + +Set_Has_Identifier_List = libghdl.vhdl__nodes__set_has_identifier_list + +Get_Has_Mode = libghdl.vhdl__nodes__get_has_mode + +Set_Has_Mode = libghdl.vhdl__nodes__set_has_mode + +Get_Has_Class = libghdl.vhdl__nodes__get_has_class + +Set_Has_Class = libghdl.vhdl__nodes__set_has_class + +Get_Suspend_Flag = libghdl.vhdl__nodes__get_suspend_flag + +Set_Suspend_Flag = libghdl.vhdl__nodes__set_suspend_flag + +Get_Is_Ref = libghdl.vhdl__nodes__get_is_ref + +Set_Is_Ref = libghdl.vhdl__nodes__set_is_ref + +Get_Is_Forward_Ref = libghdl.vhdl__nodes__get_is_forward_ref + +Set_Is_Forward_Ref = libghdl.vhdl__nodes__set_is_forward_ref + +Get_Psl_Property = libghdl.vhdl__nodes__get_psl_property + +Set_Psl_Property = libghdl.vhdl__nodes__set_psl_property + +Get_Psl_Sequence = libghdl.vhdl__nodes__get_psl_sequence + +Set_Psl_Sequence = libghdl.vhdl__nodes__set_psl_sequence + +Get_Psl_Declaration = libghdl.vhdl__nodes__get_psl_declaration + +Set_Psl_Declaration = libghdl.vhdl__nodes__set_psl_declaration + +Get_Psl_Expression = libghdl.vhdl__nodes__get_psl_expression + +Set_Psl_Expression = libghdl.vhdl__nodes__set_psl_expression + +Get_Psl_Boolean = libghdl.vhdl__nodes__get_psl_boolean + +Set_Psl_Boolean = libghdl.vhdl__nodes__set_psl_boolean + +Get_PSL_Clock = libghdl.vhdl__nodes__get_psl_clock + +Set_PSL_Clock = libghdl.vhdl__nodes__set_psl_clock + +Get_PSL_NFA = libghdl.vhdl__nodes__get_psl_nfa + +Set_PSL_NFA = libghdl.vhdl__nodes__set_psl_nfa + +Get_PSL_Nbr_States = libghdl.vhdl__nodes__get_psl_nbr_states + +Set_PSL_Nbr_States = libghdl.vhdl__nodes__set_psl_nbr_states + +Get_PSL_Clock_Sensitivity = libghdl.vhdl__nodes__get_psl_clock_sensitivity + +Set_PSL_Clock_Sensitivity = libghdl.vhdl__nodes__set_psl_clock_sensitivity + +Get_PSL_EOS_Flag = libghdl.vhdl__nodes__get_psl_eos_flag + +Set_PSL_EOS_Flag = libghdl.vhdl__nodes__set_psl_eos_flag diff --git a/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py b/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py new file mode 100644 index 000000000..58e795abd --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/nodes_meta.py @@ -0,0 +1,1435 @@ +from libghdl import libghdl + + + +# From nodes_meta +get_fields_first = libghdl.vhdl__nodes_meta__get_fields_first + +get_fields_last = libghdl.vhdl__nodes_meta__get_fields_last + +get_field_by_index = libghdl.vhdl__nodes_meta__get_field_by_index + +get_field_type = libghdl.vhdl__nodes_meta__get_field_type + +get_field_attribute = libghdl.vhdl__nodes_meta__get_field_attribute + + +class types: + Boolean = 0 + Date_State_Type = 1 + Date_Type = 2 + File_Checksum_Id = 3 + Fp64 = 4 + Iir = 5 + Iir_All_Sensitized = 6 + Iir_Constraint = 7 + Iir_Delay_Mechanism = 8 + Iir_Direction = 9 + Iir_Flist = 10 + Iir_Index32 = 11 + Iir_Int32 = 12 + Iir_List = 13 + Iir_Mode = 14 + Iir_Predefined_Functions = 15 + Iir_Pure_State = 16 + Iir_Signal_Kind = 17 + Iir_Staticness = 18 + Int32 = 19 + Int64 = 20 + Name_Id = 21 + Number_Base_Type = 22 + PSL_NFA = 23 + PSL_Node = 24 + Source_File_Entry = 25 + Source_Ptr = 26 + String8_Id = 27 + Time_Stamp_Id = 28 + Token_Type = 29 + Tri_State_Type = 30 + + +class Attr: + ANone = 0 + Chain = 1 + Chain_Next = 2 + Forward_Ref = 3 + Maybe_Forward_Ref = 4 + Maybe_Ref = 5 + Of_Maybe_Ref = 6 + Of_Ref = 7 + Ref = 8 + + +class fields: + First_Design_Unit = 0 + Last_Design_Unit = 1 + Library_Declaration = 2 + File_Checksum = 3 + Analysis_Time_Stamp = 4 + Design_File_Source = 5 + Library = 6 + File_Dependence_List = 7 + Design_File_Filename = 8 + Design_File_Directory = 9 + Design_File = 10 + Design_File_Chain = 11 + Library_Directory = 12 + Date = 13 + Context_Items = 14 + Dependence_List = 15 + Analysis_Checks_List = 16 + Date_State = 17 + Guarded_Target_State = 18 + Library_Unit = 19 + Hash_Chain = 20 + Design_Unit_Source_Pos = 21 + Design_Unit_Source_Line = 22 + Design_Unit_Source_Col = 23 + Value = 24 + Enum_Pos = 25 + Physical_Literal = 26 + Fp_Value = 27 + Simple_Aggregate_List = 28 + String8_Id = 29 + String_Length = 30 + Bit_String_Base = 31 + Has_Signed = 32 + Has_Sign = 33 + Has_Length = 34 + Literal_Origin = 35 + Range_Origin = 36 + Literal_Subtype = 37 + Allocator_Subtype = 38 + Entity_Class = 39 + Entity_Name_List = 40 + Attribute_Designator = 41 + Attribute_Specification_Chain = 42 + Attribute_Specification = 43 + Signal_List = 44 + Designated_Entity = 45 + Formal = 46 + Actual = 47 + Actual_Conversion = 48 + Formal_Conversion = 49 + Whole_Association_Flag = 50 + Collapse_Signal_Flag = 51 + Artificial_Flag = 52 + Open_Flag = 53 + After_Drivers_Flag = 54 + We_Value = 55 + Time = 56 + Choice_Order = 57 + Associated_Expr = 58 + Associated_Block = 59 + Associated_Chain = 60 + Choice_Name = 61 + Choice_Expression = 62 + Choice_Range = 63 + Same_Alternative_Flag = 64 + Element_Type_Flag = 65 + Architecture = 66 + Block_Specification = 67 + Prev_Block_Configuration = 68 + Configuration_Item_Chain = 69 + Attribute_Value_Chain = 70 + Spec_Chain = 71 + Value_Chain = 72 + Attribute_Value_Spec_Chain = 73 + Entity_Name = 74 + Package = 75 + Package_Body = 76 + Instance_Package_Body = 77 + Need_Body = 78 + Macro_Expanded_Flag = 79 + Need_Instance_Bodies = 80 + Block_Configuration = 81 + Concurrent_Statement_Chain = 82 + Chain = 83 + Port_Chain = 84 + Generic_Chain = 85 + Type = 86 + Subtype_Indication = 87 + Discrete_Range = 88 + Type_Definition = 89 + Subtype_Definition = 90 + Incomplete_Type_Declaration = 91 + Interface_Type_Subprograms = 92 + Nature = 93 + Mode = 94 + Guarded_Signal_Flag = 95 + Signal_Kind = 96 + Base_Name = 97 + Interface_Declaration_Chain = 98 + Subprogram_Specification = 99 + Sequential_Statement_Chain = 100 + Subprogram_Body = 101 + Overload_Number = 102 + Subprogram_Depth = 103 + Subprogram_Hash = 104 + Impure_Depth = 105 + Return_Type = 106 + Implicit_Definition = 107 + Default_Value = 108 + Deferred_Declaration = 109 + Deferred_Declaration_Flag = 110 + Shared_Flag = 111 + Design_Unit = 112 + Block_Statement = 113 + Signal_Driver = 114 + Declaration_Chain = 115 + File_Logical_Name = 116 + File_Open_Kind = 117 + Element_Position = 118 + Use_Clause_Chain = 119 + Context_Reference_Chain = 120 + Selected_Name = 121 + Type_Declarator = 122 + Complete_Type_Definition = 123 + Incomplete_Type_Ref_Chain = 124 + Associated_Type = 125 + Enumeration_Literal_List = 126 + Entity_Class_Entry_Chain = 127 + Group_Constituent_List = 128 + Unit_Chain = 129 + Primary_Unit = 130 + Identifier = 131 + Label = 132 + Visible_Flag = 133 + Range_Constraint = 134 + Direction = 135 + Left_Limit = 136 + Right_Limit = 137 + Left_Limit_Expr = 138 + Right_Limit_Expr = 139 + Base_Type = 140 + Resolution_Indication = 141 + Record_Element_Resolution_Chain = 142 + Tolerance = 143 + Plus_Terminal = 144 + Minus_Terminal = 145 + Simultaneous_Left = 146 + Simultaneous_Right = 147 + Text_File_Flag = 148 + Only_Characters_Flag = 149 + Is_Character_Type = 150 + Type_Staticness = 151 + Constraint_State = 152 + Index_Subtype_List = 153 + Index_Subtype_Definition_List = 154 + Element_Subtype_Indication = 155 + Element_Subtype = 156 + Index_Constraint_List = 157 + Array_Element_Constraint = 158 + Elements_Declaration_List = 159 + Owned_Elements_Chain = 160 + Designated_Type = 161 + Designated_Subtype_Indication = 162 + Index_List = 163 + Reference = 164 + Nature_Declarator = 165 + Across_Type = 166 + Through_Type = 167 + Target = 168 + Waveform_Chain = 169 + Guard = 170 + Delay_Mechanism = 171 + Reject_Time_Expression = 172 + Sensitivity_List = 173 + Process_Origin = 174 + Package_Origin = 175 + Condition_Clause = 176 + Timeout_Clause = 177 + Postponed_Flag = 178 + Callees_List = 179 + Passive_Flag = 180 + Resolution_Function_Flag = 181 + Wait_State = 182 + All_Sensitized_State = 183 + Seen_Flag = 184 + Pure_Flag = 185 + Foreign_Flag = 186 + Resolved_Flag = 187 + Signal_Type_Flag = 188 + Has_Signal_Flag = 189 + Purity_State = 190 + Elab_Flag = 191 + Configuration_Mark_Flag = 192 + Configuration_Done_Flag = 193 + Index_Constraint_Flag = 194 + Hide_Implicit_Flag = 195 + Assertion_Condition = 196 + Report_Expression = 197 + Severity_Expression = 198 + Instantiated_Unit = 199 + Generic_Map_Aspect_Chain = 200 + Port_Map_Aspect_Chain = 201 + Configuration_Name = 202 + Component_Configuration = 203 + Configuration_Specification = 204 + Default_Binding_Indication = 205 + Default_Configuration_Declaration = 206 + Expression = 207 + Conditional_Expression = 208 + Allocator_Designated_Type = 209 + Selected_Waveform_Chain = 210 + Conditional_Waveform_Chain = 211 + Guard_Expression = 212 + Guard_Decl = 213 + Guard_Sensitivity_List = 214 + Signal_Attribute_Chain = 215 + Block_Block_Configuration = 216 + Package_Header = 217 + Block_Header = 218 + Uninstantiated_Package_Name = 219 + Uninstantiated_Package_Decl = 220 + Instance_Source_File = 221 + Generate_Block_Configuration = 222 + Generate_Statement_Body = 223 + Alternative_Label = 224 + Generate_Else_Clause = 225 + Condition = 226 + Else_Clause = 227 + Parameter_Specification = 228 + Parent = 229 + Loop_Label = 230 + Component_Name = 231 + Instantiation_List = 232 + Entity_Aspect = 233 + Default_Entity_Aspect = 234 + Binding_Indication = 235 + Named_Entity = 236 + Alias_Declaration = 237 + Referenced_Name = 238 + Expr_Staticness = 239 + Error_Origin = 240 + Operand = 241 + Left = 242 + Right = 243 + Physical_Unit = 244 + Unit_Name = 245 + Name = 246 + Group_Template_Name = 247 + Name_Staticness = 248 + Prefix = 249 + Signature_Prefix = 250 + External_Pathname = 251 + Pathname_Suffix = 252 + Pathname_Expression = 253 + In_Formal_Flag = 254 + Slice_Subtype = 255 + Suffix = 256 + Index_Subtype = 257 + Parameter = 258 + Attr_Chain = 259 + Signal_Attribute_Declaration = 260 + Actual_Type = 261 + Actual_Type_Definition = 262 + Association_Chain = 263 + Individual_Association_Chain = 264 + Subprogram_Association_Chain = 265 + Aggregate_Info = 266 + Sub_Aggregate_Info = 267 + Aggr_Dynamic_Flag = 268 + Aggr_Min_Length = 269 + Aggr_Low_Limit = 270 + Aggr_High_Limit = 271 + Aggr_Others_Flag = 272 + Aggr_Named_Flag = 273 + Aggregate_Expand_Flag = 274 + Association_Choices_Chain = 275 + Case_Statement_Alternative_Chain = 276 + Choice_Staticness = 277 + Procedure_Call = 278 + Implementation = 279 + Parameter_Association_Chain = 280 + Method_Object = 281 + Subtype_Type_Mark = 282 + Type_Conversion_Subtype = 283 + Type_Mark = 284 + File_Type_Mark = 285 + Return_Type_Mark = 286 + Has_Disconnect_Flag = 287 + Has_Active_Flag = 288 + Is_Within_Flag = 289 + Type_Marks_List = 290 + Implicit_Alias_Flag = 291 + Alias_Signature = 292 + Attribute_Signature = 293 + Overload_List = 294 + Simple_Name_Identifier = 295 + Simple_Name_Subtype = 296 + Protected_Type_Body = 297 + Protected_Type_Declaration = 298 + Use_Flag = 299 + End_Has_Reserved_Id = 300 + End_Has_Identifier = 301 + End_Has_Postponed = 302 + Has_Label = 303 + Has_Begin = 304 + Has_End = 305 + Has_Is = 306 + Has_Pure = 307 + Has_Body = 308 + Has_Parameter = 309 + Has_Component = 310 + Has_Identifier_List = 311 + Has_Mode = 312 + Has_Class = 313 + Suspend_Flag = 314 + Is_Ref = 315 + Is_Forward_Ref = 316 + Psl_Property = 317 + Psl_Sequence = 318 + Psl_Declaration = 319 + Psl_Expression = 320 + Psl_Boolean = 321 + PSL_Clock = 322 + PSL_NFA = 323 + PSL_Nbr_States = 324 + PSL_Clock_Sensitivity = 325 + PSL_EOS_Flag = 326 + + +Get_Boolean = libghdl.vhdl__nodes_meta__get_boolean + +Get_Date_State_Type = libghdl.vhdl__nodes_meta__get_date_state_type + +Get_Date_Type = libghdl.vhdl__nodes_meta__get_date_type + +Get_File_Checksum_Id = libghdl.vhdl__nodes_meta__get_file_checksum_id + +Get_Fp64 = libghdl.vhdl__nodes_meta__get_fp64 + +Get_Iir = libghdl.vhdl__nodes_meta__get_iir + +Get_Iir_All_Sensitized = libghdl.vhdl__nodes_meta__get_iir_all_sensitized + +Get_Iir_Constraint = libghdl.vhdl__nodes_meta__get_iir_constraint + +Get_Iir_Delay_Mechanism = libghdl.vhdl__nodes_meta__get_iir_delay_mechanism + +Get_Iir_Direction = libghdl.vhdl__nodes_meta__get_iir_direction + +Get_Iir_Flist = libghdl.vhdl__nodes_meta__get_iir_flist + +Get_Iir_Index32 = libghdl.vhdl__nodes_meta__get_iir_index32 + +Get_Iir_Int32 = libghdl.vhdl__nodes_meta__get_iir_int32 + +Get_Iir_List = libghdl.vhdl__nodes_meta__get_iir_list + +Get_Iir_Mode = libghdl.vhdl__nodes_meta__get_iir_mode + +Get_Iir_Predefined_Functions = libghdl.vhdl__nodes_meta__get_iir_predefined_functions + +Get_Iir_Pure_State = libghdl.vhdl__nodes_meta__get_iir_pure_state + +Get_Iir_Signal_Kind = libghdl.vhdl__nodes_meta__get_iir_signal_kind + +Get_Iir_Staticness = libghdl.vhdl__nodes_meta__get_iir_staticness + +Get_Int32 = libghdl.vhdl__nodes_meta__get_int32 + +Get_Int64 = libghdl.vhdl__nodes_meta__get_int64 + +Get_Name_Id = libghdl.vhdl__nodes_meta__get_name_id + +Get_Number_Base_Type = libghdl.vhdl__nodes_meta__get_number_base_type + +Get_PSL_NFA = libghdl.vhdl__nodes_meta__get_psl_nfa + +Get_PSL_Node = libghdl.vhdl__nodes_meta__get_psl_node + +Get_Source_File_Entry = libghdl.vhdl__nodes_meta__get_source_file_entry + +Get_Source_Ptr = libghdl.vhdl__nodes_meta__get_source_ptr + +Get_String8_Id = libghdl.vhdl__nodes_meta__get_string8_id + +Get_Time_Stamp_Id = libghdl.vhdl__nodes_meta__get_time_stamp_id + +Get_Token_Type = libghdl.vhdl__nodes_meta__get_token_type + +Get_Tri_State_Type = libghdl.vhdl__nodes_meta__get_tri_state_type + + +Has_First_Design_Unit =\ + libghdl.vhdl__nodes_meta__has_first_design_unit + +Has_Last_Design_Unit =\ + libghdl.vhdl__nodes_meta__has_last_design_unit + +Has_Library_Declaration =\ + libghdl.vhdl__nodes_meta__has_library_declaration + +Has_File_Checksum =\ + libghdl.vhdl__nodes_meta__has_file_checksum + +Has_Analysis_Time_Stamp =\ + libghdl.vhdl__nodes_meta__has_analysis_time_stamp + +Has_Design_File_Source =\ + libghdl.vhdl__nodes_meta__has_design_file_source + +Has_Library =\ + libghdl.vhdl__nodes_meta__has_library + +Has_File_Dependence_List =\ + libghdl.vhdl__nodes_meta__has_file_dependence_list + +Has_Design_File_Filename =\ + libghdl.vhdl__nodes_meta__has_design_file_filename + +Has_Design_File_Directory =\ + libghdl.vhdl__nodes_meta__has_design_file_directory + +Has_Design_File =\ + libghdl.vhdl__nodes_meta__has_design_file + +Has_Design_File_Chain =\ + libghdl.vhdl__nodes_meta__has_design_file_chain + +Has_Library_Directory =\ + libghdl.vhdl__nodes_meta__has_library_directory + +Has_Date =\ + libghdl.vhdl__nodes_meta__has_date + +Has_Context_Items =\ + libghdl.vhdl__nodes_meta__has_context_items + +Has_Dependence_List =\ + libghdl.vhdl__nodes_meta__has_dependence_list + +Has_Analysis_Checks_List =\ + libghdl.vhdl__nodes_meta__has_analysis_checks_list + +Has_Date_State =\ + libghdl.vhdl__nodes_meta__has_date_state + +Has_Guarded_Target_State =\ + libghdl.vhdl__nodes_meta__has_guarded_target_state + +Has_Library_Unit =\ + libghdl.vhdl__nodes_meta__has_library_unit + +Has_Hash_Chain =\ + libghdl.vhdl__nodes_meta__has_hash_chain + +Has_Design_Unit_Source_Pos =\ + libghdl.vhdl__nodes_meta__has_design_unit_source_pos + +Has_Design_Unit_Source_Line =\ + libghdl.vhdl__nodes_meta__has_design_unit_source_line + +Has_Design_Unit_Source_Col =\ + libghdl.vhdl__nodes_meta__has_design_unit_source_col + +Has_Value =\ + libghdl.vhdl__nodes_meta__has_value + +Has_Enum_Pos =\ + libghdl.vhdl__nodes_meta__has_enum_pos + +Has_Physical_Literal =\ + libghdl.vhdl__nodes_meta__has_physical_literal + +Has_Fp_Value =\ + libghdl.vhdl__nodes_meta__has_fp_value + +Has_Simple_Aggregate_List =\ + libghdl.vhdl__nodes_meta__has_simple_aggregate_list + +Has_String8_Id =\ + libghdl.vhdl__nodes_meta__has_string8_id + +Has_String_Length =\ + libghdl.vhdl__nodes_meta__has_string_length + +Has_Bit_String_Base =\ + libghdl.vhdl__nodes_meta__has_bit_string_base + +Has_Has_Signed =\ + libghdl.vhdl__nodes_meta__has_has_signed + +Has_Has_Sign =\ + libghdl.vhdl__nodes_meta__has_has_sign + +Has_Has_Length =\ + libghdl.vhdl__nodes_meta__has_has_length + +Has_Literal_Origin =\ + libghdl.vhdl__nodes_meta__has_literal_origin + +Has_Range_Origin =\ + libghdl.vhdl__nodes_meta__has_range_origin + +Has_Literal_Subtype =\ + libghdl.vhdl__nodes_meta__has_literal_subtype + +Has_Allocator_Subtype =\ + libghdl.vhdl__nodes_meta__has_allocator_subtype + +Has_Entity_Class =\ + libghdl.vhdl__nodes_meta__has_entity_class + +Has_Entity_Name_List =\ + libghdl.vhdl__nodes_meta__has_entity_name_list + +Has_Attribute_Designator =\ + libghdl.vhdl__nodes_meta__has_attribute_designator + +Has_Attribute_Specification_Chain =\ + libghdl.vhdl__nodes_meta__has_attribute_specification_chain + +Has_Attribute_Specification =\ + libghdl.vhdl__nodes_meta__has_attribute_specification + +Has_Signal_List =\ + libghdl.vhdl__nodes_meta__has_signal_list + +Has_Designated_Entity =\ + libghdl.vhdl__nodes_meta__has_designated_entity + +Has_Formal =\ + libghdl.vhdl__nodes_meta__has_formal + +Has_Actual =\ + libghdl.vhdl__nodes_meta__has_actual + +Has_Actual_Conversion =\ + libghdl.vhdl__nodes_meta__has_actual_conversion + +Has_Formal_Conversion =\ + libghdl.vhdl__nodes_meta__has_formal_conversion + +Has_Whole_Association_Flag =\ + libghdl.vhdl__nodes_meta__has_whole_association_flag + +Has_Collapse_Signal_Flag =\ + libghdl.vhdl__nodes_meta__has_collapse_signal_flag + +Has_Artificial_Flag =\ + libghdl.vhdl__nodes_meta__has_artificial_flag + +Has_Open_Flag =\ + libghdl.vhdl__nodes_meta__has_open_flag + +Has_After_Drivers_Flag =\ + libghdl.vhdl__nodes_meta__has_after_drivers_flag + +Has_We_Value =\ + libghdl.vhdl__nodes_meta__has_we_value + +Has_Time =\ + libghdl.vhdl__nodes_meta__has_time + +Has_Choice_Order =\ + libghdl.vhdl__nodes_meta__has_choice_order + +Has_Associated_Expr =\ + libghdl.vhdl__nodes_meta__has_associated_expr + +Has_Associated_Block =\ + libghdl.vhdl__nodes_meta__has_associated_block + +Has_Associated_Chain =\ + libghdl.vhdl__nodes_meta__has_associated_chain + +Has_Choice_Name =\ + libghdl.vhdl__nodes_meta__has_choice_name + +Has_Choice_Expression =\ + libghdl.vhdl__nodes_meta__has_choice_expression + +Has_Choice_Range =\ + libghdl.vhdl__nodes_meta__has_choice_range + +Has_Same_Alternative_Flag =\ + libghdl.vhdl__nodes_meta__has_same_alternative_flag + +Has_Element_Type_Flag =\ + libghdl.vhdl__nodes_meta__has_element_type_flag + +Has_Architecture =\ + libghdl.vhdl__nodes_meta__has_architecture + +Has_Block_Specification =\ + libghdl.vhdl__nodes_meta__has_block_specification + +Has_Prev_Block_Configuration =\ + libghdl.vhdl__nodes_meta__has_prev_block_configuration + +Has_Configuration_Item_Chain =\ + libghdl.vhdl__nodes_meta__has_configuration_item_chain + +Has_Attribute_Value_Chain =\ + libghdl.vhdl__nodes_meta__has_attribute_value_chain + +Has_Spec_Chain =\ + libghdl.vhdl__nodes_meta__has_spec_chain + +Has_Value_Chain =\ + libghdl.vhdl__nodes_meta__has_value_chain + +Has_Attribute_Value_Spec_Chain =\ + libghdl.vhdl__nodes_meta__has_attribute_value_spec_chain + +Has_Entity_Name =\ + libghdl.vhdl__nodes_meta__has_entity_name + +Has_Package =\ + libghdl.vhdl__nodes_meta__has_package + +Has_Package_Body =\ + libghdl.vhdl__nodes_meta__has_package_body + +Has_Instance_Package_Body =\ + libghdl.vhdl__nodes_meta__has_instance_package_body + +Has_Need_Body =\ + libghdl.vhdl__nodes_meta__has_need_body + +Has_Macro_Expanded_Flag =\ + libghdl.vhdl__nodes_meta__has_macro_expanded_flag + +Has_Need_Instance_Bodies =\ + libghdl.vhdl__nodes_meta__has_need_instance_bodies + +Has_Block_Configuration =\ + libghdl.vhdl__nodes_meta__has_block_configuration + +Has_Concurrent_Statement_Chain =\ + libghdl.vhdl__nodes_meta__has_concurrent_statement_chain + +Has_Chain =\ + libghdl.vhdl__nodes_meta__has_chain + +Has_Port_Chain =\ + libghdl.vhdl__nodes_meta__has_port_chain + +Has_Generic_Chain =\ + libghdl.vhdl__nodes_meta__has_generic_chain + +Has_Type =\ + libghdl.vhdl__nodes_meta__has_type + +Has_Subtype_Indication =\ + libghdl.vhdl__nodes_meta__has_subtype_indication + +Has_Discrete_Range =\ + libghdl.vhdl__nodes_meta__has_discrete_range + +Has_Type_Definition =\ + libghdl.vhdl__nodes_meta__has_type_definition + +Has_Subtype_Definition =\ + libghdl.vhdl__nodes_meta__has_subtype_definition + +Has_Incomplete_Type_Declaration =\ + libghdl.vhdl__nodes_meta__has_incomplete_type_declaration + +Has_Interface_Type_Subprograms =\ + libghdl.vhdl__nodes_meta__has_interface_type_subprograms + +Has_Nature =\ + libghdl.vhdl__nodes_meta__has_nature + +Has_Mode =\ + libghdl.vhdl__nodes_meta__has_mode + +Has_Guarded_Signal_Flag =\ + libghdl.vhdl__nodes_meta__has_guarded_signal_flag + +Has_Signal_Kind =\ + libghdl.vhdl__nodes_meta__has_signal_kind + +Has_Base_Name =\ + libghdl.vhdl__nodes_meta__has_base_name + +Has_Interface_Declaration_Chain =\ + libghdl.vhdl__nodes_meta__has_interface_declaration_chain + +Has_Subprogram_Specification =\ + libghdl.vhdl__nodes_meta__has_subprogram_specification + +Has_Sequential_Statement_Chain =\ + libghdl.vhdl__nodes_meta__has_sequential_statement_chain + +Has_Subprogram_Body =\ + libghdl.vhdl__nodes_meta__has_subprogram_body + +Has_Overload_Number =\ + libghdl.vhdl__nodes_meta__has_overload_number + +Has_Subprogram_Depth =\ + libghdl.vhdl__nodes_meta__has_subprogram_depth + +Has_Subprogram_Hash =\ + libghdl.vhdl__nodes_meta__has_subprogram_hash + +Has_Impure_Depth =\ + libghdl.vhdl__nodes_meta__has_impure_depth + +Has_Return_Type =\ + libghdl.vhdl__nodes_meta__has_return_type + +Has_Implicit_Definition =\ + libghdl.vhdl__nodes_meta__has_implicit_definition + +Has_Default_Value =\ + libghdl.vhdl__nodes_meta__has_default_value + +Has_Deferred_Declaration =\ + libghdl.vhdl__nodes_meta__has_deferred_declaration + +Has_Deferred_Declaration_Flag =\ + libghdl.vhdl__nodes_meta__has_deferred_declaration_flag + +Has_Shared_Flag =\ + libghdl.vhdl__nodes_meta__has_shared_flag + +Has_Design_Unit =\ + libghdl.vhdl__nodes_meta__has_design_unit + +Has_Block_Statement =\ + libghdl.vhdl__nodes_meta__has_block_statement + +Has_Signal_Driver =\ + libghdl.vhdl__nodes_meta__has_signal_driver + +Has_Declaration_Chain =\ + libghdl.vhdl__nodes_meta__has_declaration_chain + +Has_File_Logical_Name =\ + libghdl.vhdl__nodes_meta__has_file_logical_name + +Has_File_Open_Kind =\ + libghdl.vhdl__nodes_meta__has_file_open_kind + +Has_Element_Position =\ + libghdl.vhdl__nodes_meta__has_element_position + +Has_Use_Clause_Chain =\ + libghdl.vhdl__nodes_meta__has_use_clause_chain + +Has_Context_Reference_Chain =\ + libghdl.vhdl__nodes_meta__has_context_reference_chain + +Has_Selected_Name =\ + libghdl.vhdl__nodes_meta__has_selected_name + +Has_Type_Declarator =\ + libghdl.vhdl__nodes_meta__has_type_declarator + +Has_Complete_Type_Definition =\ + libghdl.vhdl__nodes_meta__has_complete_type_definition + +Has_Incomplete_Type_Ref_Chain =\ + libghdl.vhdl__nodes_meta__has_incomplete_type_ref_chain + +Has_Associated_Type =\ + libghdl.vhdl__nodes_meta__has_associated_type + +Has_Enumeration_Literal_List =\ + libghdl.vhdl__nodes_meta__has_enumeration_literal_list + +Has_Entity_Class_Entry_Chain =\ + libghdl.vhdl__nodes_meta__has_entity_class_entry_chain + +Has_Group_Constituent_List =\ + libghdl.vhdl__nodes_meta__has_group_constituent_list + +Has_Unit_Chain =\ + libghdl.vhdl__nodes_meta__has_unit_chain + +Has_Primary_Unit =\ + libghdl.vhdl__nodes_meta__has_primary_unit + +Has_Identifier =\ + libghdl.vhdl__nodes_meta__has_identifier + +Has_Label =\ + libghdl.vhdl__nodes_meta__has_label + +Has_Visible_Flag =\ + libghdl.vhdl__nodes_meta__has_visible_flag + +Has_Range_Constraint =\ + libghdl.vhdl__nodes_meta__has_range_constraint + +Has_Direction =\ + libghdl.vhdl__nodes_meta__has_direction + +Has_Left_Limit =\ + libghdl.vhdl__nodes_meta__has_left_limit + +Has_Right_Limit =\ + libghdl.vhdl__nodes_meta__has_right_limit + +Has_Left_Limit_Expr =\ + libghdl.vhdl__nodes_meta__has_left_limit_expr + +Has_Right_Limit_Expr =\ + libghdl.vhdl__nodes_meta__has_right_limit_expr + +Has_Base_Type =\ + libghdl.vhdl__nodes_meta__has_base_type + +Has_Resolution_Indication =\ + libghdl.vhdl__nodes_meta__has_resolution_indication + +Has_Record_Element_Resolution_Chain =\ + libghdl.vhdl__nodes_meta__has_record_element_resolution_chain + +Has_Tolerance =\ + libghdl.vhdl__nodes_meta__has_tolerance + +Has_Plus_Terminal =\ + libghdl.vhdl__nodes_meta__has_plus_terminal + +Has_Minus_Terminal =\ + libghdl.vhdl__nodes_meta__has_minus_terminal + +Has_Simultaneous_Left =\ + libghdl.vhdl__nodes_meta__has_simultaneous_left + +Has_Simultaneous_Right =\ + libghdl.vhdl__nodes_meta__has_simultaneous_right + +Has_Text_File_Flag =\ + libghdl.vhdl__nodes_meta__has_text_file_flag + +Has_Only_Characters_Flag =\ + libghdl.vhdl__nodes_meta__has_only_characters_flag + +Has_Is_Character_Type =\ + libghdl.vhdl__nodes_meta__has_is_character_type + +Has_Type_Staticness =\ + libghdl.vhdl__nodes_meta__has_type_staticness + +Has_Constraint_State =\ + libghdl.vhdl__nodes_meta__has_constraint_state + +Has_Index_Subtype_List =\ + libghdl.vhdl__nodes_meta__has_index_subtype_list + +Has_Index_Subtype_Definition_List =\ + libghdl.vhdl__nodes_meta__has_index_subtype_definition_list + +Has_Element_Subtype_Indication =\ + libghdl.vhdl__nodes_meta__has_element_subtype_indication + +Has_Element_Subtype =\ + libghdl.vhdl__nodes_meta__has_element_subtype + +Has_Index_Constraint_List =\ + libghdl.vhdl__nodes_meta__has_index_constraint_list + +Has_Array_Element_Constraint =\ + libghdl.vhdl__nodes_meta__has_array_element_constraint + +Has_Elements_Declaration_List =\ + libghdl.vhdl__nodes_meta__has_elements_declaration_list + +Has_Owned_Elements_Chain =\ + libghdl.vhdl__nodes_meta__has_owned_elements_chain + +Has_Designated_Type =\ + libghdl.vhdl__nodes_meta__has_designated_type + +Has_Designated_Subtype_Indication =\ + libghdl.vhdl__nodes_meta__has_designated_subtype_indication + +Has_Index_List =\ + libghdl.vhdl__nodes_meta__has_index_list + +Has_Reference =\ + libghdl.vhdl__nodes_meta__has_reference + +Has_Nature_Declarator =\ + libghdl.vhdl__nodes_meta__has_nature_declarator + +Has_Across_Type =\ + libghdl.vhdl__nodes_meta__has_across_type + +Has_Through_Type =\ + libghdl.vhdl__nodes_meta__has_through_type + +Has_Target =\ + libghdl.vhdl__nodes_meta__has_target + +Has_Waveform_Chain =\ + libghdl.vhdl__nodes_meta__has_waveform_chain + +Has_Guard =\ + libghdl.vhdl__nodes_meta__has_guard + +Has_Delay_Mechanism =\ + libghdl.vhdl__nodes_meta__has_delay_mechanism + +Has_Reject_Time_Expression =\ + libghdl.vhdl__nodes_meta__has_reject_time_expression + +Has_Sensitivity_List =\ + libghdl.vhdl__nodes_meta__has_sensitivity_list + +Has_Process_Origin =\ + libghdl.vhdl__nodes_meta__has_process_origin + +Has_Package_Origin =\ + libghdl.vhdl__nodes_meta__has_package_origin + +Has_Condition_Clause =\ + libghdl.vhdl__nodes_meta__has_condition_clause + +Has_Timeout_Clause =\ + libghdl.vhdl__nodes_meta__has_timeout_clause + +Has_Postponed_Flag =\ + libghdl.vhdl__nodes_meta__has_postponed_flag + +Has_Callees_List =\ + libghdl.vhdl__nodes_meta__has_callees_list + +Has_Passive_Flag =\ + libghdl.vhdl__nodes_meta__has_passive_flag + +Has_Resolution_Function_Flag =\ + libghdl.vhdl__nodes_meta__has_resolution_function_flag + +Has_Wait_State =\ + libghdl.vhdl__nodes_meta__has_wait_state + +Has_All_Sensitized_State =\ + libghdl.vhdl__nodes_meta__has_all_sensitized_state + +Has_Seen_Flag =\ + libghdl.vhdl__nodes_meta__has_seen_flag + +Has_Pure_Flag =\ + libghdl.vhdl__nodes_meta__has_pure_flag + +Has_Foreign_Flag =\ + libghdl.vhdl__nodes_meta__has_foreign_flag + +Has_Resolved_Flag =\ + libghdl.vhdl__nodes_meta__has_resolved_flag + +Has_Signal_Type_Flag =\ + libghdl.vhdl__nodes_meta__has_signal_type_flag + +Has_Has_Signal_Flag =\ + libghdl.vhdl__nodes_meta__has_has_signal_flag + +Has_Purity_State =\ + libghdl.vhdl__nodes_meta__has_purity_state + +Has_Elab_Flag =\ + libghdl.vhdl__nodes_meta__has_elab_flag + +Has_Configuration_Mark_Flag =\ + libghdl.vhdl__nodes_meta__has_configuration_mark_flag + +Has_Configuration_Done_Flag =\ + libghdl.vhdl__nodes_meta__has_configuration_done_flag + +Has_Index_Constraint_Flag =\ + libghdl.vhdl__nodes_meta__has_index_constraint_flag + +Has_Hide_Implicit_Flag =\ + libghdl.vhdl__nodes_meta__has_hide_implicit_flag + +Has_Assertion_Condition =\ + libghdl.vhdl__nodes_meta__has_assertion_condition + +Has_Report_Expression =\ + libghdl.vhdl__nodes_meta__has_report_expression + +Has_Severity_Expression =\ + libghdl.vhdl__nodes_meta__has_severity_expression + +Has_Instantiated_Unit =\ + libghdl.vhdl__nodes_meta__has_instantiated_unit + +Has_Generic_Map_Aspect_Chain =\ + libghdl.vhdl__nodes_meta__has_generic_map_aspect_chain + +Has_Port_Map_Aspect_Chain =\ + libghdl.vhdl__nodes_meta__has_port_map_aspect_chain + +Has_Configuration_Name =\ + libghdl.vhdl__nodes_meta__has_configuration_name + +Has_Component_Configuration =\ + libghdl.vhdl__nodes_meta__has_component_configuration + +Has_Configuration_Specification =\ + libghdl.vhdl__nodes_meta__has_configuration_specification + +Has_Default_Binding_Indication =\ + libghdl.vhdl__nodes_meta__has_default_binding_indication + +Has_Default_Configuration_Declaration =\ + libghdl.vhdl__nodes_meta__has_default_configuration_declaration + +Has_Expression =\ + libghdl.vhdl__nodes_meta__has_expression + +Has_Conditional_Expression =\ + libghdl.vhdl__nodes_meta__has_conditional_expression + +Has_Allocator_Designated_Type =\ + libghdl.vhdl__nodes_meta__has_allocator_designated_type + +Has_Selected_Waveform_Chain =\ + libghdl.vhdl__nodes_meta__has_selected_waveform_chain + +Has_Conditional_Waveform_Chain =\ + libghdl.vhdl__nodes_meta__has_conditional_waveform_chain + +Has_Guard_Expression =\ + libghdl.vhdl__nodes_meta__has_guard_expression + +Has_Guard_Decl =\ + libghdl.vhdl__nodes_meta__has_guard_decl + +Has_Guard_Sensitivity_List =\ + libghdl.vhdl__nodes_meta__has_guard_sensitivity_list + +Has_Signal_Attribute_Chain =\ + libghdl.vhdl__nodes_meta__has_signal_attribute_chain + +Has_Block_Block_Configuration =\ + libghdl.vhdl__nodes_meta__has_block_block_configuration + +Has_Package_Header =\ + libghdl.vhdl__nodes_meta__has_package_header + +Has_Block_Header =\ + libghdl.vhdl__nodes_meta__has_block_header + +Has_Uninstantiated_Package_Name =\ + libghdl.vhdl__nodes_meta__has_uninstantiated_package_name + +Has_Uninstantiated_Package_Decl =\ + libghdl.vhdl__nodes_meta__has_uninstantiated_package_decl + +Has_Instance_Source_File =\ + libghdl.vhdl__nodes_meta__has_instance_source_file + +Has_Generate_Block_Configuration =\ + libghdl.vhdl__nodes_meta__has_generate_block_configuration + +Has_Generate_Statement_Body =\ + libghdl.vhdl__nodes_meta__has_generate_statement_body + +Has_Alternative_Label =\ + libghdl.vhdl__nodes_meta__has_alternative_label + +Has_Generate_Else_Clause =\ + libghdl.vhdl__nodes_meta__has_generate_else_clause + +Has_Condition =\ + libghdl.vhdl__nodes_meta__has_condition + +Has_Else_Clause =\ + libghdl.vhdl__nodes_meta__has_else_clause + +Has_Parameter_Specification =\ + libghdl.vhdl__nodes_meta__has_parameter_specification + +Has_Parent =\ + libghdl.vhdl__nodes_meta__has_parent + +Has_Loop_Label =\ + libghdl.vhdl__nodes_meta__has_loop_label + +Has_Component_Name =\ + libghdl.vhdl__nodes_meta__has_component_name + +Has_Instantiation_List =\ + libghdl.vhdl__nodes_meta__has_instantiation_list + +Has_Entity_Aspect =\ + libghdl.vhdl__nodes_meta__has_entity_aspect + +Has_Default_Entity_Aspect =\ + libghdl.vhdl__nodes_meta__has_default_entity_aspect + +Has_Binding_Indication =\ + libghdl.vhdl__nodes_meta__has_binding_indication + +Has_Named_Entity =\ + libghdl.vhdl__nodes_meta__has_named_entity + +Has_Alias_Declaration =\ + libghdl.vhdl__nodes_meta__has_alias_declaration + +Has_Referenced_Name =\ + libghdl.vhdl__nodes_meta__has_referenced_name + +Has_Expr_Staticness =\ + libghdl.vhdl__nodes_meta__has_expr_staticness + +Has_Error_Origin =\ + libghdl.vhdl__nodes_meta__has_error_origin + +Has_Operand =\ + libghdl.vhdl__nodes_meta__has_operand + +Has_Left =\ + libghdl.vhdl__nodes_meta__has_left + +Has_Right =\ + libghdl.vhdl__nodes_meta__has_right + +Has_Physical_Unit =\ + libghdl.vhdl__nodes_meta__has_physical_unit + +Has_Unit_Name =\ + libghdl.vhdl__nodes_meta__has_unit_name + +Has_Name =\ + libghdl.vhdl__nodes_meta__has_name + +Has_Group_Template_Name =\ + libghdl.vhdl__nodes_meta__has_group_template_name + +Has_Name_Staticness =\ + libghdl.vhdl__nodes_meta__has_name_staticness + +Has_Prefix =\ + libghdl.vhdl__nodes_meta__has_prefix + +Has_Signature_Prefix =\ + libghdl.vhdl__nodes_meta__has_signature_prefix + +Has_External_Pathname =\ + libghdl.vhdl__nodes_meta__has_external_pathname + +Has_Pathname_Suffix =\ + libghdl.vhdl__nodes_meta__has_pathname_suffix + +Has_Pathname_Expression =\ + libghdl.vhdl__nodes_meta__has_pathname_expression + +Has_In_Formal_Flag =\ + libghdl.vhdl__nodes_meta__has_in_formal_flag + +Has_Slice_Subtype =\ + libghdl.vhdl__nodes_meta__has_slice_subtype + +Has_Suffix =\ + libghdl.vhdl__nodes_meta__has_suffix + +Has_Index_Subtype =\ + libghdl.vhdl__nodes_meta__has_index_subtype + +Has_Parameter =\ + libghdl.vhdl__nodes_meta__has_parameter + +Has_Attr_Chain =\ + libghdl.vhdl__nodes_meta__has_attr_chain + +Has_Signal_Attribute_Declaration =\ + libghdl.vhdl__nodes_meta__has_signal_attribute_declaration + +Has_Actual_Type =\ + libghdl.vhdl__nodes_meta__has_actual_type + +Has_Actual_Type_Definition =\ + libghdl.vhdl__nodes_meta__has_actual_type_definition + +Has_Association_Chain =\ + libghdl.vhdl__nodes_meta__has_association_chain + +Has_Individual_Association_Chain =\ + libghdl.vhdl__nodes_meta__has_individual_association_chain + +Has_Subprogram_Association_Chain =\ + libghdl.vhdl__nodes_meta__has_subprogram_association_chain + +Has_Aggregate_Info =\ + libghdl.vhdl__nodes_meta__has_aggregate_info + +Has_Sub_Aggregate_Info =\ + libghdl.vhdl__nodes_meta__has_sub_aggregate_info + +Has_Aggr_Dynamic_Flag =\ + libghdl.vhdl__nodes_meta__has_aggr_dynamic_flag + +Has_Aggr_Min_Length =\ + libghdl.vhdl__nodes_meta__has_aggr_min_length + +Has_Aggr_Low_Limit =\ + libghdl.vhdl__nodes_meta__has_aggr_low_limit + +Has_Aggr_High_Limit =\ + libghdl.vhdl__nodes_meta__has_aggr_high_limit + +Has_Aggr_Others_Flag =\ + libghdl.vhdl__nodes_meta__has_aggr_others_flag + +Has_Aggr_Named_Flag =\ + libghdl.vhdl__nodes_meta__has_aggr_named_flag + +Has_Aggregate_Expand_Flag =\ + libghdl.vhdl__nodes_meta__has_aggregate_expand_flag + +Has_Association_Choices_Chain =\ + libghdl.vhdl__nodes_meta__has_association_choices_chain + +Has_Case_Statement_Alternative_Chain =\ + libghdl.vhdl__nodes_meta__has_case_statement_alternative_chain + +Has_Choice_Staticness =\ + libghdl.vhdl__nodes_meta__has_choice_staticness + +Has_Procedure_Call =\ + libghdl.vhdl__nodes_meta__has_procedure_call + +Has_Implementation =\ + libghdl.vhdl__nodes_meta__has_implementation + +Has_Parameter_Association_Chain =\ + libghdl.vhdl__nodes_meta__has_parameter_association_chain + +Has_Method_Object =\ + libghdl.vhdl__nodes_meta__has_method_object + +Has_Subtype_Type_Mark =\ + libghdl.vhdl__nodes_meta__has_subtype_type_mark + +Has_Type_Conversion_Subtype =\ + libghdl.vhdl__nodes_meta__has_type_conversion_subtype + +Has_Type_Mark =\ + libghdl.vhdl__nodes_meta__has_type_mark + +Has_File_Type_Mark =\ + libghdl.vhdl__nodes_meta__has_file_type_mark + +Has_Return_Type_Mark =\ + libghdl.vhdl__nodes_meta__has_return_type_mark + +Has_Has_Disconnect_Flag =\ + libghdl.vhdl__nodes_meta__has_has_disconnect_flag + +Has_Has_Active_Flag =\ + libghdl.vhdl__nodes_meta__has_has_active_flag + +Has_Is_Within_Flag =\ + libghdl.vhdl__nodes_meta__has_is_within_flag + +Has_Type_Marks_List =\ + libghdl.vhdl__nodes_meta__has_type_marks_list + +Has_Implicit_Alias_Flag =\ + libghdl.vhdl__nodes_meta__has_implicit_alias_flag + +Has_Alias_Signature =\ + libghdl.vhdl__nodes_meta__has_alias_signature + +Has_Attribute_Signature =\ + libghdl.vhdl__nodes_meta__has_attribute_signature + +Has_Overload_List =\ + libghdl.vhdl__nodes_meta__has_overload_list + +Has_Simple_Name_Identifier =\ + libghdl.vhdl__nodes_meta__has_simple_name_identifier + +Has_Simple_Name_Subtype =\ + libghdl.vhdl__nodes_meta__has_simple_name_subtype + +Has_Protected_Type_Body =\ + libghdl.vhdl__nodes_meta__has_protected_type_body + +Has_Protected_Type_Declaration =\ + libghdl.vhdl__nodes_meta__has_protected_type_declaration + +Has_Use_Flag =\ + libghdl.vhdl__nodes_meta__has_use_flag + +Has_End_Has_Reserved_Id =\ + libghdl.vhdl__nodes_meta__has_end_has_reserved_id + +Has_End_Has_Identifier =\ + libghdl.vhdl__nodes_meta__has_end_has_identifier + +Has_End_Has_Postponed =\ + libghdl.vhdl__nodes_meta__has_end_has_postponed + +Has_Has_Label =\ + libghdl.vhdl__nodes_meta__has_has_label + +Has_Has_Begin =\ + libghdl.vhdl__nodes_meta__has_has_begin + +Has_Has_End =\ + libghdl.vhdl__nodes_meta__has_has_end + +Has_Has_Is =\ + libghdl.vhdl__nodes_meta__has_has_is + +Has_Has_Pure =\ + libghdl.vhdl__nodes_meta__has_has_pure + +Has_Has_Body =\ + libghdl.vhdl__nodes_meta__has_has_body + +Has_Has_Parameter =\ + libghdl.vhdl__nodes_meta__has_has_parameter + +Has_Has_Component =\ + libghdl.vhdl__nodes_meta__has_has_component + +Has_Has_Identifier_List =\ + libghdl.vhdl__nodes_meta__has_has_identifier_list + +Has_Has_Mode =\ + libghdl.vhdl__nodes_meta__has_has_mode + +Has_Has_Class =\ + libghdl.vhdl__nodes_meta__has_has_class + +Has_Suspend_Flag =\ + libghdl.vhdl__nodes_meta__has_suspend_flag + +Has_Is_Ref =\ + libghdl.vhdl__nodes_meta__has_is_ref + +Has_Is_Forward_Ref =\ + libghdl.vhdl__nodes_meta__has_is_forward_ref + +Has_Psl_Property =\ + libghdl.vhdl__nodes_meta__has_psl_property + +Has_Psl_Sequence =\ + libghdl.vhdl__nodes_meta__has_psl_sequence + +Has_Psl_Declaration =\ + libghdl.vhdl__nodes_meta__has_psl_declaration + +Has_Psl_Expression =\ + libghdl.vhdl__nodes_meta__has_psl_expression + +Has_Psl_Boolean =\ + libghdl.vhdl__nodes_meta__has_psl_boolean + +Has_PSL_Clock =\ + libghdl.vhdl__nodes_meta__has_psl_clock + +Has_PSL_NFA =\ + libghdl.vhdl__nodes_meta__has_psl_nfa + +Has_PSL_Nbr_States =\ + libghdl.vhdl__nodes_meta__has_psl_nbr_states + +Has_PSL_Clock_Sensitivity =\ + libghdl.vhdl__nodes_meta__has_psl_clock_sensitivity + +Has_PSL_EOS_Flag =\ + libghdl.vhdl__nodes_meta__has_psl_eos_flag diff --git a/src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py b/src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py new file mode 100644 index 000000000..8ea92969e --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/nodes_utils.py @@ -0,0 +1,14 @@ +from libghdl import libghdl + +Strip_Denoting_Name = libghdl.vhdl__utils__strip_denoting_name + +Get_Entity = libghdl.vhdl__utils__get_entity + +Is_Second_Subprogram_Specification = \ + libghdl.vhdl__utils__is_second_subprogram_specification + +Get_Entity_From_Entity_Aspect = \ + libghdl.vhdl__utils__get_entity_from_entity_aspect + +Get_Interface_Of_Formal = \ + libghdl.vhdl__utils__get_interface_of_formal diff --git a/src/vhdl/python/libghdl/thin/vhdl/parse.py b/src/vhdl/python/libghdl/thin/vhdl/parse.py new file mode 100644 index 000000000..c6fbb5259 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/parse.py @@ -0,0 +1,7 @@ +from libghdl import libghdl +from ctypes import c_bool + +Parse_Design_File = libghdl.vhdl__parse__parse_design_file + +Flag_Parse_Parenthesis = c_bool.in_dll( + libghdl, "vhdl__parse__flag_parse_parenthesis") diff --git a/src/vhdl/python/libghdl/thin/vhdl/pyutils.py b/src/vhdl/python/libghdl/thin/vhdl/pyutils.py new file mode 100644 index 000000000..8fc01d434 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/pyutils.py @@ -0,0 +1,407 @@ +from libghdl import libghdl +from ctypes import (c_char_p, c_int32, c_int, c_bool, sizeof, c_void_p, byref) +import libghdl.iirs as iirs +import libghdl.thin as thin +import libghdl.nodes_meta as nodes_meta +from libghdl.nodes_meta import (Attr, types) +# from libghdl_defs import (fields, Iir_Kind, types, Attr) + +Null_Iir = 0 +Null_Iir_List = 0 + +def name_image(nameid): + return thin.Get_Name_Ptr(nameid).decode('utf-8') + +def _build_enum_image(cls): + d = [e for e in dir(cls) if e[0] != '_'] + res = [None] * len(d) + for e in d: + res[getattr(cls, e)] = e + return res + + +_fields_image = _build_enum_image(nodes_meta.fields) + + +def fields_image(idx): + """String representation of field idx""" + return _fields_image[idx] + + +_kind_image = _build_enum_image(iirs.Iir_Kind) + + +def kind_image(k): + """String representation of Iir_Kind k""" + return _kind_image[k] + + +_types_image = _build_enum_image(nodes_meta.types) + + +def types_image(t): + """String representation of Nodes_Meta.Types t""" + return _types_image[t] + + +_attr_image = _build_enum_image(nodes_meta.Attr) + + +def attr_image(a): + """String representation of Nodes_Meta.Attr a""" + return _attr_image[a] + + +def leftest_location(n): + while True: + if n == Null_Iir: + return No_Location + k = iirs.Get_Kind(n) + if k == iirs.Iir_Kind.Array_Subtype_Definition: + n = iirs.Get_Subtype_Type_Mark(n) + else: + return iirs.Get_Location(n) + + +def fields_iter(n): + """Iterate on fields of node n""" + if n == Null_Iir: + return + k = iirs.Get_Kind(n) + first = nodes_meta.get_fields_first(k) + last = nodes_meta.get_fields_last(k) + for i in range(first, last + 1): + yield nodes_meta.get_field_by_index(i) + + +def chain_iter(n): + """Iterate of a chain headed by node n""" + while n != Null_Iir: + yield n + n = iirs.Get_Chain(n) + + +def chain_to_list(n): + """Convert a chain headed by node n to a python list""" + return [e for e in chain_iter(n)] + + +def nodes_iter(n): + """Iterate of all nodes of n, including n. + Nodes are returned only once.""" + if n == Null_Iir: + return +# print 'nodes_iter for {0}'.format(n) + yield n + for f in fields_iter(n): + typ = nodes_meta.get_field_type(f) +# print ' {0}: field {1} (type: {2})'.format( +# n, fields_image(f), types_image(typ)) + if typ == nodes_meta.types.Iir: + attr = nodes_meta.get_field_attribute(f) + if attr == Attr.ANone: + for n1 in nodes_iter(nodes_meta.Get_Iir(n, f)): + yield n1 + elif attr == Attr.Chain: + n2 = nodes_meta.Get_Iir(n, f) + while n2 != Null_Iir: + for n1 in nodes_iter(n2): + yield n1 + n2 = iirs.Get_Chain(n2) + elif attr == Attr.Maybe_Ref: + if not iirs.Get_Is_Ref(n, f): + for n1 in nodes_iter(nodes_meta.Get_Iir(n, f)): + yield n1 + elif typ == types.Iir_List: + attr = nodes_meta.get_field_attribute(f) + if attr == Attr.ANone: + for n1 in list_iter(nodes_meta.Get_Iir_List(n, f)): + for n2 in nodes_iter(n1): + yield n2 + elif typ == types.Iir_Flist: + attr = nodes_meta.get_field_attribute(f) + if attr == Attr.ANone: + for n1 in flist_iter(nodes_meta.Get_Iir_Flist(n, f)): + for n2 in nodes_iter(n1): + yield n2 + + +def list_iter(lst): + """Iterate of all element of Iir_List lst.""" + if lst <= thin.Iir_List_All: + return + iter = thin.Lists.Iterate(lst) + while thin.Lists.Is_Valid(byref(iter)): + yield thin.Lists.Get_Element(byref(iter)) + thin.Lists.Next(byref(iter)) + + +def flist_iter(lst): + """Iterate of all element of Iir_List lst.""" + if lst <= thin.Iir_Flist_All: + return + for i in range(thin.Flists.Flast(lst) + 1): + yield thin.Flists.Get_Nth_Element(lst, i) + + +def declarations_iter(n): + """Iterator on all declarations in n.""" + k = iirs.Get_Kind(n) + if nodes_meta.Has_Generic_Chain(k): + for n1 in chain_iter(iirs.Get_Generic_Chain(n)): + yield n1 + if nodes_meta.Has_Port_Chain(k): + for n1 in chain_iter(iirs.Get_Port_Chain(n)): + yield n1 + if nodes_meta.Has_Interface_Declaration_Chain(k): + for n1 in chain_iter(iirs.Get_Interface_Declaration_Chain(n)): + yield n1 + if nodes_meta.Has_Declaration_Chain(k): + for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): + k1 = iirs.Get_Kind(n1) + if k1 in iirs.Iir_Kinds.Specification \ + or k1 == iirs.Iir_Kind.Use_Clause: + # Not a declaration + pass + elif k1 == iirs.Iir_Kind.Signal_Attribute_Declaration: + # Not a declaration + pass + elif k1 in [iirs.Iir_Kind.Type_Declaration, + iirs.Iir_Kind.Anonymous_Type_Declaration]: + yield n1 + # Handle nested declarations: record elements, physical units, + # enumeration literals... + typ = iirs.Get_Type_Definition(n1) + for n2 in declarations_iter(n1): + yield n2 + else: + yield n1 + # There can be nested declarations (subprograms) + for n2 in declarations_iter(n1): + yield n2 + if nodes_meta.Has_Concurrent_Statement_Chain(k): + for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): + for n2 in declarations_iter(n1): + yield n2 + if nodes_meta.Has_Sequential_Statement_Chain(k): + for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): + for n2 in declarations_iter(n1): + yield n2 + if nodes_meta.Has_Parameter_Specification(k): + yield iirs.Get_Parameter_Specification(n) + if nodes_meta.Has_Generate_Statement_Body(k): + for n1 in declarations_iter(iirs.Get_Generate_Statement_Body(n)): + yield n1 + if nodes_meta.Has_Else_Clause(k): + n1 = iirs.Get_Else_Clause(n) + if n1 != Null_Iir: + for n2 in declarations_iter(n1): + yield n2 + if nodes_meta.Has_Generate_Else_Clause(k): + n1 = iirs.Get_Generate_Else_Clause(n) + if n1 != Null_Iir: + for n2 in declarations_iter(n1): + yield n2 + if nodes_meta.Has_Block_Header(k): + n1 = iirs.Get_Block_Header(n) + if n1 != Null_Iir: + for n2 in declarations_iter(n1): + yield n2 + # All these nodes are handled: + if k in [iirs.Iir_Kind.Entity_Declaration, + iirs.Iir_Kind.Architecture_Body, + iirs.Iir_Kind.Package_Declaration, + iirs.Iir_Kind.Package_Body, + iirs.Iir_Kind.Process_Statement, + iirs.Iir_Kind.Sensitized_Process_Statement, + iirs.Iir_Kind.Concurrent_Assertion_Statement, + iirs.Iir_Kind.Concurrent_Simple_Signal_Assignment, + iirs.Iir_Kind.Concurrent_Selected_Signal_Assignment, + iirs.Iir_Kind.Concurrent_Conditional_Signal_Assignment, + iirs.Iir_Kind.Concurrent_Procedure_Call_Statement, + iirs.Iir_Kind.Block_Statement, + iirs.Iir_Kind.Block_Header, + iirs.Iir_Kind.For_Generate_Statement, + iirs.Iir_Kind.If_Generate_Statement, + iirs.Iir_Kind.Generate_Statement_Body, + iirs.Iir_Kind.Assertion_Statement, + iirs.Iir_Kind.Wait_Statement, + iirs.Iir_Kind.Simple_Signal_Assignment_Statement, + iirs.Iir_Kind.Variable_Assignment_Statement, + iirs.Iir_Kind.For_Loop_Statement, + iirs.Iir_Kind.While_Loop_Statement, + iirs.Iir_Kind.Case_Statement, + iirs.Iir_Kind.Null_Statement, + iirs.Iir_Kind.Exit_Statement, + iirs.Iir_Kind.Next_Statement, + iirs.Iir_Kind.Procedure_Call_Statement, + iirs.Iir_Kind.Signal_Declaration, + iirs.Iir_Kind.Constant_Declaration, + iirs.Iir_Kind.Variable_Declaration, + iirs.Iir_Kind.File_Declaration, + iirs.Iir_Kind.Object_Alias_Declaration, + iirs.Iir_Kind.Attribute_Declaration, + iirs.Iir_Kind.Component_Declaration, + iirs.Iir_Kind.Use_Clause, + iirs.Iir_Kind.If_Statement, + iirs.Iir_Kind.Elsif, + iirs.Iir_Kind.Return_Statement, + iirs.Iir_Kind.Type_Declaration, + iirs.Iir_Kind.Anonymous_Type_Declaration, + iirs.Iir_Kind.Subtype_Declaration, + iirs.Iir_Kind.Function_Declaration, + iirs.Iir_Kind.Function_Body, + iirs.Iir_Kind.Procedure_Declaration, + iirs.Iir_Kind.Procedure_Body, + iirs.Iir_Kind.Component_Instantiation_Statement, + ]: + return + assert False, "unknown node of kind {}".format(kind_image(k)) + + +def concurrent_stmts_iter(n): + """Iterator on concurrent statements in n.""" + k = iirs.Get_Kind(n) + if k == iirs.Iir_Kind.Design_File: + for n1 in chain_iter(iirs.Get_First_Design_Unit(n)): + for n2 in concurrent_stmts_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.Design_Unit: + for n1 in concurrent_stmts_iter(iirs.Get_Library_Unit(n)): + yield n1 + elif k == iirs.Iir_Kind.Entity_Declaration \ + or k == iirs.Iir_Kind.Architecture_Body \ + or k == iirs.Iir_Kind.Block_Statement: + for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): + yield n1 + for n2 in concurrent_stmts_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.For_Generate_Statement: + for n1 in concurrent_stmts_iter(iirs.Get_Generate_Statement_Body(n)): + yield n1 + elif k == iirs.Iir_Kind.If_Generate_Statement: + while n != Null_Iir: + for n1 in concurrent_stmts_iter( + iirs.Get_Generate_Statement_Body(n)): + yield n1 + n = iirs.Get_Generate_Else_Clause(n) + elif k == iirs.Iir_Kind.Case_Generate_Statement: + alt = iirs.Get_Case_Statement_Alternative_Chain(n) + for n1 in chain_iter(alt): + blk = iirs.Get_Associated_Block(n1) + if blk != Null_Iir: + for n2 in concurrent_stmts_iter( + iirs.Get_Generate_Statement_Body(n)): + yield n2 + + +def constructs_iter(n): + """Iterator on library unit, concurrent statements and declarations + that appear directly within a declarative part.""" + if n == thin.Null_Iir: + return + k = iirs.Get_Kind(n) + if k == iirs.Iir_Kind.Design_File: + for n1 in chain_iter(iirs.Get_First_Design_Unit(n)): + for n2 in constructs_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.Design_Unit: + n1 = iirs.Get_Library_Unit(n) + yield n1 + for n2 in constructs_iter(n1): + yield n2 + elif k in [iirs.Iir_Kind.Entity_Declaration, + iirs.Iir_Kind.Architecture_Body, + iirs.Iir_Kind.Block_Statement, + iirs.Iir_Kind.Generate_Statement_Body]: + for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): + yield n1 + for n2 in constructs_iter(n1): + yield n2 + for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): + yield n1 + for n2 in constructs_iter(n1): + yield n2 + elif k in [iirs.Iir_Kind.Configuration_Declaration, + iirs.Iir_Kind.Package_Declaration, + iirs.Iir_Kind.Package_Body, + iirs.Iir_Kind.Function_Body, + iirs.Iir_Kind.Procedure_Body, + iirs.Iir_Kind.Protected_Type_Declaration, + iirs.Iir_Kind.Protected_Type_Body, + iirs.Iir_Kind.Process_Statement, + iirs.Iir_Kind.Sensitized_Process_Statement]: + for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): + yield n1 + for n2 in constructs_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.For_Generate_Statement: + n1 = iirs.Get_Generate_Statement_Body(n) + yield n1 + for n2 in constructs_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.If_Generate_Statement: + while n != Null_Iir: + n1 = iirs.Get_Generate_Statement_Body(n) + yield n1 + for n2 in constructs_iter(n1): + yield n2 + n = iirs.Get_Generate_Else_Clause(n) + elif k == iirs.Iir_Kind.Case_Generate_Statement: + alt = iirs.Get_Case_Statement_Alternative_Chain(n) + for n1 in chain_iter(alt): + blk = iirs.Get_Associated_Block(n1) + if blk != Null_Iir: + n2 = iirs.Get_Generate_Statement_Body(blk) + yield n2 + for n3 in constructs_iter(n2): + yield n3 + +def sequential_iter(n): + """Iterator on sequential statements. The first node must be either + a process or a subprogram body.""" + if n == thin.Null_Iir: + return + k = iirs.Get_Kind(n) + if k in [iirs.Iir_Kind.Process_Statement, + iirs.Iir_Kind.Sensitized_Process_Statement, + iirs.Iir_Kind.Function_Body, + iirs.Iir_Kind.Procedure_Body]: + for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): + yield n1 + for n2 in sequential_iter(n1): + yield n2 + elif k == iirs.Iir_Kind.If_Statement: + while True: + n = iirs.Get_Chain(n) + if n == thin.Null_Iir: + break + yield n + for n1 in sequential_iter(n): + yield n1 + elif k == iirs.Iir_Kind.Case_Statement: + for ch in chain_iter(iirs.Get_Case_Statement_Alternative_Chain(n)): + stmt = iirs.Get_Associated_Chain(ch) + if stmt != thin.Null_Iir: + for n1 in chain_iter(stmt): + yield n1 + for n2 in sequential_iter(n1): + yield n2 + elif k in [iirs.Iir_Kind.For_Loop_Statement, + iirs.Iir_Kind.While_Loop_Statement]: + for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): + yield n1 + for n2 in sequential_iter(n1): + yield n2 + elif k in [iirs.Iir_Kind.Assertion_Statement, + iirs.Iir_Kind.Wait_Statement, + iirs.Iir_Kind.Null_Statement, + iirs.Iir_Kind.Exit_Statement, + iirs.Iir_Kind.Next_Statement, + iirs.Iir_Kind.Return_Statement, + iirs.Iir_Kind.Variable_Assignment_Statement, + iirs.Iir_Kind.Simple_Signal_Assignment_Statement, + iirs.Iir_Kind.Procedure_Call_Statement]: + return + else: + assert False, "unknown node of kind {}".format(kind_image(k)) diff --git a/src/vhdl/python/libghdl/thin/vhdl/scanner.py b/src/vhdl/python/libghdl/thin/vhdl/scanner.py new file mode 100644 index 000000000..8cea66ba3 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/scanner.py @@ -0,0 +1,23 @@ +from libghdl import libghdl +from ctypes import c_int, c_bool + +Set_File = libghdl.vhdl__scanner__set_file + +Close_File = libghdl.vhdl__scanner__close_file + +Scan = libghdl.vhdl__scanner__scan + +# This is a c_int, so you want to use its .value +Current_Token = c_int.in_dll(libghdl, "vhdl__scanner__current_token") + +Flag_Comment = c_bool.in_dll(libghdl, "vhdl__scanner__flag_comment") + +Get_Current_Line = libghdl.vhdl__scanner__get_current_line + +Get_Token_Offset = libghdl.vhdl__scanner__get_token_offset + +Get_Token_Position = libghdl.vhdl__scanner__get_token_position + +Get_Position = libghdl.vhdl__scanner__get_position + +Current_Identifier = libghdl.vhdl__scanner__current_identifier diff --git a/src/vhdl/python/libghdl/thin/vhdl/sem_lib.py b/src/vhdl/python/libghdl/thin/vhdl/sem_lib.py new file mode 100644 index 000000000..28f7adc39 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/sem_lib.py @@ -0,0 +1,5 @@ +from libghdl import libghdl + +Load_File = libghdl.vhdl__sem_lib__load_file + +Finish_Compilation = libghdl.vhdl__sem_lib__finish_compilation diff --git a/src/vhdl/python/libghdl/thin/vhdl/std_package.py b/src/vhdl/python/libghdl/thin/vhdl/std_package.py new file mode 100644 index 000000000..a9628ce89 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/std_package.py @@ -0,0 +1,13 @@ +from libghdl import libghdl +from ctypes import c_int32 + +# Use .value +Std_Location = c_int32.in_dll(libghdl, "vhdl__std_package__std_location") + +# Use .value +Standard_Package = c_int32.in_dll( + libghdl, "vhdl__std_package__standard_package") + +# Use .value +Character_Type_Definition = c_int32.in_dll( + libghdl, "vhdl__std_package__character_type_definition") diff --git a/src/vhdl/python/libghdl/thin/vhdl/tokens.py b/src/vhdl/python/libghdl/thin/vhdl/tokens.py new file mode 100644 index 000000000..80f582da7 --- /dev/null +++ b/src/vhdl/python/libghdl/thin/vhdl/tokens.py @@ -0,0 +1,196 @@ + + +class Tok: + Invalid = 0 + Left_Paren = 1 + Right_Paren = 2 + Left_Bracket = 3 + Right_Bracket = 4 + Colon = 5 + Semi_Colon = 6 + Comma = 7 + Double_Arrow = 8 + Tick = 9 + Double_Star = 10 + Assign = 11 + Bar = 12 + Box = 13 + Dot = 14 + Equal_Equal = 15 + Eof = 16 + Newline = 17 + Comment = 18 + Character = 19 + Identifier = 20 + Integer = 21 + Real = 22 + String = 23 + Bit_String = 24 + Integer_Letter = 25 + Equal = 26 + Not_Equal = 27 + Less = 28 + Less_Equal = 29 + Greater = 30 + Greater_Equal = 31 + Match_Equal = 32 + Match_Not_Equal = 33 + Match_Less = 34 + Match_Less_Equal = 35 + Match_Greater = 36 + Match_Greater_Equal = 37 + Plus = 38 + Minus = 39 + Ampersand = 40 + Condition = 41 + Double_Less = 42 + Double_Greater = 43 + Caret = 44 + And_And = 45 + Bar_Bar = 46 + Left_Curly = 47 + Right_Curly = 48 + Exclam_Mark = 49 + Brack_Star = 50 + Brack_Plus_Brack = 51 + Brack_Arrow = 52 + Brack_Equal = 53 + Bar_Arrow = 54 + Bar_Double_Arrow = 55 + Minus_Greater = 56 + Arobase = 57 + Star = 58 + Slash = 59 + Mod = 60 + Rem = 61 + Abs = 62 + Not = 63 + Access = 64 + After = 65 + Alias = 66 + All = 67 + Architecture = 68 + Array = 69 + Assert = 70 + Attribute = 71 + Begin = 72 + Block = 73 + Body = 74 + Buffer = 75 + Bus = 76 + Case = 77 + Component = 78 + Configuration = 79 + Constant = 80 + Disconnect = 81 + Downto = 82 + Else = 83 + Elsif = 84 + End = 85 + Entity = 86 + Exit = 87 + File = 88 + For = 89 + Function = 90 + Generate = 91 + Generic = 92 + Guarded = 93 + If = 94 + In = 95 + Inout = 96 + Is = 97 + Label = 98 + Library = 99 + Linkage = 100 + Loop = 101 + Map = 102 + New = 103 + Next = 104 + Null = 105 + Of = 106 + On = 107 + Open = 108 + Others = 109 + Out = 110 + Package = 111 + Port = 112 + Procedure = 113 + Process = 114 + Range = 115 + Record = 116 + Register = 117 + Report = 118 + Return = 119 + Select = 120 + Severity = 121 + Signal = 122 + Subtype = 123 + Then = 124 + To = 125 + Transport = 126 + Type = 127 + Units = 128 + Until = 129 + Use = 130 + Variable = 131 + Wait = 132 + When = 133 + While = 134 + With = 135 + And = 136 + Or = 137 + Xor = 138 + Nand = 139 + Nor = 140 + Xnor = 141 + Group = 142 + Impure = 143 + Inertial = 144 + Literal = 145 + Postponed = 146 + Pure = 147 + Reject = 148 + Shared = 149 + Unaffected = 150 + Sll = 151 + Sla = 152 + Sra = 153 + Srl = 154 + Rol = 155 + Ror = 156 + Protected = 157 + Context = 158 + Parameter = 159 + Across = 160 + Break = 161 + Limit = 162 + Nature = 163 + Noise = 164 + Procedural = 165 + Quantity = 166 + Reference = 167 + Spectrum = 168 + Subnature = 169 + Terminal = 170 + Through = 171 + Tolerance = 172 + Psl_Default = 173 + Psl_Clock = 174 + Psl_Property = 175 + Psl_Sequence = 176 + Psl_Endpoint = 177 + Psl_Cover = 178 + Psl_Const = 179 + Psl_Boolean = 180 + Inf = 181 + Within = 182 + Abort = 183 + Before = 184 + Always = 185 + Never = 186 + Eventually = 187 + Next_A = 188 + Next_E = 189 + Next_Event = 190 + Next_Event_A = 191 + Next_Event_E = 192 diff --git a/src/vhdl/python/libghdl/thinutils.py b/src/vhdl/python/libghdl/thinutils.py deleted file mode 100644 index 8fc01d434..000000000 --- a/src/vhdl/python/libghdl/thinutils.py +++ /dev/null @@ -1,407 +0,0 @@ -from libghdl import libghdl -from ctypes import (c_char_p, c_int32, c_int, c_bool, sizeof, c_void_p, byref) -import libghdl.iirs as iirs -import libghdl.thin as thin -import libghdl.nodes_meta as nodes_meta -from libghdl.nodes_meta import (Attr, types) -# from libghdl_defs import (fields, Iir_Kind, types, Attr) - -Null_Iir = 0 -Null_Iir_List = 0 - -def name_image(nameid): - return thin.Get_Name_Ptr(nameid).decode('utf-8') - -def _build_enum_image(cls): - d = [e for e in dir(cls) if e[0] != '_'] - res = [None] * len(d) - for e in d: - res[getattr(cls, e)] = e - return res - - -_fields_image = _build_enum_image(nodes_meta.fields) - - -def fields_image(idx): - """String representation of field idx""" - return _fields_image[idx] - - -_kind_image = _build_enum_image(iirs.Iir_Kind) - - -def kind_image(k): - """String representation of Iir_Kind k""" - return _kind_image[k] - - -_types_image = _build_enum_image(nodes_meta.types) - - -def types_image(t): - """String representation of Nodes_Meta.Types t""" - return _types_image[t] - - -_attr_image = _build_enum_image(nodes_meta.Attr) - - -def attr_image(a): - """String representation of Nodes_Meta.Attr a""" - return _attr_image[a] - - -def leftest_location(n): - while True: - if n == Null_Iir: - return No_Location - k = iirs.Get_Kind(n) - if k == iirs.Iir_Kind.Array_Subtype_Definition: - n = iirs.Get_Subtype_Type_Mark(n) - else: - return iirs.Get_Location(n) - - -def fields_iter(n): - """Iterate on fields of node n""" - if n == Null_Iir: - return - k = iirs.Get_Kind(n) - first = nodes_meta.get_fields_first(k) - last = nodes_meta.get_fields_last(k) - for i in range(first, last + 1): - yield nodes_meta.get_field_by_index(i) - - -def chain_iter(n): - """Iterate of a chain headed by node n""" - while n != Null_Iir: - yield n - n = iirs.Get_Chain(n) - - -def chain_to_list(n): - """Convert a chain headed by node n to a python list""" - return [e for e in chain_iter(n)] - - -def nodes_iter(n): - """Iterate of all nodes of n, including n. - Nodes are returned only once.""" - if n == Null_Iir: - return -# print 'nodes_iter for {0}'.format(n) - yield n - for f in fields_iter(n): - typ = nodes_meta.get_field_type(f) -# print ' {0}: field {1} (type: {2})'.format( -# n, fields_image(f), types_image(typ)) - if typ == nodes_meta.types.Iir: - attr = nodes_meta.get_field_attribute(f) - if attr == Attr.ANone: - for n1 in nodes_iter(nodes_meta.Get_Iir(n, f)): - yield n1 - elif attr == Attr.Chain: - n2 = nodes_meta.Get_Iir(n, f) - while n2 != Null_Iir: - for n1 in nodes_iter(n2): - yield n1 - n2 = iirs.Get_Chain(n2) - elif attr == Attr.Maybe_Ref: - if not iirs.Get_Is_Ref(n, f): - for n1 in nodes_iter(nodes_meta.Get_Iir(n, f)): - yield n1 - elif typ == types.Iir_List: - attr = nodes_meta.get_field_attribute(f) - if attr == Attr.ANone: - for n1 in list_iter(nodes_meta.Get_Iir_List(n, f)): - for n2 in nodes_iter(n1): - yield n2 - elif typ == types.Iir_Flist: - attr = nodes_meta.get_field_attribute(f) - if attr == Attr.ANone: - for n1 in flist_iter(nodes_meta.Get_Iir_Flist(n, f)): - for n2 in nodes_iter(n1): - yield n2 - - -def list_iter(lst): - """Iterate of all element of Iir_List lst.""" - if lst <= thin.Iir_List_All: - return - iter = thin.Lists.Iterate(lst) - while thin.Lists.Is_Valid(byref(iter)): - yield thin.Lists.Get_Element(byref(iter)) - thin.Lists.Next(byref(iter)) - - -def flist_iter(lst): - """Iterate of all element of Iir_List lst.""" - if lst <= thin.Iir_Flist_All: - return - for i in range(thin.Flists.Flast(lst) + 1): - yield thin.Flists.Get_Nth_Element(lst, i) - - -def declarations_iter(n): - """Iterator on all declarations in n.""" - k = iirs.Get_Kind(n) - if nodes_meta.Has_Generic_Chain(k): - for n1 in chain_iter(iirs.Get_Generic_Chain(n)): - yield n1 - if nodes_meta.Has_Port_Chain(k): - for n1 in chain_iter(iirs.Get_Port_Chain(n)): - yield n1 - if nodes_meta.Has_Interface_Declaration_Chain(k): - for n1 in chain_iter(iirs.Get_Interface_Declaration_Chain(n)): - yield n1 - if nodes_meta.Has_Declaration_Chain(k): - for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): - k1 = iirs.Get_Kind(n1) - if k1 in iirs.Iir_Kinds.Specification \ - or k1 == iirs.Iir_Kind.Use_Clause: - # Not a declaration - pass - elif k1 == iirs.Iir_Kind.Signal_Attribute_Declaration: - # Not a declaration - pass - elif k1 in [iirs.Iir_Kind.Type_Declaration, - iirs.Iir_Kind.Anonymous_Type_Declaration]: - yield n1 - # Handle nested declarations: record elements, physical units, - # enumeration literals... - typ = iirs.Get_Type_Definition(n1) - for n2 in declarations_iter(n1): - yield n2 - else: - yield n1 - # There can be nested declarations (subprograms) - for n2 in declarations_iter(n1): - yield n2 - if nodes_meta.Has_Concurrent_Statement_Chain(k): - for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): - for n2 in declarations_iter(n1): - yield n2 - if nodes_meta.Has_Sequential_Statement_Chain(k): - for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): - for n2 in declarations_iter(n1): - yield n2 - if nodes_meta.Has_Parameter_Specification(k): - yield iirs.Get_Parameter_Specification(n) - if nodes_meta.Has_Generate_Statement_Body(k): - for n1 in declarations_iter(iirs.Get_Generate_Statement_Body(n)): - yield n1 - if nodes_meta.Has_Else_Clause(k): - n1 = iirs.Get_Else_Clause(n) - if n1 != Null_Iir: - for n2 in declarations_iter(n1): - yield n2 - if nodes_meta.Has_Generate_Else_Clause(k): - n1 = iirs.Get_Generate_Else_Clause(n) - if n1 != Null_Iir: - for n2 in declarations_iter(n1): - yield n2 - if nodes_meta.Has_Block_Header(k): - n1 = iirs.Get_Block_Header(n) - if n1 != Null_Iir: - for n2 in declarations_iter(n1): - yield n2 - # All these nodes are handled: - if k in [iirs.Iir_Kind.Entity_Declaration, - iirs.Iir_Kind.Architecture_Body, - iirs.Iir_Kind.Package_Declaration, - iirs.Iir_Kind.Package_Body, - iirs.Iir_Kind.Process_Statement, - iirs.Iir_Kind.Sensitized_Process_Statement, - iirs.Iir_Kind.Concurrent_Assertion_Statement, - iirs.Iir_Kind.Concurrent_Simple_Signal_Assignment, - iirs.Iir_Kind.Concurrent_Selected_Signal_Assignment, - iirs.Iir_Kind.Concurrent_Conditional_Signal_Assignment, - iirs.Iir_Kind.Concurrent_Procedure_Call_Statement, - iirs.Iir_Kind.Block_Statement, - iirs.Iir_Kind.Block_Header, - iirs.Iir_Kind.For_Generate_Statement, - iirs.Iir_Kind.If_Generate_Statement, - iirs.Iir_Kind.Generate_Statement_Body, - iirs.Iir_Kind.Assertion_Statement, - iirs.Iir_Kind.Wait_Statement, - iirs.Iir_Kind.Simple_Signal_Assignment_Statement, - iirs.Iir_Kind.Variable_Assignment_Statement, - iirs.Iir_Kind.For_Loop_Statement, - iirs.Iir_Kind.While_Loop_Statement, - iirs.Iir_Kind.Case_Statement, - iirs.Iir_Kind.Null_Statement, - iirs.Iir_Kind.Exit_Statement, - iirs.Iir_Kind.Next_Statement, - iirs.Iir_Kind.Procedure_Call_Statement, - iirs.Iir_Kind.Signal_Declaration, - iirs.Iir_Kind.Constant_Declaration, - iirs.Iir_Kind.Variable_Declaration, - iirs.Iir_Kind.File_Declaration, - iirs.Iir_Kind.Object_Alias_Declaration, - iirs.Iir_Kind.Attribute_Declaration, - iirs.Iir_Kind.Component_Declaration, - iirs.Iir_Kind.Use_Clause, - iirs.Iir_Kind.If_Statement, - iirs.Iir_Kind.Elsif, - iirs.Iir_Kind.Return_Statement, - iirs.Iir_Kind.Type_Declaration, - iirs.Iir_Kind.Anonymous_Type_Declaration, - iirs.Iir_Kind.Subtype_Declaration, - iirs.Iir_Kind.Function_Declaration, - iirs.Iir_Kind.Function_Body, - iirs.Iir_Kind.Procedure_Declaration, - iirs.Iir_Kind.Procedure_Body, - iirs.Iir_Kind.Component_Instantiation_Statement, - ]: - return - assert False, "unknown node of kind {}".format(kind_image(k)) - - -def concurrent_stmts_iter(n): - """Iterator on concurrent statements in n.""" - k = iirs.Get_Kind(n) - if k == iirs.Iir_Kind.Design_File: - for n1 in chain_iter(iirs.Get_First_Design_Unit(n)): - for n2 in concurrent_stmts_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.Design_Unit: - for n1 in concurrent_stmts_iter(iirs.Get_Library_Unit(n)): - yield n1 - elif k == iirs.Iir_Kind.Entity_Declaration \ - or k == iirs.Iir_Kind.Architecture_Body \ - or k == iirs.Iir_Kind.Block_Statement: - for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): - yield n1 - for n2 in concurrent_stmts_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.For_Generate_Statement: - for n1 in concurrent_stmts_iter(iirs.Get_Generate_Statement_Body(n)): - yield n1 - elif k == iirs.Iir_Kind.If_Generate_Statement: - while n != Null_Iir: - for n1 in concurrent_stmts_iter( - iirs.Get_Generate_Statement_Body(n)): - yield n1 - n = iirs.Get_Generate_Else_Clause(n) - elif k == iirs.Iir_Kind.Case_Generate_Statement: - alt = iirs.Get_Case_Statement_Alternative_Chain(n) - for n1 in chain_iter(alt): - blk = iirs.Get_Associated_Block(n1) - if blk != Null_Iir: - for n2 in concurrent_stmts_iter( - iirs.Get_Generate_Statement_Body(n)): - yield n2 - - -def constructs_iter(n): - """Iterator on library unit, concurrent statements and declarations - that appear directly within a declarative part.""" - if n == thin.Null_Iir: - return - k = iirs.Get_Kind(n) - if k == iirs.Iir_Kind.Design_File: - for n1 in chain_iter(iirs.Get_First_Design_Unit(n)): - for n2 in constructs_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.Design_Unit: - n1 = iirs.Get_Library_Unit(n) - yield n1 - for n2 in constructs_iter(n1): - yield n2 - elif k in [iirs.Iir_Kind.Entity_Declaration, - iirs.Iir_Kind.Architecture_Body, - iirs.Iir_Kind.Block_Statement, - iirs.Iir_Kind.Generate_Statement_Body]: - for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): - yield n1 - for n2 in constructs_iter(n1): - yield n2 - for n1 in chain_iter(iirs.Get_Concurrent_Statement_Chain(n)): - yield n1 - for n2 in constructs_iter(n1): - yield n2 - elif k in [iirs.Iir_Kind.Configuration_Declaration, - iirs.Iir_Kind.Package_Declaration, - iirs.Iir_Kind.Package_Body, - iirs.Iir_Kind.Function_Body, - iirs.Iir_Kind.Procedure_Body, - iirs.Iir_Kind.Protected_Type_Declaration, - iirs.Iir_Kind.Protected_Type_Body, - iirs.Iir_Kind.Process_Statement, - iirs.Iir_Kind.Sensitized_Process_Statement]: - for n1 in chain_iter(iirs.Get_Declaration_Chain(n)): - yield n1 - for n2 in constructs_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.For_Generate_Statement: - n1 = iirs.Get_Generate_Statement_Body(n) - yield n1 - for n2 in constructs_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.If_Generate_Statement: - while n != Null_Iir: - n1 = iirs.Get_Generate_Statement_Body(n) - yield n1 - for n2 in constructs_iter(n1): - yield n2 - n = iirs.Get_Generate_Else_Clause(n) - elif k == iirs.Iir_Kind.Case_Generate_Statement: - alt = iirs.Get_Case_Statement_Alternative_Chain(n) - for n1 in chain_iter(alt): - blk = iirs.Get_Associated_Block(n1) - if blk != Null_Iir: - n2 = iirs.Get_Generate_Statement_Body(blk) - yield n2 - for n3 in constructs_iter(n2): - yield n3 - -def sequential_iter(n): - """Iterator on sequential statements. The first node must be either - a process or a subprogram body.""" - if n == thin.Null_Iir: - return - k = iirs.Get_Kind(n) - if k in [iirs.Iir_Kind.Process_Statement, - iirs.Iir_Kind.Sensitized_Process_Statement, - iirs.Iir_Kind.Function_Body, - iirs.Iir_Kind.Procedure_Body]: - for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): - yield n1 - for n2 in sequential_iter(n1): - yield n2 - elif k == iirs.Iir_Kind.If_Statement: - while True: - n = iirs.Get_Chain(n) - if n == thin.Null_Iir: - break - yield n - for n1 in sequential_iter(n): - yield n1 - elif k == iirs.Iir_Kind.Case_Statement: - for ch in chain_iter(iirs.Get_Case_Statement_Alternative_Chain(n)): - stmt = iirs.Get_Associated_Chain(ch) - if stmt != thin.Null_Iir: - for n1 in chain_iter(stmt): - yield n1 - for n2 in sequential_iter(n1): - yield n2 - elif k in [iirs.Iir_Kind.For_Loop_Statement, - iirs.Iir_Kind.While_Loop_Statement]: - for n1 in chain_iter(iirs.Get_Sequential_Statement_Chain(n)): - yield n1 - for n2 in sequential_iter(n1): - yield n2 - elif k in [iirs.Iir_Kind.Assertion_Statement, - iirs.Iir_Kind.Wait_Statement, - iirs.Iir_Kind.Null_Statement, - iirs.Iir_Kind.Exit_Statement, - iirs.Iir_Kind.Next_Statement, - iirs.Iir_Kind.Return_Statement, - iirs.Iir_Kind.Variable_Assignment_Statement, - iirs.Iir_Kind.Simple_Signal_Assignment_Statement, - iirs.Iir_Kind.Procedure_Call_Statement]: - return - else: - assert False, "unknown node of kind {}".format(kind_image(k)) diff --git a/src/vhdl/python/pnodespy.py b/src/vhdl/python/pnodespy.py index 822680970..d2ea23125 100755 --- a/src/vhdl/python/pnodespy.py +++ b/src/vhdl/python/pnodespy.py @@ -134,8 +134,17 @@ def read_spec_enum(type_name, prefix, class_name): read_enum(pnodes.kind_file, type_name, prefix, class_name) -def do_libghdl_iirs(): +def do_libghdl_nodes(): print('from libghdl import libghdl') + print(""" +Null_Iir = 0 +Null_Iir_List = 0 +Iir_List_All = 1 + +Null_Iir_Flist = 0 +Iir_Flist_Others = 1 +Iir_Flist_All = 2 +""") do_class_kinds() read_spec_enum('Iir_Mode', 'Iir_', 'Iir_Mode') read_spec_enum('Iir_Staticness', '', 'Iir_Staticness') @@ -221,12 +230,22 @@ def do_libghdl_tokens(): def do_libghdl_errorout(): + print("""from ctypes import c_int8, c_int32 +class Error_Record(Structure): + _fields_ = [("origin", c_int8), + ("id", c_int8), + ("file", c_int32), + ("line", c_int32), + ("offset", c_int32), + ("length", c_int32)] +""") + read_enum("../errorout.ads", "Msgid_Type", "(Msgid|Warnid)_", "Msgid", g=lambda m: m.group(1) + '_' + m.group(2)) pnodes.actions.update({'class-kinds': do_class_kinds, - 'libghdl-iirs': do_libghdl_iirs, + 'libghdl-nodes': do_libghdl_nodes, 'libghdl-meta': do_libghdl_meta, 'libghdl-names': do_libghdl_names, 'libghdl-tokens': do_libghdl_tokens, -- cgit v1.2.3