YAP 7.1.0
tries.yap
Go to the documentation of this file.
1/**
2 * @file tries.yap
3 * @author Ricardo Rocha
4 *
5 * @brief YAP tries interface
6 *
7 *
8*/
9/****************************************
10 File: tries.yap
11 Author: Ricardo Rocha
12 Comments: Tries module for Yap Prolog
13 version: $ID$
14****************************************/
15
16:- module(tries, [
17 trie_open/1,
20 trie_empty/1,
22 trie_put_entry/3,
25 trie_get_first_entry/2,
26 trie_get_last_entry/2,
27 trie_traverse/2,
28 trie_traverse/3,
31 trie_join/2,
32 trie_intersect/2,
33 trie_count_join/3,
34 trie_count_intersect/3,
35 trie_dup/2,
42 open_trie/1,
43 close_trie/1,
44 close_all_tries/0,
45 put_trie_entry/4,
46 get_trie_entry/3,
47 remove_trie_entry/1,
48 print_trie/1,
49 trie_traverse_mode/1,
50 trie_disable_hash/0,
51 trie_enable_hash/0,
52 trie_traverse_first/2,
53 trie_traverse_next/2,
54 trie_to_list/2,
55 trie_to_depth_breadth_trie/4,
56 trie_to_depth_breadth_trie/6,
57 trie_get_depth_breadth_reduction_entry/1,
58 trie_get_depth_breadth_reduction_opt_level_count/2,
59 trie_replace_nested_trie/3
60 ]).
61
62/** @defgroup tries Trie DataStructure
63@ingroup YAPLibrary
64@{
65
66@brief Engine Independent trie library
67
68The next routines provide a set of utilities to create and manipulate
69prefix trees of Prolog terms. Tries were originally proposed to
70implement tabling in Logic Programming, but can be used for other
71purposes. The tries will be stored in the Prolog database and can seen
72as alternative to `assert` and `record` family of
73primitives. Most of these utilities have been implemented in `C`
74for efficiency. They are available through the
75`use_module(library(tries))` command.
76
77
78*/
79
80
81
82:- load_foreign_files([tries], [], init_tries).
83
84trie_empty(Trie) :-
85 trie_usage(Trie, 0, 0, _).
86
87trie_dup(Trie, CopyTrie) :-
88 trie_open(CopyTrie),
89 trie_join(CopyTrie, Trie).
90
91trie_traverse(Trie, Ref) :-
92 trie_traverse(Trie, 0, Ref).
93
94trie_to_depth_breadth_trie(Trie, DepthBreadthTrie, FinalLabel, OptimizationLevel) :-
95 integer(OptimizationLevel),
96 trie_dup(Trie, CopyTrie),
97 trie_open(DepthBreadthTrie),
98 trie_depth_breadth(CopyTrie, DepthBreadthTrie, FinalLabel, OptimizationLevel, 0, _),
99 trie_close(CopyTrie).
100
101trie_to_depth_breadth_trie(Trie, DepthBreadthTrie, FinalLabel, OptimizationLevel, StartCounter, EndCounter) :-
102 trie_depth_breadth(Trie, DepthBreadthTrie, FinalLabel, OptimizationLevel, StartCounter, EndCounter).
103
104%% @}
105
106
load_foreign_files( Files, Libs, InitRoutine)
integer( T)
trie_check_entry(+ Trie,+ Term,- Ref)
trie_close(+ Id)
trie_close_all
trie_get_entry(+ Ref,- Term)
trie_load(- Trie,+ FileName)
trie_max_stats(- Memory,- Tries,- Entries,- Nodes)
trie_mode(? Mode)
trie_print(+ Trie)
trie_remove_entry(+ Ref)
trie_remove_subtree(+ Ref)
trie_save(+ Trie,+ FileName)
trie_stats(- Memory,- Tries,- Entries,- Nodes)
trie_usage(+ Trie,- Entries,- Nodes,- VirtualNodes)