[m-rev.] for post-commit review: new mdb comand "ambiguity"
Zoltan Somogyi
zs at cs.mu.OZ.AU
Tue Oct 25 14:00:17 AEST 2005
Add a new mdb command "ambiguity" that prints out ambiguous predicate, function
and type names.
doc/user_guide.texi:
Document the new command.
doc/mdb_categories:
Add the new command, as well as some others that should have been added
previously but weren't.
trace/mercury_trace_internal.c:
Add the user interface for the new command.
Fix some old cut-and-paste bugs.
trace/mercury_trace_tables.[ch]:
Add the implementation of the new command.
runtime/mercury_type_tables.[ch]:
Change the signature of the function that return the list of all
type_ctor_infos to also return their number, for use in the new code
in mercury_trace_tables.c.
Convert to four-space indentation.
runtime/mercury_layout_util.c:
runtime/mercury_wrapper.c:
Convert to four-space indentation.
tests/debugger/completion.exp:
tests/debugger/mdb_command_test.inp:
Expect the mdb command added by this diff, as well as the ones added
by Ralph recently.
The output for the library follows.
Zoltan.
Ambiguous predicate and function names:
func float.*/3
func int.*/3
func integer.*/3
func rational.*/3
func robdd.*/3
func float.+/2
func float.+/3
func int.+/2
func int.+/3
func integer.+/2
func integer.+/3
func rational.+/2
func rational.+/3
func robdd.+/3
func cord.++/3
func list.++/3
func pprint.++/3
func string.++/3
func float.-/2
func float.-/3
func int.-/2
func int.-/3
func integer.-/2
func integer.-/3
func rational.-/2
func rational.-/3
func dir.//3
func float.//3
func int.//3
func rational.//3
func int.///3
func integer.///3
func int./\/3
func integer./\/3
pred float.</2
pred int.</2
pred integer.</2
pred rational.</2
func int.<</3
func integer.<</3
pred prolog.=:=/2
func robdd.=:=/3
pred float.=</2
pred int.=</2
pred integer.=</2
pred rational.=</2
func robdd.=</3
pred prolog.=\=/2
func robdd.=\=/3
pred float.>/2
pred int.>/2
pred integer.>/2
pred rational.>/2
pred float.>=/2
pred int.>=/2
pred integer.>=/2
pred rational.>=/2
func int.>>/3
func integer.>>/3
pred set.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2
pred set_tree234.TypeSpecOf__pred__contains__[T = var(V_2)]_0_1/2
pred map.TypeSpecOf__pred__det_insert__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__det_insert__[K = int]_0_1/4
pred map.TypeSpecOf__pred__det_insert__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__det_insert__[K = var(V_2)]_0_1/4
pred map.TypeSpecOf__pred__insert__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__insert__[K = int]_0_1/4
pred map.TypeSpecOf__pred__insert__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__insert__[K = var(V_2)]_0_1/4
pred list.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2
pred set.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred__member__[T = var(V_2)]_0_1/2
pred map.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4
pred tree234.TypeSpecOf__pred__set__[K = var(V_2)]_0_1/4
pred map.TypeSpecOf__pred__update__[K = int]_0_1/4
pred svmap.TypeSpecOf__pred__update__[K = int]_0_1/4
pred tree234.TypeSpecOf__pred__update__[K = int]_0_1/4
pred map.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4
pred svmap.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4
pred tree234.TypeSpecOf__pred__update__[K = var(V_2)]_0_1/4
pred set_ctree234.TypeSpecOf__pred_or_func__contains__[T = var(V_2)]_0_1/2
pred sparse_bitset.TypeSpecOf__pred_or_func__contains__[T = var(V_2)]_0_1/2
pred set_ctree234.TypeSpecOf__pred_or_func__delete__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__delete__[T = var(V_2)]_0_1/3
pred set.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__difference__[T = var(V_2)]_0_1/3
pred set.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_ctree234.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set_tree234.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred svset.TypeSpecOf__pred_or_func__insert__[T = var(V_2)]_0_1/3
pred set.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_ctree234.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set_tree234.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
func sparse_bitset.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred svset.TypeSpecOf__pred_or_func__insert_list__[T = var(V_2)]_0_1/3
pred set.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__intersect__[T = var(V_2)]_0_1/3
pred set.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2
pred set_ordlist.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2
func sparse_bitset.TypeSpecOf__pred_or_func__list_to_set__[T = var(V_2)]_0_1/2
pred map.TypeSpecOf__pred_or_func__lookup__[K = var(V_2)]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__lookup__[K = var(V_2)]_0_1/3
pred map.TypeSpecOf__pred_or_func__search__[K = int]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__search__[K = int]_0_1/3
pred map.TypeSpecOf__pred_or_func__search__[K = var(V_2)]_0_1/3
pred tree234.TypeSpecOf__pred_or_func__search__[K = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__sorted_list_to_set__[T = var(V_2)]_0_1/2
func sparse_bitset.TypeSpecOf__pred_or_func__sorted_list_to_set__[T = var(V_2)]_0_1/2
pred set.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
func set_ctree234.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
pred set_ordlist.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
func set_tree234.TypeSpecOf__pred_or_func__union__[T = var(V_2)]_0_1/3
func int.\/2
func integer.\/2
func int.\//3
func integer.\//3
func float.abs/2
pred int.abs/2
func integer.abs/2
func rational.abs/2
pred multi_map.add/4
pred relation.add/4
pred svmulti_map.add/4
pred svrelation.add/4
pred relation.add_assoc_list/3
pred svrelation.add_assoc_list/3
pred eqvclass.add_element/4
pred relation.add_element/4
pred svrelation.add_element/4
pred relation.add_values/4
pred svrelation.add_values/4
func list.append/3
pred string.append/3
pred bimap.apply_forward_map_to_list/3
pred injection.apply_forward_map_to_list/3
pred bimap.apply_reverse_map_to_list/3
pred injection.apply_reverse_map_to_list/3
pred map.apply_to_list/3
pred multi_map.apply_to_list/3
pred deconstruct.arg/4
pred prolog.arg/3
func std_util.arg/3
pred deconstruct.arg_cc/3
pred std_util.arg_cc/3
pred io.arg_priority/3
func ops.arg_priority/2
func bintree.balance/2
pred set_bbbtree.balance/5
pred io.binary_input_stream_foldl/5
pred io.binary_input_stream_foldl/6
pred io.binary_input_stream_foldl2_io/5
pred io.binary_input_stream_foldl2_io/6
pred io.binary_input_stream_foldl2_io_maybe_stop/5
pred io.binary_input_stream_foldl2_io_maybe_stop/6
pred io.binary_input_stream_foldl_io/4
pred io.binary_input_stream_foldl_io/5
pred io.binary_input_stream_name/3
pred io.binary_input_stream_name/4
pred io.binary_output_stream_name/3
pred io.binary_output_stream_name/4
pred svvarset.bind_var/4
pred varset.bind_var/4
pred svvarset.bind_vars/3
pred varset.bind_vars/3
func bitmap.bitmask/2
func version_bitmap.bitmask/2
func bitmap.bitsmask/2
func version_bitmap.bitsmask/2
pred array.bounds/3
pred array2d.bounds/3
pred bt_array.bounds/3
pred version_array2d.bounds/3
func array.bsearch/4
pred bt_array.bsearch/4
pred array.bsearch_2/6
pred bt_array.bsearch_2/6
func term_to_xml.can_generate_dtd/3
func term_to_xml.can_generate_dtd/4
pred hash_table.char_double_hash/3
pred version_hash_table.char_double_hash/3
pred bitmap.clear/3
pred version_bitmap.clear/3
pred robdd.clear_caches/0
pred robdd.clear_caches/2
func bitmap.clear_filler_bits/2
func version_bitmap.clear_filler_bits/2
pred term.coerce/2
pred varset.coerce/2
func bitmap.complement/2
func version_bitmap.complement/2
func bitmap.complement_2/3
func version_bitmap.complement_2/3
pred relation.compose/3
func std_util.compose/4
func cord.cons/3
func list.cons/3
func construct.construct/4
func std_util.construct/4
func construct.construct_tuple/2
func std_util.construct_tuple/2
pred bag.contains/2
pred bintree_set.contains/2
pred map.contains/2
pred multi_map.contains/2
pred set.contains/2
pred set_bbbtree.contains/2
pred set_ctree234.contains/2
pred set_ordlist.contains/2
pred set_tree234.contains/2
pred set_unordlist.contains/2
pred sparse_bitset.contains/2
pred bimap.contains_key/2
pred injection.contains_key/2
pred bimap.contains_value/2
pred injection.contains_value/2
pred term.context_init/1
pred term.context_init/3
func array.copy/2
func bitmap.copy/2
func version_array.copy/2
func version_array2d.copy/2
func version_bitmap.copy/2
pred store.copy_mutvar/4
pred version_store.copy_mutvar/4
func bintree.count/2
pred map.count/2
pred multi_map.count/2
pred rbtree.count/2
func set.count/2
func set_ctree234.count/2
func set_ordlist.count/2
func set_tree234.count/2
func sparse_bitset.count/2
pred tree234.count/2
pred deconstruct.deconstruct/5
pred rtti_implementation.deconstruct/5
pred rtti_implementation.deconstruct/8
pred std_util.deconstruct/4
func bag.delete/3
func bintree.delete/3
func bintree_set.delete/3
pred hash_table.delete/3
pred list.delete/3
pred map.delete/3
pred multi_map.delete/3
pred multi_map.delete/4
pred rbtree.delete/3
func set.delete/3
func set_bbbtree.delete/3
func set_ctree234.delete/3
func set_ordlist.delete/3
func set_tree234.delete/3
func set_unordlist.delete/3
pred sparse_bitset.delete/3
pred svbag.delete/3
pred svmap.delete/3
pred svmulti_map.delete/3
pred svmulti_map.delete/4
pred svset.delete/3
pred tree234.delete/3
pred version_hash_table.delete/3
pred rbtree.delete_2/5
pred set_tree234.delete_2/4
pred tree234.delete_2/4
pred bag.delete_all/3
pred list.delete_all/3
func queue.delete_all/3
pred svbag.delete_all/3
pred svqueue.delete_all/3
pred bimap.delete_key/3
pred injection.delete_key/3
pred bimap.delete_keys/3
pred injection.delete_keys/3
func bintree_set.delete_list/3
pred map.delete_list/3
func set.delete_list/3
func set_bbbtree.delete_list/3
func set_ctree234.delete_list/3
func set_ordlist.delete_list/3
func set_tree234.delete_list/3
func set_unordlist.delete_list/3
pred sparse_bitset.delete_list/3
pred svmap.delete_list/3
pred svset.delete_list/3
pred bimap.delete_value/3
pred injection.delete_value/3
pred bimap.delete_values/3
pred injection.delete_values/3
pred svvarset.delete_var/3
pred varset.delete_var/3
pred svvarset.delete_vars/3
pred varset.delete_vars/3
func bintree.depth/2
func stack.depth/2
pred deconstruct.det_arg/4
pred prolog.det_arg/3
func std_util.det_arg/3
pred rtti_implementation.det_dynamic_cast/2
pred string.det_dynamic_cast/2
func assoc_list.det_elem/3
func map.det_elem/3
pred bimap.det_insert/4
pred hash_table.det_insert/4
pred injection.det_insert/4
func map.det_insert/4
pred multi_map.det_insert/4
pred svbimap.det_insert/4
pred svmap.det_insert/4
pred svmulti_map.det_insert/4
pred version_hash_table.det_insert/4
pred bimap.det_insert_from_assoc_list/3
pred injection.det_insert_from_assoc_list/3
func map.det_insert_from_assoc_list/3
pred svmap.det_insert_from_assoc_list/3
pred bimap.det_insert_from_corresponding_lists/4
pred injection.det_insert_from_corresponding_lists/4
func map.det_insert_from_corresponding_lists/4
pred svmap.det_insert_from_corresponding_lists/4
func std_util.det_make_type/3
func type_desc.det_make_type/3
func bag.det_remove/3
pred map.det_remove/4
pred multi_map.det_remove/4
pred svbag.det_remove/3
pred svmap.det_remove/4
pred svmulti_map.det_remove/4
func bag.det_remove_list/3
pred svbag.det_remove_list/3
func bag.det_remove_set/3
pred svbag.det_remove_set/3
pred multi_map.det_replace/4
pred svmulti_map.det_replace/4
pred hash_table.det_update/4
pred injection.det_update/4
func map.det_update/4
pred multi_map.det_update/4
pred svmap.det_update/4
pred svmulti_map.det_update/4
pred version_hash_table.det_update/4
pred relation.dfs/2
pred relation.dfs/3
pred relation.dfs/5
pred relation.dfsrev/2
pred relation.dfsrev/3
pred relation.dfsrev/5
func bitmap.difference/3
func set.difference/3
func set_bbbtree.difference/3
func set_ctree234.difference/3
func set_ordlist.difference/3
func set_tree234.difference/3
func set_unordlist.difference/3
pred sparse_bitset.difference/3
func version_bitmap.difference/3
pred set_tree234.difference_2/3
pred set_unordlist.difference_2/3
func sparse_bitset.difference_2/3
func int.div/3
func integer.div/3
pred set.divide/4
pred set_ctree234.divide/4
pred set_ordlist.divide/4
pred set_tree234.divide/4
pred set_unordlist.divide/4
pred set_ordlist.divide_2/6
pred set_tree234.divide_2/6
pred set_unordlist.divide_2/6
pred set.divide_by_set/4
pred set_ctree234.divide_by_set/4
pred set_ordlist.divide_by_set/4
pred set_tree234.divide_by_set/4
pred io.do_write_univ/4
pred io.do_write_univ/5
func pprint.doc/2
func pprint.doc/3
pred float.domain_checks/0
pred int.domain_checks/0
pred math.domain_checks/0
pred hash_table.double_munge/6
pred version_hash_table.double_munge/6
func list.duplicate/3
func list.duplicate/4
pred hash_table.dynamic_cast_to_array/2
pred pprint.dynamic_cast_to_array/2
pred version_hash_table.dynamic_cast_to_array/2
func array.elem/3
func array2d.elem/4
func assoc_list.elem/3
func bt_array.elem/3
func hash_table.elem/3
func map.elem/3
func string.elem/3
func version_array.elem/3
func version_array2d.elem/4
func version_hash_table.elem/3
func version_store.elem/3
func array.elem :=/4
func array2d.elem :=/5
func bt_array.elem :=/4
func hash_table.elem :=/4
func map.elem :=/4
func robdd.elem :=/4
func version_array.elem :=/4
func version_array2d.elem :=/5
func version_hash_table.elem :=/4
func version_store.elem :=/4
func cord.empty/1
pred set.empty/1
pred set_bbbtree.empty/1
pred set_ctree234.empty/1
pred set_ordlist.empty/1
pred set_tree234.empty/1
pred set_unordlist.empty/1
pred sparse_bitset.empty/1
func version_array.empty/1
pred eqvclass.ensure_element/3
pred sveqvclass.ensure_element/3
pred eqvclass.ensure_equivalence/4
pred sveqvclass.ensure_equivalence/4
pred bintree_set.equal/2
pred cord.equal/2
pred queue.equal/2
pred set.equal/2
pred set_bbbtree.equal/2
pred set_ctree234.equal/2
pred set_ordlist.equal/2
pred set_tree234.equal/2
pred set_unordlist.equal/2
pred sparse_bitset.equal/2
pred parser.error/3
pred require.error/1
func dir.expand/2
func hash_table.expand/2
func version_hash_table.expand/2
func array.fetch_items/4
func bt_array.fetch_items/4
func list.filter/3
pred list.filter/4
func set.filter/3
func sparse_bitset.filter/3
func list.filter_map/3
pred list.filter_map/4
func set.filter_map/3
func set_bbbtree.filter_map/3
func set_ctree234.filter_map/3
func set_ordlist.filter_map/3
func set_tree234.filter_map/3
func set_unordlist.filter_map/3
pred set_ctree234.filter_map_func/4
pred set_tree234.filter_map_func/4
pred set_ctree234.filter_map_pred/4
pred set_tree234.filter_map_pred/4
func hash_table.find_slot/3
func version_hash_table.find_slot/3
func hash_table.find_slot_2/5
func version_hash_table.find_slot_2/5
pred set_ctree234.fix_2node_t0/5
pred set_tree234.fix_2node_t0/5
pred tree234.fix_2node_t0/6
pred set_ctree234.fix_2node_t1/5
pred set_tree234.fix_2node_t1/5
pred tree234.fix_2node_t1/6
pred set_ctree234.fix_3node_t0/7
pred set_tree234.fix_3node_t0/7
pred tree234.fix_3node_t0/9
pred set_ctree234.fix_3node_t1/7
pred set_tree234.fix_3node_t1/7
pred tree234.fix_3node_t1/9
pred set_ctree234.fix_3node_t2/7
pred set_tree234.fix_3node_t2/7
pred tree234.fix_3node_t2/9
pred set_ctree234.fix_4node_t0/9
pred set_tree234.fix_4node_t0/9
pred tree234.fix_4node_t0/12
pred set_ctree234.fix_4node_t1/9
pred set_tree234.fix_4node_t1/9
pred tree234.fix_4node_t1/12
pred set_ctree234.fix_4node_t2/9
pred set_tree234.fix_4node_t2/9
pred tree234.fix_4node_t2/12
pred set_ctree234.fix_4node_t3/9
pred set_tree234.fix_4node_t3/9
pred tree234.fix_4node_t3/12
pred bitmap.flip/3
pred version_bitmap.flip/3
func float.float/2
func integer.float/2
pred hash_table.float_double_hash/3
pred version_hash_table.float_double_hash/3
pred io.flush_binary_output/2
pred io.flush_binary_output/3
pred io.flush_output/2
pred io.flush_output/3
func hash_table.fold/4
pred set.fold/4
func set_bbbtree.fold/4
func set_ctree234.fold/4
func set_ordlist.fold/4
func set_tree234.fold/4
func set_unordlist.fold/4
func version_hash_table.fold/4
func array.foldl/4
pred bimap.foldl/4
func cord.foldl/4
func list.foldl/4
pred map.foldl/4
pred rbtree.foldl/4
pred sparse_bitset.foldl/4
pred string.foldl/4
pred tree234.foldl/4
func version_array.foldl/4
pred bimap.foldl2/6
pred dir.foldl2/6
pred list.foldl2/6
pred map.foldl2/6
pred rbtree.foldl2/6
pred sparse_bitset.foldl2/6
pred string.foldl2/6
pred tree234.foldl2/6
pred bimap.foldl3/8
pred list.foldl3/8
pred map.foldl3/8
pred rbtree.foldl3/8
pred tree234.foldl3/8
pred list.foldl4/10
pred map.foldl4/10
pred tree234.foldl4/10
func array.foldr/4
func cord.foldr/4
func list.foldr/4
pred sparse_bitset.foldr/4
pred string.foldr/4
func version_array.foldr/4
pred io.format/4
pred io.format/5
pred string.format/3
func term_io.format_constant/2
func term_io.format_constant/3
func mdbcomp.slice_and_dice.format_float/3
func string.format_float/5
func bimap.forward_map/2
pred injection.forward_map/2
pred bimap.forward_search/3
pred injection.forward_search/3
pred bimap.from_assoc_list/2
func hash_table.from_assoc_list/3
pred map.from_assoc_list/2
pred multi_map.from_assoc_list/2
func pqueue.from_assoc_list/2
func rbtree.from_assoc_list/2
pred relation.from_assoc_list/2
func assoc_list.from_corresponding_lists/3
pred bimap.from_corresponding_lists/3
func bintree.from_corresponding_lists/3
pred map.from_corresponding_lists/3
pred multi_map.from_corresponding_lists/3
pred bintree.from_corresponding_lists_2/4
pred multi_map.from_corresponding_lists_2/4
pred char.from_int/2
func enum.from_int/2
func string.from_int/2
func array.from_list/2
func bag.from_list/2
func bintree.from_list/2
func bt_array.from_list/3
func cord.from_list/2
func queue.from_list/2
func set.from_list/2
func set_bbbtree.from_list/2
func set_ordlist.from_list/2
func set_unordlist.from_list/2
func version_array.from_list/2
func bag.from_set/2
func sparse_bitset.from_set/2
pred map.from_sorted_assoc_list/2
pred multi_map.from_sorted_assoc_list/2
func bintree.from_sorted_list/2
func set.from_sorted_list/2
func set_bbbtree.from_sorted_list/2
func set_ordlist.from_sorted_list/2
func set_unordlist.from_sorted_list/2
pred deconstruct.functor/4
pred std_util.functor/3
pred gc.garbage_collect/0
pred gc.garbage_collect/2
pred hash_table.generic_double_hash/3
pred version_hash_table.generic_double_hash/3
func bitmap.get/3
pred queue.get/3
func robdd.get/3
pred svqueue.get/3
func version_bitmap.get/3
pred queue.get_from_back/3
pred svqueue.get_from_back/3
pred construct.get_functor/5
pred rtti_implementation.get_functor/5
pred std_util.get_functor/5
pred construct.get_functor_ordinal/3
pred std_util.get_functor_ordinal/3
pred construct.get_functor_with_names/6
pred rtti_implementation.get_functor_with_names/6
pred std_util.get_functor_with_names/6
pred io.get_line_number/3
pred io.get_line_number/4
pred std_util.get_mutvar/2
pred store.get_mutvar/4
pred version_store.get_mutvar/4
pred io.get_output_line_number/3
pred io.get_output_line_number/4
pred getopt.get_short_option_arg/6
pred getopt_io.get_short_option_arg/6
pred lexer.get_token/4
pred parser.get_token/3
pred parser.get_token/4
func group.group/3
func pprint.group/2
pred getopt.handle_long_option/13
pred getopt_io.handle_long_option/15
pred getopt.handle_short_options/10
pred getopt_io.handle_short_options/12
pred std_util.has_type/2
pred type_desc.has_type/2
func float.hash/2
pred string.hash/2
func integer.head/2
func list.head/2
pred cord.head_tail/3
func integer.head_tail/2
pred io.ignore_whitespace/3
pred io.ignore_whitespace/4
pred array.in_bounds/2
pred array2d.in_bounds/3
pred bt_array.in_bounds/2
pred version_array2d.in_bounds/3
pred bitmap.in_range/2
pred version_bitmap.in_range/2
func array.init/3
func bag.init/1
pred bimap.init/1
pred bintree.init/1
func bintree_set.init/1
func bt_array.init/4
func counter.init/2
pred eqvclass.init/1
func graph.init/1
func group.init/1
pred injection.init/1
func map.init/1
pred multi_map.init/1
pred pqueue.init/1
func queue.init/1
pred random.init/2
pred rbtree.init/1
pred relation.init/1
func set.init/1
func set_bbbtree.init/1
func set_ctree234.init/1
func set_ordlist.init/1
func set_tree234.init/1
func set_unordlist.init/1
pred sparse_bitset.init/1
func stack.init/1
pred tree234.init/1
pred varset.init/1
func version_array.init/3
func version_array2d.init/4
pred getopt.init_option_table/2
pred getopt_io.init_option_table/2
pred getopt.init_option_table_multi/2
pred getopt_io.init_option_table_multi/2
pred io.init_state/2
pred parser.init_state/4
func bitmap.initializer/2
func version_bitmap.initializer/2
pred io.input_stream_foldl/5
pred io.input_stream_foldl/6
pred io.input_stream_foldl2_io/5
pred io.input_stream_foldl2_io/6
pred io.input_stream_foldl2_io_maybe_stop/5
pred io.input_stream_foldl2_io_maybe_stop/6
pred io.input_stream_foldl_io/4
pred io.input_stream_foldl_io/5
pred io.input_stream_name/3
pred io.input_stream_name/4
func bag.insert/3
pred bimap.insert/4
pred bintree.insert/4
func bintree_set.insert/3
func group.insert/3
pred injection.insert/4
pred list.insert/3
func map.insert/4
pred multi_map.insert/4
pred pqueue.insert/4
pred rbtree.insert/4
func robdd.insert/3
func set.insert/3
func set_bbbtree.insert/3
func set_ctree234.insert/3
func set_ordlist.insert/3
func set_tree234.insert/3
func set_unordlist.insert/3
pred sparse_bitset.insert/3
pred svbag.insert/3
pred svbimap.insert/4
pred svmap.insert/4
pred svmulti_map.insert/4
pred svset.insert/3
pred tree234.insert/4
pred set_ctree234.insert2/4
pred set_tree234.insert2/3
pred tree234.insert2/4
pred set_ctree234.insert3/4
pred set_tree234.insert3/3
pred tree234.insert3/4
pred pqueue.insert_2/6
pred rbtree.insert_2/4
func sparse_bitset.insert_2/3
pred bimap.insert_from_assoc_list/3
pred injection.insert_from_assoc_list/3
pred array.insert_items/4
pred bt_array.insert_items/4
func bag.insert_list/3
func bintree_set.insert_list/3
func set.insert_list/3
func set_bbbtree.insert_list/3
func set_ctree234.insert_list/3
func set_ordlist.insert_list/3
func set_tree234.insert_list/3
func set_unordlist.insert_list/3
pred sparse_bitset.insert_list/3
pred svbag.insert_list/3
pred svset.insert_list/3
func bag.insert_set/3
pred svbag.insert_set/3
pred hash_table.int_double_hash/3
pred version_hash_table.int_double_hash/3
func bitmap.int_offset/2
func version_bitmap.int_offset/2
pred bag.intersect/2
func bag.intersect/3
func bintree_set.intersect/3
func bitmap.intersect/3
func map.intersect/4
func set.intersect/3
func set_bbbtree.intersect/3
func set_ctree234.intersect/3
func set_ordlist.intersect/3
func set_tree234.intersect/3
func set_unordlist.intersect/3
pred sparse_bitset.intersect/3
func version_bitmap.intersect/3
pred bag.intersect_2/4
pred map.intersect_2/5
pred set_tree234.intersect_2/4
pred set_unordlist.intersect_2/4
func sparse_bitset.intersect_2/3
func set.intersect_list/2
func set_bbbtree.intersect_list/2
func set_ctree234.intersect_list/2
func set_ordlist.intersect_list/2
func set_tree234.intersect_list/2
func set_unordlist.intersect_list/2
pred map.inverse_search/3
pred multi_map.inverse_search/3
pred char.is_alnum_or_underscore/1
pred string.is_alnum_or_underscore/1
pred char.is_alpha/1
pred string.is_alpha/1
pred char.is_alpha_or_underscore/1
pred string.is_alpha_or_underscore/1
pred bitmap.is_clear/2
pred version_bitmap.is_clear/2
pred bag.is_empty/1
pred bimap.is_empty/1
pred injection.is_empty/1
pred list.is_empty/1
pred map.is_empty/1
pred multi_map.is_empty/1
pred queue.is_empty/1
pred rbtree.is_empty/1
pred stack.is_empty/1
pred tree234.is_empty/1
pred varset.is_empty/1
pred queue.is_full/1
pred stack.is_full/1
pred term.is_ground/1
pred term.is_ground/2
pred term.is_ground_2/1
pred term.is_ground_2/2
pred bintree_set.is_member/2
pred eqvclass.is_member/2
pred set.is_member/3
pred set_bbbtree.is_member/3
func set_ctree234.is_member/3
pred set_ordlist.is_member/3
func set_tree234.is_member/3
pred set_unordlist.is_member/3
pred bitmap.is_set/2
pred version_bitmap.is_set/2
func assoc_list.keys/2
func bintree.keys/2
pred injection.keys/2
pred map.keys/2
pred multi_map.keys/2
pred rbtree.keys/2
pred tree234.keys/2
pred bintree.keys_2/3
pred tree234.keys_2/3
func io.lambda_array_opt_191/4
func pprint.lambda_array_opt_191/4
func string.lambda_array_opt_191/4
func term.lambda_array_opt_191/4
pred construct.lambda_list_opt_178/5
pred cord.lambda_list_opt_178/5
pred dir.lambda_list_opt_178/5
pred exception.lambda_list_opt_178/5
pred multi_map.lambda_list_opt_178/5
pred pprint.lambda_list_opt_178/5
pred relation.lambda_list_opt_178/5
pred robdd.lambda_list_opt_178/5
pred set.lambda_list_opt_178/5
pred set_bbbtree.lambda_list_opt_178/5
pred set_ordlist.lambda_list_opt_178/5
pred set_unordlist.lambda_list_opt_178/5
pred std_util.lambda_list_opt_178/5
pred string.lambda_list_opt_178/5
pred term.lambda_list_opt_178/5
pred term_to_xml.lambda_list_opt_178/5
pred cord.lambda_list_opt_283/6
pred multi_map.lambda_list_opt_283/6
pred relation.lambda_list_opt_283/6
pred robdd.lambda_list_opt_283/6
pred set.lambda_list_opt_283/6
pred set_bbbtree.lambda_list_opt_283/6
pred set_ordlist.lambda_list_opt_283/6
pred set_unordlist.lambda_list_opt_283/6
pred string.lambda_list_opt_283/6
pred set.lambda_list_opt_392/5
pred set_bbbtree.lambda_list_opt_392/5
pred set_ordlist.lambda_list_opt_392/5
pred set_unordlist.lambda_list_opt_392/5
pred bimap.lambda_map_opt_176/8
pred injection.lambda_map_opt_176/8
pred multi_map.lambda_map_opt_176/8
pred robdd.lambda_map_opt_176/8
func pprint.lambda_sparse_bitset_opt_118/4
func relation.lambda_sparse_bitset_opt_118/4
func robdd.lambda_sparse_bitset_opt_118/4
pred pprint.lambda_sparse_bitset_opt_227/6
pred relation.lambda_sparse_bitset_opt_227/6
pred robdd.lambda_sparse_bitset_opt_227/6
pred hash_table.lambda_string_opt_449/5
pred term_io.lambda_string_opt_449/5
pred version_hash_table.lambda_string_opt_449/5
pred getopt_io.lambda_string_opt_525/2
pred pprint.lambda_string_opt_525/2
pred getopt_io.lambda_string_opt_779/2
pred pprint.lambda_string_opt_779/2
func cord.length/2
func integer.length/2
func list.length/2
func queue.length/2
pred string.length/2
pred deconstruct.limited_deconstruct/6
pred std_util.limited_deconstruct/5
pred deconstruct.limited_deconstruct_cc/3
pred std_util.limited_deconstruct_cc/3
func cord.list/2
func version_array.list/2
func bintree_set.list_to_set/2
func set.list_to_set/2
func set_bbbtree.list_to_set/2
func set_ctree234.list_to_set/2
func set_ordlist.list_to_set/2
func set_tree234.list_to_set/2
func set_unordlist.list_to_set/2
pred sparse_bitset.list_to_set/2
pred set_tree234.list_to_set_2/3
func sparse_bitset.list_to_set_2/3
func array2d.lists/2
func version_array2d.lists/2
func array2d.lists_2/7
func version_array2d.lists_2/7
pred int.log2/2
func math.log2/2
pred int.log2_2/3
func math.log2_2/2
func array.lookup/3
pred bimap.lookup/3
func bintree.lookup/3
func bt_array.lookup/3
func hash_table.lookup/3
pred injection.lookup/3
func map.lookup/3
pred multi_map.lookup/3
pred rbtree.lookup/3
pred relation.lookup/3
pred tree234.lookup/3
func version_array.lookup/3
func version_hash_table.lookup/3
func version_store.lookup/3
func getopt.lookup_accumulating_option/3
func getopt_io.lookup_accumulating_option/3
func getopt.lookup_bool_option/3
func getopt_io.lookup_bool_option/3
func getopt.lookup_int_option/3
func getopt_io.lookup_int_option/3
func getopt.lookup_maybe_int_option/3
func getopt_io.lookup_maybe_int_option/3
func getopt.lookup_maybe_string_option/3
func getopt_io.lookup_maybe_string_option/3
pred varset.lookup_name/3
pred varset.lookup_name/4
func getopt.lookup_string_option/3
func getopt_io.lookup_string_option/3
pred bintree.lower_bound_lookup/4
pred map.lower_bound_lookup/4
pred rbtree.lower_bound_lookup/4
pred tree234.lower_bound_lookup/4
pred bintree.lower_bound_search/4
pred map.lower_bound_search/4
pred rbtree.lower_bound_search/4
pred tree234.lower_bound_search/4
func string.lstrip/2
func string.lstrip/3
func array.make_empty_array/1
func bt_array.make_empty_array/2
pred io.make_err_msg/4
pred io.make_err_msg/5
func set.make_singleton_set/2
func set_bbbtree.make_singleton_set/2
func set_ctree234.make_singleton_set/2
func set_ordlist.make_singleton_set/2
func set_tree234.make_singleton_set/2
func set_unordlist.make_singleton_set/2
func sparse_bitset.make_singleton_set/2
pred io.make_temp/3
pred io.make_temp/5
func std_util.make_type/3
func type_desc.make_type/3
func array.map/3
func cord.map/3
func list.map/3
func set.map/3
func set_bbbtree.map/3
func set_ctree234.map/3
func set_ordlist.map/3
func set_tree234.map/3
func set_unordlist.map/3
pred list.map_foldl/5
pred map.map_foldl/5
pred tree234.map_foldl/5
pred list.map_foldl2/7
pred map.map_foldl2/7
pred tree234.map_foldl2/7
pred set_ctree234.map_func/4
pred set_tree234.map_func/4
pred bimap.map_keys/3
pred injection.map_keys/3
pred set_ctree234.map_pred/4
pred set_tree234.map_pred/4
func assoc_list.map_values/3
pred bimap.map_values/3
pred injection.map_values/3
pred map.map_values/3
pred rbtree.map_values/3
pred tree234.map_values/3
func array.max/2
func bt_array.max/2
func float.max/1
func float.max/3
pred int.max/3
func version_array.max/2
func map.max_key/2
func tree234.max_key/2
pred bintree_set.member/2
pred cord.member/2
pred list.member/2
pred list.member/3
pred map.member/3
pred multi_map.member/3
pred rbtree.member/3
pred set.member/2
pred set_bbbtree.member/2
pred set_ordlist.member/2
pred set_tree234.member/2
pred set_unordlist.member/2
pred sparse_bitset.member/2
pred tree234.member/3
pred injection.merge/3
func list.merge/3
func list.merge/4
pred map.merge/3
pred multi_map.merge/3
pred varset.merge/5
func list.merge_and_remove_dups/3
func list.merge_and_remove_dups/4
pred varset.merge_subst/4
pred varset.merge_subst/5
func array.min/2
func bt_array.min/2
func float.min/1
func float.min/3
pred int.min/3
func map.min_key/2
func tree234.min_key/2
func int.mod/3
func integer.mod/3
func float.multiply_by_pow/4
func int.multiply_by_pow/4
func hash_table.munge/4
func version_hash_table.munge/4
func hash_table.munge_factor_a/1
func version_hash_table.munge_factor_a/1
func hash_table.munge_factor_b/1
func version_hash_table.munge_factor_b/1
pred svvarset.name_var/4
pred varset.name_var/4
pred getopt.need_arg/2
pred getopt_io.need_arg/2
func array2d.new/4
func bitmap.new/3
func hash_table.new/4
pred store.new/1
func version_array.new/3
func version_array2d.new/4
func version_bitmap.new/3
func version_hash_table.new/4
func version_store.new/1
pred store.new_cyclic_mutvar/4
pred version_store.new_cyclic_mutvar/4
func hash_table.new_default/2
func version_hash_table.new_default/2
pred eqvclass.new_element/3
pred sveqvclass.new_element/3
pred eqvclass.new_equivalence/4
pred sveqvclass.new_equivalence/4
pred svvarset.new_maybe_named_var/4
pred varset.new_maybe_named_var/4
pred std_util.new_mutvar/2
pred store.new_mutvar/4
pred version_store.new_mutvar/4
pred svvarset.new_named_var/4
pred varset.new_named_var/4
pred svvarset.new_uniquely_named_var/4
pred varset.new_uniquely_named_var/4
pred svvarset.new_var/3
pred varset.new_var/3
pred svvarset.new_vars/4
pred varset.new_vars/4
pred io.nl/2
pred io.nl/3
pred std_util.non_cc_call/4
pred std_util.non_cc_call/5
pred construct.null/1
pred rtti_implementation.null/1
func bitmap.num_bits/2
func version_bitmap.num_bits/2
func hash_table.num_buckets/2
func version_hash_table.num_buckets/2
func construct.num_functors/2
func rtti_implementation.num_functors/2
func std_util.num_functors/2
func bitmap.num_ints_required/2
func version_bitmap.num_ints_required/2
func hash_table.num_occupants/2
func version_hash_table.num_occupants/2
pred getopt.numeric_argument/3
pred getopt_io.numeric_argument/3
func integer.one/1
func rational.one/1
func robdd.one/1
pred map.optimize/2
pred multi_map.optimize/2
pred io.output_stream_name/3
pred io.output_stream_name/4
pred bimap.overlay/3
pred injection.overlay/3
pred map.overlay/3
pred bimap.overlay_2/3
pred map.overlay_2/3
func pprint.packed/3
func pprint.packed/4
func pprint.packed_cs/2
func pprint.packed_cs/3
pred parser.peek_token/3
pred parser.peek_token/4
func float.pow/3
pred int.pow/3
pred integer.pow/3
func math.pow/3
func std_util.pow/4
func set.power_intersect/2
func set_bbbtree.power_intersect/2
func set_ctree234.power_intersect/2
func set_ordlist.power_intersect/2
func set_tree234.power_intersect/2
func set_unordlist.power_intersect/2
func set.power_union/2
func set_bbbtree.power_union/2
func set_ctree234.power_union/2
func set_ordlist.power_union/2
func set_tree234.power_union/2
func set_unordlist.power_union/2
pred set_ordlist.power_union_2/3
pred set_tree234.power_union_2/3
pred set_unordlist.power_union_2/3
pred io.print/3
pred io.print/4
pred io.print/5
pred getopt.process_arguments/9
pred getopt_io.process_arguments/11
pred getopt.process_negated_option/7
pred getopt_io.process_negated_option/7
pred getopt.process_option/9
pred getopt_io.process_option/11
pred getopt.process_options/4
pred getopt.process_options/5
pred getopt_io.process_options/6
pred getopt_io.process_options/7
pred getopt.process_options_track/7
pred getopt_io.process_options_track/9
pred getopt.process_special/8
pred getopt_io.process_special/8
func queue.put/3
pred svqueue.put/3
func queue.put_list/3
pred svqueue.put_list/3
pred queue.put_list_on_front/3
pred svqueue.put_list_on_front/3
pred queue.put_on_front/3
pred svqueue.put_on_front/3
pred io.putback_byte/3
pred io.putback_byte/4
pred io.putback_char/3
pred io.putback_char/4
pred term_io.quote_atom/3
pred term_io.quote_atom/4
func term_io.quoted_atom/2
func term_io.quoted_atom/3
pred random.random/3
pred random.random/5
func rational.rational/2
func rational.rational/3
pred io.read/3
pred io.read/4
pred io.read_binary/3
pred io.read_binary/4
pred io.read_binary_file/3
pred io.read_binary_file/4
pred io.read_byte/3
pred io.read_byte/4
pred io.read_char/3
pred io.read_char/4
pred io.read_file/3
pred io.read_file/4
pred io.read_file_as_string/3
pred io.read_file_as_string/4
pred io.read_from_string/6
pred io.read_from_string/7
pred io.read_line/3
pred io.read_line/4
pred io.read_line_as_string/3
pred io.read_line_as_string/4
pred parser.read_term/3
pred parser.read_term/4
pred term_io.read_term/3
pred parser.read_term_from_string/4
pred parser.read_term_from_string/6
pred parser.read_term_from_string_with_op_table/5
pred parser.read_term_from_string_with_op_table/7
pred parser.read_term_with_op_table/4
pred parser.read_term_with_op_table/5
pred term_io.read_term_with_op_table/4
pred io.read_word/3
pred io.read_word/4
func int.rem/3
func integer.rem/3
pred assoc_list.remove/4
pred bag.remove/3
pred bintree.remove/4
pred bintree_set.remove/3
pred map.remove/4
pred multi_map.remove/4
pred pqueue.remove/4
pred rbtree.remove/3
pred rbtree.remove/4
pred relation.remove/4
pred set.remove/3
pred set_bbbtree.remove/3
pred set_ctree234.remove/3
pred set_ordlist.remove/3
pred set_tree234.remove/3
pred set_unordlist.remove/3
pred sparse_bitset.remove/3
pred svbag.remove/3
pred svmap.remove/4
pred svmulti_map.remove/4
pred svrelation.remove/4
pred svset.remove/3
pred tree234.remove/4
pred pqueue.remove_2/3
pred set_tree234.remove_2/4
pred tree234.remove_2/5
func list.remove_adjacent_dups/2
pred list.remove_adjacent_dups/3
pred list.remove_adjacent_dups_2/3
pred list.remove_adjacent_dups_2/4
pred bag.remove_all/3
pred svbag.remove_all/3
pred relation.remove_assoc_list/3
pred svrelation.remove_assoc_list/3
func eqvclass.remove_equivalent_elements/3
pred sveqvclass.remove_equivalent_elements/3
pred rbtree.remove_largest/4
pred set_bbbtree.remove_largest/3
pred set.remove_least/3
pred set_bbbtree.remove_least/3
pred set_ctree234.remove_least/3
pred set_ordlist.remove_least/3
pred set_tree234.remove_least/3
pred set_unordlist.remove_least/3
pred sparse_bitset.remove_least/3
pred svset.remove_least/3
pred bag.remove_list/3
pred bintree_set.remove_list/3
pred set.remove_list/3
pred set_bbbtree.remove_list/3
pred set_ctree234.remove_list/3
pred set_ordlist.remove_list/3
pred set_tree234.remove_list/3
pred set_unordlist.remove_list/3
pred sparse_bitset.remove_list/3
pred svbag.remove_list/3
pred svset.remove_list/3
pred bag.remove_set/3
pred svbag.remove_set/3
pred bag.remove_smallest/3
pred map.remove_smallest/4
pred multi_map.remove_smallest/4
pred rbtree.remove_smallest/4
pred svbag.remove_smallest/3
pred svmap.remove_smallest/4
pred svmulti_map.remove_smallest/4
pred tree234.remove_smallest/4
pred list.remove_suffix/3
pred string.remove_suffix/3
pred list.replace/4
pred string.replace/4
func list.replace_all/4
pred string.replace_all/4
func string.replace_all/7
pred benchmarking.report_full_memory_stats/0
pred io.report_full_memory_stats/2
pred require.report_lookup_error/2
pred require.report_lookup_error/3
pred benchmarking.report_stats/0
pred io.report_stats/2
pred io.report_stats/3
func array.resize/4
func bitmap.resize/4
func bt_array.resize/5
pred svarray.resize/4
pred version_array.resize/4
func version_array2d.resize/5
pred version_bitmap.resize/4
func version_store.resize/3
func robdd.restrict_filter/3
func robdd.restrict_filter/4
pred exception.rethrow/1
func exception.rethrow/2
pred bimap.reverse_lookup/3
pred injection.reverse_lookup/3
pred relation.reverse_lookup/3
func bimap.reverse_map/2
pred injection.reverse_map/2
func map.reverse_map/2
pred bimap.reverse_search/3
pred injection.reverse_search/3
pred robdd.robdd_to_dot/4
pred robdd.robdd_to_dot/5
func string.rstrip/2
func string.rstrip/3
pred io.same_array_elem_type/2
pred rtti_implementation.same_array_elem_type/2
pred string.same_array_elem_type/2
pred io.same_private_builtin_type/2
pred string.same_private_builtin_type/2
pred assoc_list.search/3
pred bimap.search/3
pred bintree.search/3
pred hash_table.search/3
pred injection.search/3
func map.search/3
pred multi_map.search/3
pred rbtree.search/3
pred tree234.search/3
pred version_hash_table.search/3
pred map.select/3
pred multi_map.select/3
pred svvarset.select/3
pred varset.select/3
pred array.semidet_lookup/3
pred bt_array.semidet_lookup/3
pred array.semidet_set/4
pred bt_array.semidet_set/4
pred svarray.semidet_set/4
pred array.semidet_slow_set/4
pred svarray.semidet_slow_set/4
func array.set/4
pred array2d.set/5
pred bimap.set/4
func bintree.set/4
pred bitmap.set/3
func bt_array.set/4
pred hash_table.set/4
pred injection.set/4
pred map.set/4
pred multi_map.set/4
pred rbtree.set/4
func set.set/2
pred svarray.set/4
pred svbimap.set/4
pred svmap.set/4
pred svmulti_map.set/4
pred tree234.set/4
pred version_array.set/4
pred version_array2d.set/5
pred version_bitmap.set/3
pred version_hash_table.set/4
func version_store.set/4
pred injection.set_2/6
pred rbtree.set_2/4
pred bimap.set_from_assoc_list/3
pred injection.set_from_assoc_list/3
func map.set_from_assoc_list/3
pred svmap.set_from_assoc_list/3
pred bimap.set_from_corresponding_lists/4
pred injection.set_from_corresponding_lists/4
func map.set_from_corresponding_lists/4
pred svmap.set_from_corresponding_lists/4
pred io.set_line_number/3
pred io.set_line_number/4
pred std_util.set_mutvar/2
pred store.set_mutvar/4
pred version_store.set_mutvar/4
pred io.set_output_line_number/3
pred io.set_output_line_number/4
func array.shrink/3
func bt_array.shrink/4
pred svarray.shrink/3
func integer.signum/2
func rational.signum/2
pred bintree_set.singleton_set/2
pred set.singleton_set/2
pred set_bbbtree.singleton_set/2
pred set_ctree234.singleton_set/2
pred set_ordlist.singleton_set/2
pred set_tree234.singleton_set/2
pred set_unordlist.singleton_set/2
pred sparse_bitset.singleton_set/2
func array.size/2
func bt_array.size/2
pred robdd.size/3
pred robdd.size/4
pred set_bbbtree.size/2
func version_array.size/2
func version_store.size/2
func array.slow_set/4
pred svarray.slow_set/4
func array.sort/2
func list.sort/2
func list.sort/3
func list.sort_and_remove_dups/2
pred list.sort_and_remove_dups/3
func bintree_set.sorted_list_to_set/2
func set.sorted_list_to_set/2
func set_bbbtree.sorted_list_to_set/2
func set_ctree234.sorted_list_to_set/2
func set_ordlist.sorted_list_to_set/2
func set_tree234.sorted_list_to_set/2
func set_unordlist.sorted_list_to_set/2
pred sparse_bitset.sorted_list_to_set/2
pred set_ctree234.split_four/4
pred set_tree234.split_four/4
pred tree234.split_four/5
func string.string/2
func string.string/3
pred string.string/4
pred hash_table.string_double_hash/3
pred version_hash_table.string_double_hash/3
pred lexer.string_get_token_list/4
pred lexer.string_get_token_list/5
pred string.sub_string_search/3
pred string.sub_string_search/4
pred bintree_set.subset/2
pred set.subset/2
pred set_bbbtree.subset/2
pred set_ctree234.subset/2
pred set_ordlist.subset/2
pred set_tree234.subset/2
pred set_unordlist.subset/2
pred sparse_bitset.subset/2
func bag.subtract/3
pred svbag.subtract/3
pred bintree_set.superset/2
pred set.superset/2
pred set_bbbtree.superset/2
pred set_ctree234.superset/2
pred set_ordlist.superset/2
pred set_tree234.superset/2
pred set_unordlist.superset/2
pred sparse_bitset.superset/2
func mdbcomp.prim_data.sym_name_to_string/2
func mdbcomp.prim_data.sym_name_to_string/3
func integer.tail/2
func list.tail/2
pred exception.throw/1
func exception.throw/2
func int.times/3
pred time.times/4
pred io.tmpnam/3
pred io.tmpnam/5
func bag.to_assoc_list/2
pred bimap.to_assoc_list/2
func hash_table.to_assoc_list/2
pred map.to_assoc_list/2
pred multi_map.to_assoc_list/2
pred pqueue.to_assoc_list/2
func rbtree.to_assoc_list/2
pred relation.to_assoc_list/2
func version_hash_table.to_assoc_list/2
func hash_table.to_assoc_list_2/4
pred relation.to_assoc_list_2/5
func pprint.to_doc/2
func pprint.to_doc/3
func pprint.to_doc/4
pred int.to_float/2
pred string.to_float/2
pred char.to_int/2
func enum.to_int/2
pred string.to_int/2
func array.to_list/2
func bag.to_list/2
func bintree.to_list/2
func bt_array.to_list/2
func queue.to_list/2
func version_array.to_list/2
pred bag.to_list_2/2
pred bintree.to_list_2/3
pred char.to_lower/2
pred string.to_lower/2
func bag.to_set/2
func group.to_set/2
func sparse_bitset.to_set/2
func bintree_set.to_sorted_list/2
func set.to_sorted_list/2
func set_bbbtree.to_sorted_list/2
func set_ctree234.to_sorted_list/2
func set_ordlist.to_sorted_list/2
func set_tree234.to_sorted_list/2
func set_unordlist.to_sorted_list/2
pred sparse_bitset.to_sorted_list/2
func integer.to_string/2
func pprint.to_string/3
pred char.to_upper/2
pred string.to_upper/2
pred map.transform_value/4
pred rbtree.transform_value/4
pred tree234.transform_value/4
pred exception.try/2
pred exception.try/3
pred exception.try_all/2
pred exception.try_all/3
pred exception.try_all/4
pred exception.try_io/4
pred exception.try_io/5
pred exception.try_store/4
pred exception.try_store/5
pred term.try_term_to_type/2
pred term.try_term_to_type/3
func std_util.type_args/2
func type_desc.type_args/2
func std_util.type_ctor/2
func type_desc.type_ctor/2
pred rtti_implementation.type_ctor_and_args/3
pred std_util.type_ctor_and_args/3
pred type_desc.type_ctor_and_args/3
func rtti_implementation.type_ctor_arity/2
func std_util.type_ctor_arity/2
func type_desc.type_ctor_arity/2
func rtti_implementation.type_ctor_module_name/2
func std_util.type_ctor_module_name/2
func type_desc.type_ctor_module_name/2
func rtti_implementation.type_ctor_name/2
func std_util.type_ctor_name/2
func type_desc.type_ctor_name/2
pred rtti_implementation.type_ctor_name_and_arity/4
pred std_util.type_ctor_name_and_arity/4
pred type_desc.type_ctor_name_and_arity/4
func std_util.type_name/2
func type_desc.type_name/2
func std_util.type_of/2
func type_desc.type_of/2
func float.unchecked_quotient/3
func int.unchecked_quotient/3
pred term.unify/4
pred term.unify/5
pred term.unify_list/4
pred term.unify_list/5
func bag.union/3
func bintree_set.union/3
func bitmap.union/3
pred map.union/4
func set.union/3
func set_bbbtree.union/3
func set_ctree234.union/3
func set_ordlist.union/3
func set_tree234.union/3
func set_unordlist.union/3
pred sparse_bitset.union/3
func version_bitmap.union/3
pred map.union_2/5
func sparse_bitset.union_2/3
func set.union_list/2
func set_bbbtree.union_list/2
func set_ctree234.union_list/2
func set_ordlist.union_list/2
func set_tree234.union_list/2
func set_unordlist.union_list/2
func array2d.unsafe_elem/4
func string.unsafe_elem/3
func rtti_implementation.unsafe_index/3
pred string.unsafe_index/3
pred version_array.unsafe_rewind/2
func version_array2d.unsafe_rewind/2
pred version_bitmap.unsafe_rewind/2
pred version_store.unsafe_rewind/2
pred array.unsafe_set/4
pred array2d.unsafe_set/5
pred bitmap.unsafe_set/3
pred bintree.update/4
pred injection.update/4
func map.update/4
pred multi_map.update/4
pred rbtree.update/4
pred svmap.update/4
pred svmulti_map.update/4
pred tree234.update/4
pred bintree.upper_bound_lookup/4
pred map.upper_bound_lookup/4
pred rbtree.upper_bound_lookup/4
pred tree234.upper_bound_lookup/4
pred bintree.upper_bound_search/4
pred map.upper_bound_search/4
pred rbtree.upper_bound_search/4
pred tree234.upper_bound_search/4
pred string.value_to_revstrings/5
pred string.value_to_revstrings/6
func assoc_list.values/2
func bintree.values/2
pred injection.values/2
pred map.values/2
pred multi_map.values/2
pred rbtree.values/2
pred tree234.values/2
pred bintree.values_2/3
pred tree234.values_2/3
pred term.vars/2
pred varset.vars/2
pred term.vars_2/3
func varset.vars_2/4
pred library.version/1
pred mdbcomp.version/1
func string.word_wrap/3
func string.word_wrap/4
func string.words/2
func string.words/3
pred io.write/3
pred io.write/4
pred io.write/5
pred pprint.write/4
pred pprint.write/5
pred io.write_binary/3
pred io.write_binary/4
pred io.write_byte/3
pred io.write_byte/4
pred io.write_bytes/3
pred io.write_bytes/4
pred io.write_char/3
pred io.write_char/4
pred term_io.write_constant/3
pred term_io.write_constant/4
pred term_to_xml.write_dtd/5
pred term_to_xml.write_dtd/6
pred term_to_xml.write_dtd_from_type/5
pred term_to_xml.write_dtd_from_type/6
pred io.write_float/3
pred io.write_float/4
pred io.write_int/3
pred io.write_int/4
pred io.write_list/5
pred io.write_list/6
pred io.write_list_tail/4
pred term_io.write_list_tail/8
pred io.write_many/3
pred io.write_many/4
pred io.write_string/3
pred io.write_string/4
pred io.write_strings/3
pred io.write_strings/4
pred io.write_term_args/4
pred term_io.write_term_args/8
pred io.write_univ/3
pred io.write_univ/4
pred io.write_univ/5
pred term_to_xml.write_xml_doc/3
pred term_to_xml.write_xml_doc/4
pred term_to_xml.write_xml_doc/5
pred term_to_xml.write_xml_doc/6
pred term_to_xml.write_xml_doc/7
pred term_to_xml.write_xml_doc/8
pred term_to_xml.write_xml_doc_cc/7
pred term_to_xml.write_xml_doc_cc/8
pred term_to_xml.write_xml_element/4
pred term_to_xml.write_xml_element/5
pred term_to_xml.write_xml_element/6
pred term_to_xml.write_xml_header/3
pred term_to_xml.write_xml_header/4
func bool.xor/3
func int.xor/3
func integer.xor/3
func integer.zero/1
func rational.zero/1
func robdd.zero/1
func bitmap.zip/5
func list.zip/3
func version_bitmap.zip/5
Ambiguous type names:
graph.arc/0
graph.arc/1
mdb.debugger_interface.arity/0
mdb.name_mangle.arity/0
assoc_list.assoc_list/1
assoc_list.assoc_list/2
exception.determinism/0
mdb.debugger_interface.determinism/0
mdb.debugger_interface.event_number/0
mdb.declarative_execution.event_number/0
graph.graph/1
graph.graph/2
hash_table.hash_pred/1
version_hash_table.hash_pred/1
std_util.maybe_error/0
std_util.maybe_error/1
getopt.maybe_option_table/1
getopt_io.maybe_option_table/1
mdb.name_mangle.module_name/0
mdbcomp.prim_data.module_name/0
private_builtin.mutvar/1
std_util.mutvar/1
version_store.mutvar/2
graph.node/1
mdb.help.node/0
getopt.option_data/0
getopt_io.option_data/0
getopt.option_ops/1
getopt_io.option_ops/1
getopt.option_ops_internal/1
getopt_io.option_ops_internal/1
getopt.option_ops_special/1
getopt_io.option_ops_special/1
getopt.option_ops_track/1
getopt_io.option_ops_track/1
getopt.option_table/1
getopt_io.option_table/1
std_util.pair/1
std_util.pair/2
mdb.help.path/0
mdb.parse.path/0
io.poly_type/0
string.poly_type/0
mdbcomp.rtti_access.proc_layout/0
profiling_builtin.proc_layout/0
term_io.read_term/0
term_io.read_term/1
io.res/0
io.res/1
mdb.help.res/0
io.result/0
io.result/1
mdb.dl.result/0
mdb.dl.result/1
robdd.robdd/0
robdd.robdd/1
set_ctree234.set_tree234/1
set_tree234.set_tree234/1
getopt.special_data/0
getopt_io.special_data/0
ops.specifier/0
string.specifier/0
io.state/0
parser.state/2
dir.stream/0
io.stream/0
term.substitution/0
term.substitution/1
mdb.name_mangle.sym_name/0
mdbcomp.prim_data.sym_name/0
term.term/0
term.term/1
term.term_to_type_result/1
term.term_to_type_result/2
builtin.ticket/0
private_builtin.ticket/0
lexer.token/0
mdb.parse.token/0
std_util.type_ctor_desc/0
type_desc.type_ctor_desc/0
private_builtin.type_ctor_info/0
rtti_implementation.type_ctor_info/0
std_util.type_ctor_info/0
std_util.type_desc/0
type_desc.type_desc/0
private_builtin.type_info/0
rtti_implementation.type_info/0
std_util.type_info/0
std_util.unit/0
std_util.unit/1
term.var/0
term.var/1
varset.varset/0
varset.varset/1
cvs diff: Diffing .
cvs diff: Diffing analysis
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing browser
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing debian/patches
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
Index: doc/mdb_categories
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/doc/mdb_categories,v
retrieving revision 1.28
diff -u -b -r1.28 mdb_categories
--- doc/mdb_categories 1 Aug 2005 02:40:05 -0000 1.28
+++ doc/mdb_categories 25 Oct 2005 03:50:13 -0000
@@ -27,7 +27,8 @@
browsing - Commands that let users explore the state of the computation.
The browsing commands are `vars', `held_vars', `print', `browse',
`stack', `up', `down', `level', `current', `view', `hold',
- `diff' and `save_to_file'.
+ `diff', `save_to_file', `list', `push_list_dir' and
+ `pop_list_dir'.
end
document_category 500 breakpoint
@@ -44,8 +45,8 @@
document_category 700 parameter
parameter - Commands that let users access debugger parameters.
The parameter commands are `set', `printlevel', `echo', `context',
- `goal_paths' `scroll', `mmc_options', `scope', `alias' and
- `unalias'.
+ `goal_paths' `scroll', `mmc_options', `scope', `alias',
+ `unalias', and `stack_default_limit'.
end
document_category 800 help
@@ -84,6 +85,7 @@
`pneg_stack', `mm_stacks', `nondet_stack', `stack_regs',
`all_regs', `debug_vars', `stats', `print_optionals',
`unhide_events', `dd_dd', `table', `type_ctor', `class_decl',
- `all_type_ctors' and `all_class_decls'.
+ `all_type_ctors', `all_class_decls', `all_procedures' and
+ `ambiguity'.
end
Index: doc/user_guide.texi
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/doc/user_guide.texi,v
retrieving revision 1.455
diff -u -b -r1.455 user_guide.texi
--- doc/user_guide.texi 24 Oct 2005 02:02:17 -0000 1.455
+++ doc/user_guide.texi 24 Oct 2005 14:27:01 -0000
@@ -4003,6 +4003,18 @@
the list will include the procedures of
compiler generated unify, compare, index and initialization predicates.
Normally, the list includes the procedures of only user defined predicates.
+ at sp 1
+ at item ambiguity [@var{filename}]
+ at kindex ambiguity (mdb command)
+Print all ambiguous predicate, function and type names,
+to the named file if a filename is given,
+and to standard output otherwise.
+A predicate or function name is ambiguous
+if a predicate or function is defined with that name
+in more than one module or with more than one arity.
+A type name is ambiguous
+if a type is defined with that name
+in more than one module or with more than one arity.
@end table
@node Declarative debugging
cvs diff: Diffing extras
cvs diff: Diffing extras/aditi
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/error
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/easyx
cvs diff: Diffing extras/graphics/easyx/samples
cvs diff: Diffing extras/graphics/mercury_glut
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/gears
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/lex/tests
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/moose/tests
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/quickcheck
cvs diff: Diffing extras/quickcheck/tutes
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/solver_types
cvs diff: Diffing extras/solver_types/library
cvs diff: Diffing extras/stream
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing extras/xml_stylesheets
cvs diff: Diffing java
cvs diff: Diffing java/runtime
cvs diff: Diffing library
cvs diff: Diffing mdbcomp
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
Index: runtime/mercury_layout_util.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_layout_util.c,v
retrieving revision 1.36
diff -u -b -r1.36 mercury_layout_util.c
--- runtime/mercury_layout_util.c 7 Jul 2004 07:11:12 -0000 1.36
+++ runtime/mercury_layout_util.c 24 Oct 2005 12:03:04 -0000
@@ -1,4 +1,7 @@
/*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
** Copyright (C) 1998-2004 The University of Melbourne.
** This file may only be copied under the terms of the GNU Library General
** Public License - see the file COPYING.LIB in the Mercury distribution.
@@ -92,18 +95,13 @@
int i;
count = tvar_locns->MR_tp_param_count;
- type_params = (MR_TypeInfoParams)
- MR_NEW_ARRAY(MR_Word, count + 1);
+ type_params = (MR_TypeInfoParams) MR_NEW_ARRAY(MR_Word, count + 1);
for (i = 0; i < count; i++) {
- if (tvar_locns->MR_tp_param_locns[i] != 0)
- {
+ if (tvar_locns->MR_tp_param_locns[i] != 0) {
type_params[i + 1] = (MR_TypeInfo)
- MR_lookup_long_lval_base(
- tvar_locns->
- MR_tp_param_locns[i],
- saved_regs, base_sp, base_curfr,
- &succeeded);
+ MR_lookup_long_lval_base(tvar_locns->MR_tp_param_locns[i],
+ saved_regs, base_sp, base_curfr, &succeeded);
if (! succeeded) {
MR_fatal_error("missing type param in "
"MR_materialize_type_params_base");
@@ -135,13 +133,10 @@
MR_NEW_ARRAY(MR_Word, count + 1);
for (i = 0; i < count; i++) {
- if (tvar_locns->MR_tp_param_locns[i] != 0)
- {
+ if (tvar_locns->MR_tp_param_locns[i] != 0) {
type_params[i + 1] = (MR_TypeInfo)
MR_lookup_closure_long_lval(
- tvar_locns->
- MR_tp_param_locns[i],
- closure, &succeeded);
+ tvar_locns->MR_tp_param_locns[i], closure, &succeeded);
if (! succeeded) {
MR_fatal_error("missing type param in "
"MR_materialize_closure_type_params");
@@ -177,8 +172,7 @@
{
type_params[i + 1] = (MR_TypeInfo)
MR_lookup_typeclass_info_long_lval(
- tvar_locns->
- MR_tp_param_locns[i],
+ tvar_locns->MR_tp_param_locns[i],
typeclass_info, &succeeded);
if (! succeeded) {
MR_fatal_error("missing type param in "
@@ -208,14 +202,11 @@
MR_NEW_ARRAY(MR_Word, count + 1);
for (i = 0; i < count; i++) {
- if (tvar_locns->MR_tp_param_locns[i] != 0)
- {
+ if (tvar_locns->MR_tp_param_locns[i] != 0) {
type_params[i + 1] = (MR_TypeInfo)
MR_lookup_answer_block_long_lval(
- tvar_locns->
- MR_tp_param_locns[i],
- answer_block, block_size,
- &succeeded);
+ tvar_locns->MR_tp_param_locns[i], answer_block,
+ block_size, &succeeded);
if (! succeeded) {
MR_fatal_error("missing type param in "
"MR_materialize_answer_block_type_params");
@@ -259,8 +250,7 @@
MR_lookup_long_lval(MR_Long_Lval locn, MR_Word *saved_regs, MR_bool *succeeded)
{
return MR_lookup_long_lval_base(locn, saved_regs,
- MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs),
- succeeded);
+ MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs), succeeded);
}
static MR_Word
@@ -283,8 +273,7 @@
printf("closure r%d\n", locn_num);
}
if (locn_num <= closure->MR_closure_num_hidden_args) {
- value = closure->
- MR_closure_hidden_args(locn_num);
+ value = closure->MR_closure_hidden_args(locn_num);
*succeeded = MR_TRUE;
}
break;
@@ -343,13 +332,12 @@
if (MR_print_locn) {
printf("closure offset %d from ", offset);
}
- baseaddr = MR_lookup_closure_long_lval(sublocn,
- closure, succeeded);
+ baseaddr = MR_lookup_closure_long_lval(sublocn, closure,
+ succeeded);
if (! *succeeded) {
break;
}
- value = MR_typeclass_info_param_type_info(baseaddr,
- offset);
+ value = MR_typeclass_info_param_type_info(baseaddr, offset);
*succeeded = MR_TRUE;
break;
@@ -389,11 +377,10 @@
printf("typeclassinfo r%d\n", locn_num);
}
if (locn_num <=
- MR_typeclass_info_num_extra_instance_args(
- typeclass_info))
+ MR_typeclass_info_num_extra_instance_args(typeclass_info))
{
- value = MR_typeclass_info_arg_typeclass_info(
- typeclass_info, locn_num);
+ value = MR_typeclass_info_arg_typeclass_info(typeclass_info,
+ locn_num);
*succeeded = MR_TRUE;
}
break;
@@ -457,8 +444,7 @@
if (! *succeeded) {
break;
}
- value = MR_typeclass_info_param_type_info(baseaddr,
- offset);
+ value = MR_typeclass_info_param_type_info(baseaddr, offset);
*succeeded = MR_TRUE;
break;
@@ -557,13 +543,12 @@
if (MR_print_locn) {
printf("answer_block offset %d from ", offset);
}
- baseaddr = MR_lookup_answer_block_long_lval(sublocn,
- answer_block, block_size, succeeded);
+ baseaddr = MR_lookup_answer_block_long_lval(sublocn, answer_block,
+ block_size, succeeded);
if (! *succeeded) {
break;
}
- value = MR_typeclass_info_param_type_info(baseaddr,
- offset);
+ value = MR_typeclass_info_param_type_info(baseaddr, offset);
*succeeded = MR_TRUE;
break;
@@ -603,8 +588,7 @@
printf("long r%d\n", locn_num);
}
if (saved_regs != NULL) {
- value = MR_saved_reg_value(saved_regs,
- locn_num);
+ value = MR_saved_reg_value(saved_regs, locn_num);
*succeeded = MR_TRUE;
}
break;
@@ -667,14 +651,12 @@
if (MR_print_locn) {
printf("long offset %d from ", offset);
}
- baseaddr = MR_lookup_long_lval_base(sublocn,
- saved_regs, base_sp, base_curfr,
- succeeded);
+ baseaddr = MR_lookup_long_lval_base(sublocn, saved_regs,
+ base_sp, base_curfr, succeeded);
if (! *succeeded) {
break;
}
- value = MR_typeclass_info_param_type_info(baseaddr,
- offset);
+ value = MR_typeclass_info_param_type_info(baseaddr, offset);
*succeeded = MR_TRUE;
break;
@@ -699,8 +681,7 @@
MR_bool *succeeded)
{
return MR_lookup_short_lval_base(locn, saved_regs,
- MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs),
- succeeded);
+ MR_saved_sp(saved_regs), MR_saved_curfr(saved_regs), succeeded);
}
MR_Word
@@ -720,8 +701,7 @@
printf("short r%d\n", locn_num);
}
if (saved_regs != NULL) {
- value = MR_saved_reg_value(saved_regs,
- locn_num);
+ value = MR_saved_reg_value(saved_regs, locn_num);
*succeeded = MR_TRUE;
}
break;
@@ -873,19 +853,17 @@
*arity_ptr = 3;
} else if (MR_streq(*proc_name_ptr, "__Index__")) {
*arity_ptr = 2;
+ } else if (MR_streq(*proc_name_ptr, "__Initialise__")) {
+ *arity_ptr = 1;
} else {
MR_fatal_error("MR_generate_proc_name_from_layout: "
"bad MR_comp_pred_name");
}
*is_func_ptr = MR_BOOL_NO;
} else {
- *proc_name_ptr = proc_layout->MR_sle_proc_id.
- MR_proc_user.MR_user_name;
- *arity_ptr = proc_layout->MR_sle_proc_id.
- MR_proc_user.MR_user_arity;
- if (proc_layout->MR_sle_proc_id.MR_proc_user.
- MR_user_pred_or_func == MR_FUNCTION)
- {
+ *proc_name_ptr = proc_layout->MR_sle_proc_id.MR_proc_user.MR_user_name;
+ *arity_ptr = proc_layout->MR_sle_proc_id. MR_proc_user.MR_user_arity;
+ if (proc_layout->MR_sle_user.MR_user_pred_or_func == MR_FUNCTION) {
*is_func_ptr = MR_BOOL_YES;
} else {
*is_func_ptr = MR_BOOL_NO;
@@ -902,9 +880,10 @@
** MR_comp_type_arity is the arity of the type constructor.
** Each argument of the type constructor adds a typeinfo
** argument to the headvars for all predicates, unify, compare
- ** and index. (The index predicate doesn't need these
- ** typeinfos, but it has them anyway.)
+ ** and index. (The index predicate doesn't need these typeinfos,
+ ** but it has them anyway.)
*/
+
*num_added_args_ptr = proc->MR_sle_uci.MR_uci_type_arity;
*arity_ptr = proc->MR_sle_num_head_vars - *num_added_args_ptr;
*pred_or_func_ptr = MR_PREDICATE;
Index: runtime/mercury_type_tables.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_type_tables.c,v
retrieving revision 1.10
diff -u -b -r1.10 mercury_type_tables.c
--- runtime/mercury_type_tables.c 24 Feb 2004 08:49:55 -0000 1.10
+++ runtime/mercury_type_tables.c 24 Oct 2005 12:29:30 -0000
@@ -1,4 +1,7 @@
/*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
** Copyright (C) 2000,2002-2004 The University of Melbourne.
** This file may only be copied under the terms of the GNU Library General
** Public License - see the file COPYING.LIB in the Mercury distribution.
@@ -45,6 +48,8 @@
static MR_TableNode MR_type_class_decl_info_table = { 0 };
static MR_Dlist *MR_type_ctor_list = NULL;
static MR_Dlist *MR_type_class_decl_info_list = NULL;
+static int MR_num_type_ctors = 0;
+static int MR_num_type_class_decls = 0;
static MR_TypeClassDeclInfo *MR_do_register_type_class_decl(
MR_TypeClassDecl type_class_decl);
@@ -83,11 +88,9 @@
MR_type_ctor_name(type_ctor_info));
MR_for_dlist (element_ptr, slot->MR_type_table) {
- cur_type_ctor_info =
- (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+ cur_type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
- if (type_names_match_ctor(type_ctor_info, cur_type_ctor_info))
- {
+ if (type_names_match_ctor(type_ctor_info, cur_type_ctor_info)) {
if (cur_type_ctor_info == type_ctor_info) {
/* type_ctor_info has been registered before */
return;
@@ -102,6 +105,7 @@
type_ctor_info);
MR_type_ctor_list = MR_dlist_addtail(MR_type_ctor_list,
type_ctor_info);
+ MR_num_type_ctors++;
}
static MR_TypeClassDeclInfo *
@@ -124,8 +128,7 @@
MR_for_dlist (element_ptr, slot->MR_type_table) {
cur_type_class_decl_info =
(MR_TypeClassDeclInfo *) MR_dlist_data(element_ptr);
- cur_type_class_decl = cur_type_class_decl_info->
- MR_tcd_info_decl;
+ cur_type_class_decl = cur_type_class_decl_info->MR_tcd_info_decl;
cur_type_class_id = cur_type_class_decl->MR_tc_decl_id;
if (class_names_match_id(type_class_id, cur_type_class_id)) {
@@ -133,8 +136,7 @@
/* type_ctor_info has been registered before */
return cur_type_class_decl_info;
} else {
- MR_fatal_error(
- "MR_do_register_type_class_decl: "
+ MR_fatal_error("MR_do_register_type_class_decl: "
"ambiguous type class decl");
}
}
@@ -147,6 +149,7 @@
type_class_decl_info);
MR_type_class_decl_info_list = MR_dlist_addtail(
MR_type_class_decl_info_list, type_class_decl_info);
+ MR_num_type_class_decls++;
return type_class_decl_info;
}
@@ -193,8 +196,7 @@
slot = MR_string_hash_lookup_or_add(&MR_type_ctor_table, type_name);
MR_for_dlist (element_ptr, slot->MR_type_table) {
- cur_type_ctor_info =
- (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+ cur_type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
if (type_names_match(cur_type_ctor_info, module_name,
type_name, arity))
@@ -222,8 +224,7 @@
MR_for_dlist (element_ptr, slot->MR_type_table) {
cur_type_class_decl_info =
(MR_TypeClassDeclInfo *) MR_dlist_data(element_ptr);
- cur_type_class_decl = cur_type_class_decl_info->
- MR_tcd_info_decl;
+ cur_type_class_decl = cur_type_class_decl_info->MR_tcd_info_decl;
cur_type_class_id = cur_type_class_decl->MR_tc_decl_id;
if (class_names_match(cur_type_class_id, module_name,
@@ -269,13 +270,21 @@
}
MR_Dlist *
-MR_all_type_ctor_infos(void)
+MR_all_type_ctor_infos(int *num_ptr)
{
+ if (num_ptr != NULL) {
+ *num_ptr = MR_num_type_ctors;
+ }
+
return MR_type_ctor_list;
}
MR_Dlist *
-MR_all_type_class_decl_infos(void)
+MR_all_type_class_decl_infos(int *num_ptr)
{
+ if (num_ptr != NULL) {
+ *num_ptr = MR_num_type_class_decls;
+ }
+
return MR_type_class_decl_info_list;
}
Index: runtime/mercury_type_tables.h
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_type_tables.h,v
retrieving revision 1.2
diff -u -b -r1.2 mercury_type_tables.h
--- runtime/mercury_type_tables.h 23 Oct 2003 02:02:31 -0000 1.2
+++ runtime/mercury_type_tables.h 24 Oct 2005 12:26:21 -0000
@@ -134,20 +134,21 @@
const char *class_name, int arity);
/*
-** Return a list of all the type constructors registered so far. The list
-** elements are of type MR_TypeCtorInfo. The caller must not modify anything
-** reachable from the returned list.
+** Return a list of all the type constructors registered so far, and return
+** their number in *num_ptr if num_ptr is not NULL. The list elements are
+** of type MR_TypeCtorInfo. The caller must not modify anything reachable
+** from the returned list.
*/
-extern MR_Dlist *MR_all_type_ctor_infos(void);
+extern MR_Dlist *MR_all_type_ctor_infos(int *num_ptr);
/*
-** Return a list of all the type classes registered so far. The list
-** elements are of type MR_TypeClassDeclInfo.
-** The caller must not modify anything reachable from the returned
-** list.
+** Return a list of all the type classes registered so far, and return their
+** number in *num_ptr if num_ptr is not NULL. The list elements are of type
+** MR_TypeClassDeclInfo. The caller must not modify anything reachable
+** from the returned list.
*/
-extern MR_Dlist *MR_all_type_class_decl_infos(void);
+extern MR_Dlist *MR_all_type_class_decl_infos(int *num_ptr);
#endif /* not MERCURY_TYPE_TABLES */
Index: runtime/mercury_wrapper.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/runtime/mercury_wrapper.c,v
retrieving revision 1.157
diff -u -b -r1.157 mercury_wrapper.c
--- runtime/mercury_wrapper.c 11 Oct 2005 04:45:52 -0000 1.157
+++ runtime/mercury_wrapper.c 24 Oct 2005 12:23:26 -0000
@@ -1,4 +1,7 @@
/*
+** vim: ts=4 sw=4 expandtab
+*/
+/*
INIT mercury_sys_init_wrapper
ENDINIT
*/
@@ -82,6 +85,7 @@
** changing MR_heap_zone_size and/or the MR_heap_margin_size, which are
** defined below.
*/
+
#ifdef MR_DEBUG_AGC_SMALL_HEAP
size_t MR_heap_size = 13 * sizeof(MR_Word);
#else
@@ -150,6 +154,7 @@
** Like the sizes above, it is measured in kilobytes
** (but we later multiply by 1024 to convert to bytes).
*/
+
#ifdef MR_DEBUG_AGC_SMALL_HEAP
size_t MR_heap_margin_size = 4 * sizeof(MR_Word);
#else
@@ -216,8 +221,7 @@
*/
MR_Word *MR_watch_addr = NULL;
-MR_CallSiteDynamic
- *MR_watch_csd_addr = NULL;
+MR_CallSiteDynamic *MR_watch_csd_addr = NULL;
MR_bool MR_watch_csd_started = MR_FALSE;
const char *MR_watch_csd_start_name = ""; /* must not be NULL */
@@ -252,7 +256,7 @@
static int MR_num_output_args = 0;
-unsigned MR_num_threads = 1;
+unsigned int MR_num_threads = 1;
static MR_bool MR_print_table_statistics = MR_FALSE;
@@ -358,8 +362,7 @@
char *(*MR_address_of_trace_getline)(const char *, FILE *, FILE *);
char *(*MR_address_of_trace_get_command)(const char *, FILE *, FILE *);
-const char *
- (*MR_address_of_trace_browse_all_on_level)(FILE *,
+const char *(*MR_address_of_trace_browse_all_on_level)(FILE *,
const MR_Label_Layout *, MR_Word *, MR_Word *, int, MR_bool);
#ifdef MR_USE_EXTERNAL_DEBUGGER
@@ -400,7 +403,8 @@
MR_String, MR_String, MR_Integer, MR_Integer, MR_Integer,
MR_Word, MR_String, MR_Word);
/* normally ML_DI_found_match (output_current/12) */
-void (*MR_DI_read_request_from_socket)(MR_Word, MR_Word *, MR_Integer *);
+void (*MR_DI_read_request_from_socket)(MR_Word, MR_Word *,
+ MR_Integer *);
MR_Code *(*MR_exec_trace_func_ptr)(const MR_Label_Layout *);
@@ -645,15 +649,14 @@
/* MR_debug_enabled overrides MR_trace_count_enabled */
MR_trace_count_enabled = MR_FALSE;
} else if (MR_trace_count_enabled) {
- MR_register_module_layout =
- MR_insert_module_info_into_module_table;
+ MR_register_module_layout = MR_insert_module_info_into_module_table;
MR_selected_trace_func_ptr = MR_trace_count;
/*
** In case the program terminates with an exception,
** we still want the trace count to be written out.
*/
- MR_register_exception_cleanup(
- MR_trace_write_label_exec_counts_to_file, NULL);
+ MR_register_exception_cleanup(MR_trace_write_label_exec_counts_to_file,
+ NULL);
}
/*
@@ -821,7 +824,7 @@
/*
** First do a pass over the string to count how much space we need to
- ** allocate
+ ** allocate.
*/
for (;;) {
@@ -848,24 +851,26 @@
*argc_ptr = argc;
return "unterminated quoted string";
}
- if (*s == '\\')
+ if (*s == '\\') {
s++;
+ }
args_len++; s++;
}
s++;
} else {
/* ordinary white-space delimited arg */
while(*s != '\0' && !MR_isspace(*s)) {
- if (*s == '\\')
+ if (*s == '\\') {
s++;
+ }
args_len++; s++;
}
}
args_len++;
- } /* end for */
+ }
/*
- ** Allocate the space
+ ** Allocate the space.
*/
args = MR_GC_NEW_ARRAY(char, args_len);
argv = MR_GC_NEW_ARRAY(char *, argc + 1);
@@ -895,27 +900,29 @@
s++;
/* "double quoted" arg - scan until next double quote */
while (*s != '"') {
- if (*s == '\\')
+ if (*s == '\\') {
s++;
+ }
*d++ = *s++;
}
s++;
} else {
/* ordinary white-space delimited arg */
while(*s != '\0' && !MR_isspace(*s)) {
- if (*s == '\\')
+ if (*s == '\\') {
s++;
+ }
*d++ = *s++;
}
}
*d++ = '\0';
- } /* end for */
+ }
*args_ptr = args;
*argv_ptr = argv;
*argc_ptr = argc;
return NULL; /* success */
-} /* end MR_make_argv() */
+}
/*
** process_args() is a function that sets some global variables from the
@@ -956,26 +963,23 @@
int runtime_flags_len;
/*
- ** getopt() expects the options to start in argv[1],
- ** not argv[0], so we need to insert a dummy program
- ** name (we use "mercury_runtime") at the start of the
- ** options before passing them to MR_make_argv() and then
- ** to getopt().
+ ** getopt() expects the options to start in argv[1], not argv[0],
+ ** so we need to insert a dummy program name (we use "mercury_runtime")
+ ** at the start of the options before passing them to MR_make_argv()
+ ** and then to getopt().
*/
cmd = "mercury_runtime ";
cmd_len = strlen(cmd);
runtime_flags_len = strlen(MR_runtime_flags);
dummy_command_line = MR_GC_NEW_ARRAY(char,
- cmd_len + runtime_flags_len + 1 +
- strlen(env_options) + 1);
+ cmd_len + runtime_flags_len + 1 + strlen(env_options) + 1);
strcpy(dummy_command_line, cmd);
strcpy(dummy_command_line + cmd_len, MR_runtime_flags);
dummy_command_line[cmd_len + runtime_flags_len] = ' ';
strcpy(dummy_command_line + cmd_len + runtime_flags_len + 1,
env_options);
- error_msg = MR_make_argv(dummy_command_line,
- &arg_str, &argv, &argc);
+ error_msg = MR_make_argv(dummy_command_line, &arg_str, &argv, &argc);
if (error_msg != NULL) {
MR_fatal_error("error parsing the MERCURY_OPTIONS "
"environment variable:\n%s\n", error_msg);
@@ -1116,7 +1120,6 @@
{
switch (c)
{
-
case MR_HEAP_SIZE:
if (sscanf(MR_optarg, "%lu", &size) != 1) {
usage();
@@ -1294,9 +1297,7 @@
break;
case MR_HEAP_EXPANSION_FACTOR:
- if (sscanf(MR_optarg, "%lf",
- &MR_heap_expansion_factor) != 1)
- {
+ if (sscanf(MR_optarg, "%lf", &MR_heap_expansion_factor) != 1) {
usage();
}
break;
@@ -1460,10 +1461,9 @@
case MR_FORCE_READLINE:
MR_force_readline = MR_TRUE;
#ifdef MR_NO_USE_READLINE
- printf(
-"Mercury runtime: `--force-readline' is specified in MERCURY_OPTIONS\n");
- printf(
-"but readline() is not available.\n");
+ printf("Mercury runtime: `--force-readline' is specified "
+ "in MERCURY_OPTIONS\n");
+ printf("but readline() is not available.\n");
fflush(stdout);
exit(1);
#endif
@@ -1510,7 +1510,6 @@
}
MR_pcache_size = size * 1024;
-
break;
case 'd':
@@ -1532,9 +1531,7 @@
} else if (MR_streq(MR_optarg, "b")) {
MR_nondstackdebug = MR_TRUE;
} else if (MR_streq(MR_optarg, "B")) {
- if (sscanf(MR_optarg+1, "%u",
- &MR_lld_start_block) != 1)
- {
+ if (sscanf(MR_optarg+1, "%u", &MR_lld_start_block) != 1) {
usage();
}
} else if (MR_streq(MR_optarg, "c")) {
@@ -1560,10 +1557,8 @@
} else if (MR_streq(MR_optarg, "H")) {
MR_hashdebug = MR_TRUE;
} else if (MR_optarg[0] == 'i') {
- MR_lld_print_more_min_max =
- strdup(MR_optarg + 1);
- MR_setup_call_intervals(
- &MR_lld_print_more_min_max,
+ MR_lld_print_more_min_max = strdup(MR_optarg + 1);
+ MR_setup_call_intervals(&MR_lld_print_more_min_max,
&MR_lld_print_min, &MR_lld_print_max);
} else if (MR_optarg[0] == 'I') {
MR_watch_csd_start_name = strdup(MR_optarg+1);
@@ -1593,21 +1588,15 @@
MR_tabledebug = MR_TRUE;
} else if (MR_streq(MR_optarg, "u")) {
MR_unbufdebug = MR_TRUE;
- } else if (MR_optarg[0] == 'w' || MR_optarg[0] == 'W')
- {
+ } else if (MR_optarg[0] == 'w' || MR_optarg[0] == 'W') {
long addr;
- if (MR_optarg[1] == '0' && MR_optarg[2] == 'x')
- {
- if (sscanf(MR_optarg+3, "%lx", &addr)
- != 1)
- {
+ if (MR_optarg[1] == '0' && MR_optarg[2] == 'x') {
+ if (sscanf(MR_optarg+3, "%lx", &addr) != 1) {
usage();
}
} else {
- if (sscanf(MR_optarg+1, "%lu", &addr)
- != 1)
- {
+ if (sscanf(MR_optarg+1, "%lu", &addr) != 1) {
usage();
}
}
@@ -1616,8 +1605,7 @@
if (MR_optarg[0] == 'w') {
MR_watch_addr = (MR_Word *) addr;
} else {
- MR_watch_csd_addr =
- (MR_CallSiteDynamic *) addr;
+ MR_watch_csd_addr = (MR_CallSiteDynamic *) addr;
}
/*
@@ -1698,8 +1686,7 @@
} else if (MR_streq(MR_optarg, "v")) {
MR_time_profile_method = MR_profile_user_time;
} else if (MR_streq(MR_optarg, "p")) {
- MR_time_profile_method =
- MR_profile_user_plus_system_time;
+ MR_time_profile_method = MR_profile_user_plus_system_time;
} else {
usage();
}
@@ -1720,8 +1707,8 @@
default:
usage();
- } /* end switch */
- } /* end while */
+ }
+ }
if (MR_lld_print_min > 0 || MR_lld_start_name != NULL) {
MR_lld_print_enabled = 0;
@@ -1737,7 +1724,7 @@
fflush(stdout);
exit(1);
}
-} /* end process_options() */
+}
static void
usage(void)
@@ -1748,7 +1735,7 @@
"the Mercury\nUser's Guide for details.\n");
fflush(stdout);
exit(1);
-} /* end usage() */
+}
/*
** Get the next interval from *more_str_ptr, which should point to a string
@@ -1944,8 +1931,7 @@
if (use_own_timer) {
printf("%8.3fu ",
- ((double) (MR_time_at_finish - MR_time_at_start))
- / 1000);
+ ((double) (MR_time_at_finish - MR_time_at_start)) / 1000);
}
#ifdef MR_TYPE_CTOR_STATS
@@ -2046,8 +2032,7 @@
for (i = 0; i < (int) MR_TYPECTOR_REP_UNKNOWN; i++) {
if (type_stat->type_ctor_reps[i] > 0) {
fprintf(fp, "%s %s %ld\n", op,
- MR_ctor_rep_name[i],
- type_stat->type_ctor_reps[i]);
+ MR_ctor_rep_name[i], type_stat->type_ctor_reps[i]);
}
}
@@ -2088,31 +2073,32 @@
MR_Word outputs[4];
typedef void MR_CALL (*EntryPoint1)(MR_Word *);
typedef void MR_CALL (*EntryPoint2)(MR_Word *, MR_Word *);
- typedef void MR_CALL (*EntryPoint3)(MR_Word *, MR_Word *,
+ typedef void MR_CALL (*EntryPoint3)(MR_Word *, MR_Word *, MR_Word *);
+ typedef void MR_CALL (*EntryPoint4)(MR_Word *, MR_Word *, MR_Word *,
MR_Word *);
- typedef void MR_CALL (*EntryPoint4)(MR_Word *, MR_Word *,
- MR_Word *, MR_Word *);
switch (MR_num_output_args) {
case 0:
(*MR_program_entry_point)();
break;
+
case 1:
- (*(EntryPoint1)MR_program_entry_point)(
- &outputs[0]);
+ (*(EntryPoint1)MR_program_entry_point)(&outputs[0]);
break;
+
case 2:
- (*(EntryPoint2)MR_program_entry_point)(
- &outputs[0], &outputs[1]);
+ (*(EntryPoint2)MR_program_entry_point)(&outputs[0],
+ &outputs[1]);
break;
case 3:
- (*(EntryPoint3)MR_program_entry_point)(
- &outputs[0], &outputs[1], &outputs[2]);
+ (*(EntryPoint3)MR_program_entry_point)(&outputs[0],
+ &outputs[1], &outputs[2]);
break;
+
case 4:
- (*(EntryPoint4)MR_program_entry_point)(
- &outputs[0], &outputs[1], &outputs[2],
- &outputs[3]);
+ (*(EntryPoint4)MR_program_entry_point)(&outputs[0],
+ &outputs[1], &outputs[2], &outputs[3]);
break;
+
default:
MR_fatal_error("sorry, not implemented: "
"--num-output-args > 4");
@@ -2330,23 +2316,15 @@
if (fp != NULL) {
struct rusage rusage;
- fprintf(fp, "io actions %10d\n",
- MR_io_tabling_counter_hwm);
+ fprintf(fp, "io actions %10d\n", MR_io_tabling_counter_hwm);
if (getrusage(RUSAGE_SELF, &rusage) == 0) {
- fprintf(fp, "max resident %10ld\n",
- rusage.ru_maxrss);
- fprintf(fp, "integral shared %10ld\n",
- rusage.ru_ixrss);
- fprintf(fp, "integral unshared %10ld\n",
- rusage.ru_idrss);
- fprintf(fp, "integral stack %10ld\n",
- rusage.ru_isrss);
- fprintf(fp, "page reclaims %10ld\n",
- rusage.ru_minflt);
- fprintf(fp, "page faults %10ld\n",
- rusage.ru_majflt);
- fprintf(fp, "swaps %10ld\n",
- rusage.ru_nswap);
+ fprintf(fp, "max resident %10ld\n", rusage.ru_maxrss);
+ fprintf(fp, "integral shared %10ld\n", rusage.ru_ixrss);
+ fprintf(fp, "integral unshared %10ld\n", rusage.ru_idrss);
+ fprintf(fp, "integral stack %10ld\n", rusage.ru_isrss);
+ fprintf(fp, "page reclaims %10ld\n", rusage.ru_minflt);
+ fprintf(fp, "page faults %10ld\n", rusage.ru_majflt);
+ fprintf(fp, "swaps %10ld\n", rusage.ru_nswap);
}
(void) fclose(fp);
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
cvs diff: Diffing slice
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
Index: tests/debugger/completion.exp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/debugger/completion.exp,v
retrieving revision 1.30
diff -u -b -r1.30 completion.exp
--- tests/debugger/completion.exp 10 Aug 2005 11:35:25 -0000 1.30
+++ tests/debugger/completion.exp 25 Oct 2005 03:39:25 -0000
@@ -3,39 +3,41 @@
Command echo enabled.
mdb> register --quiet
mdb>
-? enable query
-P exception quit
-alias excp r
-all_class_decls f register
-all_procedures finish retry
-all_regs flag return
-all_type_ctors forward s
-b g save
-break gen_stack save_to_file
-break_print goal_paths scope
-browse goto scroll
-c h set
-cc_query held_vars source
-class_decl help stack
-clear_histogram histogram_all stack_default_limit
-condition histogram_exp stack_regs
-consumer hold stats
-context ignore step
-continue io_query subgoal
-current level table
-cut_stack maxdepth table_io
-d mindepth term_size
-dd mm_stacks trust
-debug_vars mmc_options trusted
-delete modules type_ctor
-dice next unalias
-diff nondet_stack unhide_events
-disable p untrust
-document pneg_stack up
-document_category print v
-down print_optionals var_details
-e printlevel vars
-echo procedures view
+? exception query
+P excp quit
+alias f r
+all_class_decls finish register
+all_procedures flag retry
+all_regs forward return
+all_type_ctors g s
+ambiguity gen_stack save
+b goal_paths save_to_file
+break goto scope
+break_print h scroll
+browse held_vars set
+c help source
+cc_query histogram_all stack
+class_decl histogram_exp stack_default_limit
+clear_histogram hold stack_regs
+condition ignore stats
+consumer io_query step
+context level subgoal
+continue list table
+current maxdepth table_io
+cut_stack mindepth term_size
+d mm_stacks trust
+dd mmc_options trusted
+debug_vars modules type_ctor
+delete next unalias
+dice nondet_stack unhide_events
+diff p untrust
+disable pneg_stack up
+document pop_list_dir v
+document_category print var_details
+down print_optionals vars
+e printlevel view
+echo procedures
+enable push_list_dir
h help histogram_exp
held_vars histogram_all hold
var_details vars view
Index: tests/debugger/mdb_command_test.inp
===================================================================
RCS file: /home/mercury/mercury1/repository/tests/debugger/mdb_command_test.inp,v
retrieving revision 1.46
diff -u -b -r1.46 mdb_command_test.inp
--- tests/debugger/mdb_command_test.inp 19 Aug 2005 16:08:28 -0000 1.46
+++ tests/debugger/mdb_command_test.inp 24 Oct 2005 20:00:15 -0000
@@ -39,6 +39,9 @@
hold xyzzy xyzzy xyzzy xyzzy xyzzy
diff xyzzy xyzzy xyzzy xyzzy xyzzy
save_to_file xyzzy xyzzy xyzzy xyzzy xyzzy
+list xyzzy xyzzy xyzzy xyzzy xyzzy
+push_list_dir xyzzy xyzzy xyzzy xyzzy xyzzy
+pop_list_dir xyzzy xyzzy xyzzy xyzzy xyzzy
break xyzzy xyzzy xyzzy xyzzy xyzzy
condition xyzzy xyzzy xyzzy xyzzy xyzzy
ignore xyzzy xyzzy xyzzy xyzzy xyzzy
@@ -92,3 +95,4 @@
class_decl xyzzy xyzzy xyzzy xyzzy xyzzy
all_class_decls xyzzy xyzzy xyzzy xyzzy xyzzy
all_procedures xyzzy xyzzy xyzzy xyzzy xyzzy
+ambiguity xyzzy xyzzy xyzzy xyzzy xyzzy
cvs diff: Diffing tests/debugger/declarative
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/general/string_format
cvs diff: Diffing tests/general/structure_reuse
cvs diff: Diffing tests/grade_subdirs
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/mmc_make
cvs diff: Diffing tests/mmc_make/lib
cvs diff: Diffing tests/recompilation
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
cvs diff: Diffing tools
cvs diff: Diffing trace
Index: trace/mercury_trace_internal.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_internal.c,v
retrieving revision 1.216
diff -u -b -r1.216 mercury_trace_internal.c
--- trace/mercury_trace_internal.c 24 Oct 2005 02:02:17 -0000 1.216
+++ trace/mercury_trace_internal.c 24 Oct 2005 12:51:24 -0000
@@ -536,6 +536,7 @@
static MR_TraceCmdFunc MR_trace_cmd_all_type_ctors;
static MR_TraceCmdFunc MR_trace_cmd_all_class_decls;
static MR_TraceCmdFunc MR_trace_cmd_all_procedures;
+static MR_TraceCmdFunc MR_trace_cmd_ambiguity;
static MR_TraceCmdFunc MR_trace_cmd_save;
static MR_TraceCmdFunc MR_trace_cmd_quit;
static MR_TraceCmdFunc MR_trace_cmd_dd;
@@ -637,6 +638,9 @@
static MR_bool MR_trace_options_all_procedures(MR_bool *separate,
MR_bool *uci, char **module, char ***words,
int *word_count, const char *cat, const char *item);
+static MR_bool MR_trace_options_ambiguity(MR_bool *separate,
+ MR_bool *uci, char **module, char ***words,
+ int *word_count, const char *cat, const char *item);
static MR_bool MR_trace_options_diff(int *start, int *max,
char ***words, int *word_count, const char *cat,
const char *item);
@@ -5508,7 +5512,7 @@
module_name = NULL;
}
- list = MR_all_type_ctor_infos();
+ list = MR_all_type_ctor_infos(NULL);
count = 0;
MR_for_dlist(element_ptr, list) {
type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
@@ -5533,7 +5537,7 @@
fprintf(MR_mdb_out, "in module %s: %d\n", module_name, count);
}
} else {
- MR_trace_usage("developer", "class_decl");
+ MR_trace_usage("developer", "all_type_ctors");
}
return KEEP_INTERACTING;
@@ -5566,7 +5570,7 @@
} else {
module_name = NULL;
}
- list = MR_all_type_class_decl_infos();
+ list = MR_all_type_class_decl_infos(NULL);
count = 0;
MR_for_dlist(element_ptr, list) {
type_class_decl_info = (MR_TypeClassDeclInfo *)
@@ -5593,7 +5597,7 @@
fprintf(MR_mdb_out, "in module %s: %d\n", module_name, count);
}
} else {
- MR_trace_usage("developer", "class_decl");
+ MR_trace_usage("developer", "all_class_decls");
}
return KEEP_INTERACTING;
@@ -5638,7 +5642,44 @@
fprintf(MR_mdb_out, "mdb: wrote table to `%s'.\n", filename);
}
} else {
+ MR_trace_usage("developer", "all_procedures");
+ }
+
+ return KEEP_INTERACTING;
+}
+
+static MR_Next
+MR_trace_cmd_ambiguity(char **words, int word_count,
+ MR_Trace_Cmd_Info *cmd, MR_Event_Info *event_info,
+ MR_Event_Details *event_details, MR_Code **jumpaddr)
+{
+ const char *filename;
+ FILE *fp;
+
+ MR_register_all_modules_and_procs(MR_mdb_out, MR_TRUE);
+
+ if (word_count == 1) {
+ filename = NULL;
+ fp = MR_mdb_out;
+ } else if (word_count == 2) {
+ filename = words[1];
+ fp = fopen(filename, "w");
+ if (fp == NULL) {
+ fflush(MR_mdb_out);
+ fprintf(MR_mdb_err, "mdb: error opening `%s': %s.\n",
+ filename, strerror(errno));
+ return KEEP_INTERACTING;
+ }
+ } else {
MR_trace_usage("developer", "class_decl");
+ return KEEP_INTERACTING;
+ }
+
+ MR_print_ambiguities(fp);
+
+ if (filename != NULL) {
+ fprintf(MR_mdb_out, "mdb: wrote report to `%s'.\n", filename);
+ fclose(fp);
}
return KEEP_INTERACTING;
@@ -8642,6 +8683,8 @@
{ "developer", "all_class_decls", MR_trace_cmd_all_class_decls,
NULL, MR_trace_null_completer },
{ "developer", "all_procedures", MR_trace_cmd_all_procedures,
+ NULL, MR_trace_filename_completer },
+ { "developer", "ambiguity", MR_trace_cmd_ambiguity,
NULL, MR_trace_filename_completer },
/* End of doc/mdb_command_list. */
Index: trace/mercury_trace_tables.c
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_tables.c,v
retrieving revision 1.38
diff -u -b -r1.38 mercury_trace_tables.c
--- trace/mercury_trace_tables.c 1 Sep 2005 07:37:26 -0000 1.38
+++ trace/mercury_trace_tables.c 24 Oct 2005 14:18:33 -0000
@@ -25,6 +25,7 @@
#include "mercury_trace.h"
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <ctype.h>
@@ -369,6 +370,279 @@
MR_print_proc_id_and_nl(fp, module->MR_ml_procs[i]);
}
}
+}
+
+#define MR_proc_compare_name(proc1, proc2) \
+ strcmp(proc1->MR_sle_user.MR_user_name, \
+ proc2->MR_sle_user.MR_user_name)
+
+#define MR_proc_compare_module_name(proc1, proc2) \
+ strcmp(proc1->MR_sle_user.MR_user_decl_module, \
+ proc2->MR_sle_user.MR_user_decl_module)
+
+#define MR_proc_compare_arity(proc1, proc2) \
+ (proc1->MR_sle_user.MR_user_arity - proc2->MR_sle_user.MR_user_arity)
+
+#define MR_proc_compare_mode(proc1, proc2) \
+ (proc1->MR_sle_user.MR_user_mode - proc2->MR_sle_user.MR_user_mode)
+
+#define MR_proc_same_name(proc1, proc2) \
+ (MR_proc_compare_name(proc1, proc2) == 0)
+
+#define MR_proc_same_module_name(proc1, proc2) \
+ (MR_proc_compare_module_name(proc1, proc2) == 0)
+
+#define MR_proc_same_arity(proc1, proc2) \
+ (MR_proc_compare_arity(proc1, proc2) == 0)
+
+#define MR_proc_same_name_module_arity(proc1, proc2) \
+ (MR_proc_same_name(proc1, proc2) && \
+ MR_proc_same_module_name(proc1, proc2) && \
+ MR_proc_same_arity(proc1, proc2))
+
+static int
+MR_compare_proc_layout_by_name(const void *ptr1, const void *ptr2)
+{
+ const MR_Proc_Layout **proc_addr1;
+ const MR_Proc_Layout **proc_addr2;
+ const MR_Proc_Layout *proc1;
+ const MR_Proc_Layout *proc2;
+ int result;
+
+ proc_addr1 = (const MR_Proc_Layout **) ptr1;
+ proc_addr2 = (const MR_Proc_Layout **) ptr2;
+ proc1 = *proc_addr1;
+ proc2 = *proc_addr2;
+ result = MR_proc_compare_name(proc1, proc2);
+ if (result != 0) {
+ return result;
+ }
+
+ /*
+ ** Return equal only if the module name and the arity are the same as well,
+ ** in order to group all procedures of a predicate together.
+ */
+
+ result = MR_proc_compare_module_name(proc1, proc2);
+ if (result != 0) {
+ return result;
+ }
+
+ result = MR_proc_compare_arity(proc1, proc2);
+ if (result != 0) {
+ return result;
+ }
+
+ return MR_proc_compare_mode(proc1, proc2);
+}
+
+#define MR_type_compare_name(type1, type2) \
+ strcmp(type1->MR_type_ctor_name, \
+ type2->MR_type_ctor_name)
+
+#define MR_type_compare_module_name(type1, type2) \
+ strcmp(type1->MR_type_ctor_module_name, \
+ type2->MR_type_ctor_module_name)
+
+#define MR_type_compare_arity(type1, type2) \
+ (type1->MR_type_ctor_arity - type2->MR_type_ctor_arity)
+
+#define MR_type_same_name(type1, type2) \
+ (MR_type_compare_name(type1, type2) == 0)
+
+#define MR_type_same_module_name(type1, type2) \
+ (MR_type_compare_module_name(type1, type2) == 0)
+
+static int
+MR_compare_type_ctor_by_name(const void *ptr1, const void *ptr2)
+{
+ const MR_TypeCtorInfo *type_ctor_addr1;
+ const MR_TypeCtorInfo *type_ctor_addr2;
+ MR_TypeCtorInfo type_ctor1;
+ MR_TypeCtorInfo type_ctor2;
+ int result;
+
+ type_ctor_addr1 = (const MR_TypeCtorInfo *) ptr1;
+ type_ctor_addr2 = (const MR_TypeCtorInfo *) ptr2;
+ type_ctor1 = *type_ctor_addr1;
+ type_ctor2 = *type_ctor_addr2;
+ result = MR_type_compare_name(type_ctor1, type_ctor2);
+ if (result != 0) {
+ return result;
+ }
+
+ result = MR_type_compare_module_name(type_ctor1, type_ctor2);
+ if (result != 0) {
+ return result;
+ }
+
+ return MR_type_compare_arity(type_ctor1, type_ctor2);
+}
+
+void
+MR_print_ambiguities(FILE *fp)
+{
+ int module_num;
+ int proc_num;
+ int type_num;
+ int end_proc_num;
+ int end_type_num;
+ int num_procs;
+ int num_types;
+ int next_proc_num;
+ int procs_in_module;
+ const MR_Module_Layout *module;
+ const MR_Proc_Layout **procs;
+ const MR_Proc_Layout *cur_proc;
+ MR_TypeCtorInfo *type_ctors;
+ MR_TypeCtorInfo type_ctor_info;
+ MR_Dlist *type_ctor_list;
+ MR_Dlist *element_ptr;
+ MR_bool *report;
+ int num_distinct;
+ int num_ambiguous;
+ int i;
+
+ num_procs = 0;
+ for (module_num = 0; module_num < MR_module_info_next; module_num++) {
+ num_procs += MR_module_infos[module_num]->MR_ml_proc_count;
+ }
+
+ /*
+ ** num_procs is an conservative estimate of the number of user-defined
+ ** procs.
+ */
+
+ procs = malloc(sizeof(const MR_Proc_Layout *) * num_procs);
+ if (procs == NULL) {
+ fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+ return;
+ }
+
+ report = malloc(sizeof(MR_bool) * num_procs);
+ if (report == NULL) {
+ fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+ return;
+ }
+
+ next_proc_num = 0;
+ for (module_num = 0; module_num < MR_module_info_next; module_num++) {
+ module = MR_module_infos[module_num];
+ procs_in_module = MR_module_infos[module_num]->MR_ml_proc_count;
+ for (proc_num = 0; proc_num < procs_in_module; proc_num++) {
+ cur_proc = module->MR_ml_procs[proc_num];
+ if (! MR_PROC_LAYOUT_IS_UCI(cur_proc)) {
+ procs[next_proc_num] = cur_proc;
+ next_proc_num++;
+ }
+ }
+ }
+
+ num_procs = next_proc_num;
+ qsort(procs, num_procs, sizeof(const MR_Proc_Layout *),
+ MR_compare_proc_layout_by_name);
+
+ fprintf(fp, "Ambiguous predicate and function names:\n");
+ num_ambiguous = 0;
+
+ proc_num = 0;
+ while (proc_num < num_procs) {
+ end_proc_num = proc_num + 1;
+ while (end_proc_num < num_procs &&
+ MR_proc_same_name(procs[proc_num], procs[end_proc_num]))
+ {
+ end_proc_num++;
+ }
+
+ if (end_proc_num > proc_num + 1) {
+ report[proc_num] = MR_TRUE;
+ num_distinct = 1;
+
+ for (i = proc_num + 1; i < end_proc_num; i++) {
+ if (MR_proc_same_name_module_arity(procs[i-1], procs[i])) {
+ report[i] = MR_FALSE;
+ } else {
+ report[i] = MR_TRUE;
+ num_distinct++;
+ }
+ }
+
+ if (num_distinct > 1) {
+ num_ambiguous++;
+ fprintf(fp, "\n");
+
+ for (i = proc_num; i < end_proc_num; i++) {
+ if (report[i]) {
+ fprintf(fp, "%s %s.%s/%d\n",
+ (procs[i]->MR_sle_user.MR_user_pred_or_func
+ == MR_PREDICATE ? "pred" : "func"),
+ procs[i]->MR_sle_user.MR_user_decl_module,
+ procs[i]->MR_sle_user.MR_user_name,
+ procs[i]->MR_sle_user.MR_user_arity);
+ }
+ }
+ }
+ }
+
+ proc_num = end_proc_num;
+ }
+
+ if (num_ambiguous == 0) {
+ fprintf(fp, "\nNone\n");
+ }
+
+ free(procs);
+ free(report);
+
+ type_ctor_list = MR_all_type_ctor_infos(&num_types);
+ type_ctors = malloc(sizeof(MR_TypeCtorInfo) * num_types);
+ if (type_ctors == NULL) {
+ fprintf(MR_mdb_err, "Error: could not allocate sufficient memory\n");
+ return;
+ }
+
+ type_num = 0;
+ MR_for_dlist (element_ptr, type_ctor_list) {
+ type_ctor_info = (MR_TypeCtorInfo) MR_dlist_data(element_ptr);
+ type_ctors[type_num] = type_ctor_info;
+ type_num++;
+ }
+
+ qsort(type_ctors, num_types, sizeof(MR_TypeCtorInfo),
+ MR_compare_type_ctor_by_name);
+
+ fprintf(fp, "\nAmbiguous type names:\n");
+ num_ambiguous = 0;
+
+ type_num = 0;
+ while (type_num < num_types) {
+ end_type_num = type_num + 1;
+ while (end_type_num < num_types &&
+ MR_type_same_name(type_ctors[type_num], type_ctors[end_type_num]))
+ {
+ end_type_num++;
+ }
+
+ if (end_type_num > type_num + 1) {
+ num_ambiguous++;
+ fprintf(fp, "\n");
+
+ for (i = type_num; i < end_type_num; i++) {
+ fprintf(fp, "%s.%s/%d\n",
+ type_ctors[i]->MR_type_ctor_module_name,
+ type_ctors[i]->MR_type_ctor_name,
+ type_ctors[i]->MR_type_ctor_arity);
+ }
+ }
+
+ type_num = end_type_num;
+ }
+
+ if (num_ambiguous == 0) {
+ fprintf(fp, "\nNone\n");
+ }
+
+ free(type_ctors);
}
MR_bool
Index: trace/mercury_trace_tables.h
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/trace/mercury_trace_tables.h,v
retrieving revision 1.20
diff -u -b -r1.20 mercury_trace_tables.h
--- trace/mercury_trace_tables.h 14 Aug 2005 03:20:59 -0000 1.20
+++ trace/mercury_trace_tables.h 24 Oct 2005 05:13:22 -0000
@@ -74,6 +74,14 @@
extern void MR_dump_module_procs(FILE *fp, const char *name);
/*
+** Print the names of ambiguous predicates, functions and types. The ambiguity
+** may exist because a predicate, function or type with that name is defined
+** with more than one arity or in more than one module.
+*/
+
+extern void MR_print_ambiguities(FILE *fp);
+
+/*
** A procedure specification has several components, the meaning of which
** depends on whether the procedure is from a user defined procedure (user)
** or from a unify, compare, index or init procedure (uci).
cvs diff: Diffing util
cvs diff: Diffing vim
cvs diff: Diffing vim/after
cvs diff: Diffing vim/ftplugin
cvs diff: Diffing vim/syntax
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list