definition module CollectTypes; import typetable; import type_io_read; :: *CollectTypesState = { // Input cts_type_tables :: !*{#TypeTable} // Reserved , cts_collected_types :: !*{#Bool} // already collected types , cts_module_base_indices :: !{#Int} // Output , cts_type_dependencies :: ![(TIO_TypeReference,TIO_TypeReference)] // Reserved , cts_type_dependencies_to_be_collected :: ![(TIO_TypeReference,TIO_TypeReference)] // set of type dependencies to be examined , cts_left_i :: !Int , cts_right_i :: !Int , cts_left_module_i :: !Int , cts_right_module_i :: !Int }; // interne type equivalenties default_collect_types_state :: *CollectTypesState; class collect_types a :: !a !a !*CollectTypesState -> *CollectTypesState; instance collect_types TypeTableTypeReference; init_collect_types :: !Int !Int ![(!TIO_TypeReference,!TIO_TypeReference)] !*CollectTypesState -> !*CollectTypesState; // init_collect_types type_table_left type_table_right types cts collect_types_loop :: !*CollectTypesState -> *CollectTypesState; // computes all dependencies