26#include "core_tries.h"
27#include "base_tries.h"
43O_API
void init_tries(
void);
44static YAP_Bool p_trie_open(
void);
45static YAP_Bool p_trie_close(
void);
46static YAP_Bool p_trie_close_all(
void);
47static YAP_Bool p_trie_mode(
void);
48static YAP_Bool p_trie_put_entry(
void);
49static YAP_Bool p_trie_check_entry(
void);
50static YAP_Bool p_trie_get_entry(
void);
51static YAP_Bool p_trie_get_first_entry(
void);
52static YAP_Bool p_trie_get_last_entry(
void);
53static YAP_Bool p_trie_traverse_init(
void);
54static YAP_Bool p_trie_traverse_cont(
void);
55static YAP_Bool p_trie_remove_entry(
void);
56static YAP_Bool p_trie_remove_subtree(
void);
57static YAP_Bool p_trie_join(
void);
58static YAP_Bool p_trie_intersect(
void);
59static YAP_Bool p_trie_count_join(
void);
60static YAP_Bool p_trie_count_intersect(
void);
61static YAP_Bool p_trie_save(
void);
62static YAP_Bool p_trie_load(
void);
63static YAP_Bool p_trie_stats(
void);
64static YAP_Bool p_trie_max_stats(
void);
65static YAP_Bool p_trie_usage(
void);
66static YAP_Bool p_trie_print(
void);
68static YAP_Bool p_trie_traverse_mode(
void);
69static YAP_Bool p_trie_disable_hash(
void);
70static YAP_Bool p_trie_enable_hash(
void);
71static YAP_Bool p_trie_traverse_first(
void);
72static YAP_Bool p_trie_traverse_next(
void);
74static YAP_Bool p_trie_to_list(
void);
77static YAP_Bool p_trie_depth_breadth(
void);
78static YAP_Bool p_trie_get_depth_breadth_reduction_current_data(
void);
79static YAP_Bool p_trie_get_db_opt_level_count_init(
void);
80static YAP_Bool p_trie_get_db_opt_level_count_cont(
void);
81static YAP_Bool p_trie_replace_nested_trie(
void);
82static YAP_Bool p_trie_db_opt_min_prefix(
void);
85static YAP_Bool p_open_trie(
void);
86static YAP_Bool p_close_trie(
void);
87static YAP_Bool p_close_all_tries(
void);
88static YAP_Bool p_put_trie_entry(
void);
89static YAP_Bool p_get_trie_entry(
void);
90static YAP_Bool p_remove_trie_entry(
void);
91static YAP_Bool p_print_trie(
void);
99O_API
void init_tries(
void) {
102 YAP_UserCPredicate(
"trie_open", p_trie_open, 1);
103 YAP_UserCPredicate(
"trie_close", p_trie_close, 1);
104 YAP_UserCPredicate(
"trie_close_all", p_trie_close_all, 0);
105 YAP_UserCPredicate(
"trie_mode", p_trie_mode, 1);
106 YAP_UserCPredicate(
"trie_put_entry", p_trie_put_entry, 3);
107 YAP_UserCPredicate(
"trie_check_entry", p_trie_check_entry, 3);
108 YAP_UserCPredicate(
"trie_get_entry", p_trie_get_entry, 2);
109 YAP_UserCPredicate(
"trie_get_first_entry", p_trie_get_first_entry, 2);
110 YAP_UserCPredicate(
"trie_get_last_entry", p_trie_get_last_entry, 2);
111 YAP_UserBackCPredicate(
"trie_traverse", p_trie_traverse_init, p_trie_traverse_cont, 3, 0);
112 YAP_UserCPredicate(
"trie_remove_entry", p_trie_remove_entry, 1);
113 YAP_UserCPredicate(
"trie_remove_subtree", p_trie_remove_subtree, 1);
114 YAP_UserCPredicate(
"trie_join", p_trie_join, 2);
115 YAP_UserCPredicate(
"trie_intersect", p_trie_intersect, 2);
116 YAP_UserCPredicate(
"trie_count_join", p_trie_count_join, 3);
117 YAP_UserCPredicate(
"trie_count_intersect", p_trie_count_intersect, 3);
118 YAP_UserCPredicate(
"trie_save", p_trie_save, 2);
119 YAP_UserCPredicate(
"trie_load", p_trie_load, 2);
120 YAP_UserCPredicate(
"trie_usage", p_trie_usage, 4);
121 YAP_UserCPredicate(
"trie_stats", p_trie_stats, 4);
122 YAP_UserCPredicate(
"trie_max_stats", p_trie_max_stats, 4);
123 YAP_UserCPredicate(
"trie_print", p_trie_print, 1);
125 YAP_UserCPredicate(
"trie_traverse_mode", p_trie_traverse_mode, 1);
126 YAP_UserCPredicate(
"trie_disable_hash", p_trie_disable_hash, 0);
127 YAP_UserCPredicate(
"trie_enable_hash", p_trie_enable_hash, 0);
128 YAP_UserCPredicate(
"trie_traverse_first", p_trie_traverse_first, 2);
129 YAP_UserCPredicate(
"trie_traverse_next", p_trie_traverse_next, 2);
131 YAP_UserCPredicate(
"trie_to_list", p_trie_to_list, 2);
134 YAP_UserCPredicate(
"trie_depth_breadth", p_trie_depth_breadth, 6);
135 YAP_UserCPredicate(
"trie_get_depth_breadth_reduction_entry", p_trie_get_depth_breadth_reduction_current_data, 1);
136 YAP_UserBackCPredicate(
"trie_get_depth_breadth_reduction_opt_level_count", p_trie_get_db_opt_level_count_init, p_trie_get_db_opt_level_count_cont, 2,
sizeof(
db_trie_opt_level));
137 YAP_UserCPredicate(
"trie_replace_nested_trie", p_trie_replace_nested_trie, 3);
138 YAP_UserCPredicate(
"trie_db_opt_min_prefix", p_trie_db_opt_min_prefix, 1);
141 YAP_UserCPredicate(
"open_trie", p_open_trie, 1);
142 YAP_UserCPredicate(
"close_trie", p_close_trie, 1);
143 YAP_UserCPredicate(
"close_all_tries", p_close_all_tries, 0);
144 YAP_UserCPredicate(
"put_trie_entry", p_put_trie_entry, 4);
145 YAP_UserCPredicate(
"get_trie_entry", p_get_trie_entry, 3);
146 YAP_UserCPredicate(
"remove_trie_entry", p_remove_trie_entry, 1);
147 YAP_UserCPredicate(
"print_trie", p_print_trie, 1);
158static YAP_Bool p_open_trie(
void) {
159 return p_trie_open();
164static YAP_Bool p_close_trie(
void) {
165 return p_trie_close();
170static YAP_Bool p_close_all_tries(
void) {
171 return p_trie_close_all();
185#define arg_mode YAP_ARG1
186#define arg_trie YAP_ARG2
187#define arg_entry YAP_ARG3
188#define arg_ref YAP_ARG4
189static YAP_Bool p_put_trie_entry(
void) {
191 const char *mode_str;
192 YAP_Int mode, current_mode;
195 mode_str = YAP_AtomName(YAP_AtomOfTerm(arg_mode));
196 if (!strcmp(mode_str,
"std"))
197 mode = TRIE_MODE_STANDARD;
198 else if (!strcmp(mode_str,
"rev"))
199 mode = TRIE_MODE_REVERSE;
202 if (!YAP_IsIntTerm(arg_trie))
206 current_mode = trie_get_mode();
208 data = trie_put_entry((
TrEntry) YAP_IntOfTerm(arg_trie), arg_entry);
209 trie_set_mode(current_mode);
210 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
226#define arg_mode YAP_ARG1
227#define arg_ref YAP_ARG2
228#define arg_entry YAP_ARG3
229static YAP_Bool p_get_trie_entry(
void) {
231 const char *mode_str;
232 YAP_Int mode, current_mode;
235 mode_str = YAP_AtomName(YAP_AtomOfTerm(arg_mode));
236 if (!strcmp(mode_str,
"std"))
237 mode = TRIE_MODE_STANDARD;
238 else if (!strcmp(mode_str,
"rev"))
239 mode = TRIE_MODE_REVERSE;
242 if (!YAP_IsIntTerm(arg_ref))
246 current_mode = trie_get_mode();
248 entry = trie_get_entry((
TrData) YAP_IntOfTerm(arg_ref));
249 trie_set_mode(current_mode);
250 return YAP_Unify(arg_entry, entry);
257static YAP_Bool p_remove_trie_entry(
void) {
258 return p_trie_remove_entry();
263static YAP_Bool p_print_trie(
void) {
264 return p_trie_print();
274#define arg_trie YAP_ARG1
275static YAP_Bool p_trie_open(
void) {
279 if (!YAP_IsVarTerm(arg_trie))
284 return YAP_Unify(arg_trie, YAP_MkIntTerm((YAP_Int) trie));
298#define arg_trie YAP_ARG1
299static YAP_Bool p_trie_close(
void) {
301 if (!YAP_IsIntTerm(arg_trie))
305 trie_close((
TrEntry) YAP_IntOfTerm(arg_trie));
320static YAP_Bool p_trie_close_all(
void) {
336#define arg_mode YAP_ARG1
337static YAP_Bool p_trie_mode(
void) {
339 const char *mode_str;
343 if (YAP_IsVarTerm(arg_mode)) {
344 mode = trie_get_mode();
345 if (mode == TRIE_MODE_STANDARD)
346 mode_term = YAP_MkAtomTerm(YAP_LookupAtom(
"std"));
347 else if (mode == TRIE_MODE_REVERSE)
348 mode_term = YAP_MkAtomTerm(YAP_LookupAtom(
"rev"));
351 return YAP_Unify(arg_mode, mode_term);
355 mode_str = YAP_AtomName(YAP_AtomOfTerm(arg_mode));
356 if (!strcmp(mode_str,
"std"))
357 mode = TRIE_MODE_STANDARD;
358 else if (!strcmp(mode_str,
"rev"))
359 mode = TRIE_MODE_REVERSE;
369#define arg_trie YAP_ARG1
370#define arg_entry YAP_ARG2
371#define arg_ref YAP_ARG3
372static YAP_Bool p_trie_put_entry(
void) {
376 if (!YAP_IsIntTerm(arg_trie))
380 data = trie_put_entry((
TrEntry) YAP_IntOfTerm(arg_trie), arg_entry);
381 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
398#define arg_trie YAP_ARG1
399#define arg_entry YAP_ARG2
400#define arg_ref YAP_ARG3
401static YAP_Bool p_trie_check_entry(
void) {
405 if (!YAP_IsIntTerm(arg_trie))
409 if (!(data = trie_check_entry((
TrEntry) YAP_IntOfTerm(arg_trie), arg_entry)))
411 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
419#define arg_ref YAP_ARG1
420#define arg_entry YAP_ARG2
421static YAP_Bool p_trie_get_entry(
void) {
425 if (!YAP_IsIntTerm(arg_ref))
429 entry = trie_get_entry((
TrData) YAP_IntOfTerm(arg_ref));
430 return YAP_Unify(arg_entry, entry);
437#define arg_trie YAP_ARG1
438#define arg_ref YAP_ARG2
439static YAP_Bool p_trie_get_first_entry(
void) {
443 if (!YAP_IsIntTerm(arg_trie))
447 if (!(data = trie_get_first_entry((
TrEntry) YAP_IntOfTerm(arg_trie))))
449 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
456#define arg_trie YAP_ARG1
457#define arg_ref YAP_ARG2
458static YAP_Bool p_trie_get_last_entry(
void) {
462 if (!YAP_IsIntTerm(arg_trie))
466 if (!(data = trie_get_last_entry((
TrEntry) YAP_IntOfTerm(arg_trie))))
468 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
475#define arg_trie YAP_ARG1
476#define arg_init_ref YAP_ARG2
477#define arg_ref YAP_ARG3
478static YAP_Bool p_trie_traverse_init(
void) {
482 if (!YAP_IsIntTerm(arg_trie))
484 if (!YAP_IsIntTerm(arg_init_ref))
488 if (!(data = trie_traverse_init((
TrEntry) YAP_IntOfTerm(arg_trie), (
TrData) YAP_IntOfTerm(arg_init_ref)))) {
492 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
500#define arg_trie YAP_ARG1
501#define arg_init_ref YAP_ARG2
502#define arg_ref YAP_ARG3
503static YAP_Bool p_trie_traverse_cont(
void) {
507 if (!(data = trie_traverse_cont((
TrEntry) YAP_IntOfTerm(arg_trie)))) {
511 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
527#define arg_ref YAP_ARG1
528static YAP_Bool p_trie_remove_entry(
void) {
530 if (!YAP_IsIntTerm(arg_ref))
534 trie_remove_entry((
TrData) YAP_IntOfTerm(arg_ref));
549#define arg_ref YAP_ARG1
550static YAP_Bool p_trie_remove_subtree(
void) {
552 if (!YAP_IsIntTerm(arg_ref))
556 trie_remove_subtree((
TrData) YAP_IntOfTerm(arg_ref));
563#define arg_trie_dest YAP_ARG1
564#define arg_trie_source YAP_ARG2
565static YAP_Bool p_trie_join(
void) {
567 if (!YAP_IsIntTerm(arg_trie_dest))
569 if (!YAP_IsIntTerm(arg_trie_source))
573 trie_join((
TrEntry) YAP_IntOfTerm(arg_trie_dest), (
TrEntry) YAP_IntOfTerm(arg_trie_source));
577#undef arg_trie_source
581#define arg_trie_dest YAP_ARG1
582#define arg_trie_source YAP_ARG2
583static YAP_Bool p_trie_intersect(
void) {
585 if (!YAP_IsIntTerm(arg_trie_dest))
587 if (!YAP_IsIntTerm(arg_trie_source))
591 trie_intersect((
TrEntry) YAP_IntOfTerm(arg_trie_dest), (
TrEntry) YAP_IntOfTerm(arg_trie_source));
595#undef arg_trie_source
599#define arg_trie1 YAP_ARG1
600#define arg_trie2 YAP_ARG2
601#define arg_entries YAP_ARG3
602static YAP_Bool p_trie_count_join(
void) {
606 if (!YAP_IsIntTerm(arg_trie1))
608 if (!YAP_IsIntTerm(arg_trie2))
612 entries = trie_count_join((
TrEntry) YAP_IntOfTerm(arg_trie1), (
TrEntry) YAP_IntOfTerm(arg_trie2));
613 return YAP_Unify(arg_entries, YAP_MkIntTerm(entries));
621#define arg_trie1 YAP_ARG1
622#define arg_trie2 YAP_ARG2
623#define arg_entries YAP_ARG3
624static YAP_Bool p_trie_count_intersect(
void) {
628 if (!YAP_IsIntTerm(arg_trie1))
630 if (!YAP_IsIntTerm(arg_trie2))
634 entries = trie_count_intersect((
TrEntry) YAP_IntOfTerm(arg_trie1), (
TrEntry) YAP_IntOfTerm(arg_trie2));
635 return YAP_Unify(arg_entries, YAP_MkIntTerm(entries));
648#define arg_trie YAP_ARG1
649#define arg_file YAP_ARG2
650static YAP_Bool p_trie_save(
void) {
651 const char *file_str;
655 if (!YAP_IsIntTerm(arg_trie))
657 if (!YAP_IsAtomTerm(arg_file))
661 file_str = YAP_AtomName(YAP_AtomOfTerm(arg_file));
662 if (!(file = fopen(file_str,
"w")))
666 trie_save((
TrEntry) YAP_IntOfTerm(arg_trie), file);
683#define arg_trie YAP_ARG1
684#define arg_file YAP_ARG2
685static YAP_Bool p_trie_load(
void) {
687 const char *file_str;
691 if (!YAP_IsVarTerm(arg_trie))
693 if (!YAP_IsAtomTerm(arg_file))
697 file_str = YAP_AtomName(YAP_AtomOfTerm(arg_file));
698 if (!(file = fopen(file_str,
"r")))
702 if (!(data = trie_load(file)))
706 return YAP_Unify(arg_trie, YAP_MkIntTerm((YAP_Int) data));
722#define arg_memory YAP_ARG1
723#define arg_tries YAP_ARG2
724#define arg_entries YAP_ARG3
725#define arg_nodes YAP_ARG4
726static YAP_Bool p_trie_stats(
void) {
727 YAP_Int memory, tries, entries, nodes;
730 trie_stats(&memory, &tries, &entries, &nodes);
731 if (!YAP_Unify(arg_memory, YAP_MkIntTerm(memory)))
733 if (!YAP_Unify(arg_tries, YAP_MkIntTerm(tries)))
735 if (!YAP_Unify(arg_entries, YAP_MkIntTerm(entries)))
737 if (!YAP_Unify(arg_nodes, YAP_MkIntTerm(nodes)))
757#define arg_memory YAP_ARG1
758#define arg_tries YAP_ARG2
759#define arg_entries YAP_ARG3
760#define arg_nodes YAP_ARG4
761static YAP_Bool p_trie_max_stats(
void) {
762 YAP_Int memory, tries, entries, nodes;
765 trie_max_stats(&memory, &tries, &entries, &nodes);
766 if (!YAP_Unify(arg_memory, YAP_MkIntTerm(memory)))
768 if (!YAP_Unify(arg_tries, YAP_MkIntTerm(tries)))
770 if (!YAP_Unify(arg_entries, YAP_MkIntTerm(entries)))
772 if (!YAP_Unify(arg_nodes, YAP_MkIntTerm(nodes)))
792#define arg_trie YAP_ARG1
793#define arg_entries YAP_ARG2
794#define arg_nodes YAP_ARG3
795#define arg_virtualnodes YAP_ARG4
796static YAP_Bool p_trie_usage(
void) {
797 YAP_Int entries, nodes, virtualnodes;
800 if (!YAP_IsIntTerm(arg_trie))
804 trie_usage((
TrEntry) YAP_IntOfTerm(arg_trie), &entries, &nodes, &virtualnodes);
805 if (!YAP_Unify(arg_entries, YAP_MkIntTerm(entries)))
807 if (!YAP_Unify(arg_nodes, YAP_MkIntTerm(nodes)))
809 if (!YAP_Unify(arg_virtualnodes, YAP_MkIntTerm(virtualnodes)))
816#undef arg_virtualnodes
829#define arg_trie YAP_ARG1
830static YAP_Bool p_trie_print(
void) {
832 if (!YAP_IsIntTerm(arg_trie))
836 trie_print((
TrEntry) YAP_IntOfTerm(arg_trie));
843#define arg_mode YAP_ARG1
844static YAP_Bool p_trie_traverse_mode(
void) {
846 const char *mode_str;
850 if (YAP_IsVarTerm(arg_mode)) {
851 mode = trie_get_traverse_mode();
852 if (mode == TRAVERSE_MODE_FORWARD)
853 mode_term = YAP_MkAtomTerm(YAP_LookupAtom(
"forward"));
854 else if (mode == TRAVERSE_MODE_BACKWARD)
855 mode_term = YAP_MkAtomTerm(YAP_LookupAtom(
"backward"));
858 return YAP_Unify(arg_mode, mode_term);
862 mode_str = YAP_AtomName(YAP_AtomOfTerm(arg_mode));
863 if (!strcmp(mode_str,
"forward"))
864 mode = TRAVERSE_MODE_FORWARD;
865 else if (!strcmp(mode_str,
"backward"))
866 mode = TRAVERSE_MODE_BACKWARD;
869 trie_set_traverse_mode(mode);
876#define arg_trie YAP_ARG1
877#define arg_ref YAP_ARG2
878static YAP_Bool p_trie_traverse_first(
void) {
882 if (!YAP_IsIntTerm(arg_trie))
886 if (!(data = trie_traverse_first((
TrEntry) YAP_IntOfTerm(arg_trie)))) {
889 return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data));
896#define arg_cur YAP_ARG1
897#define arg_next YAP_ARG2
898static YAP_Bool p_trie_traverse_next(
void) {
902 if (!YAP_IsIntTerm(arg_cur))
906 if (!(data = trie_traverse_next((
TrData) YAP_IntOfTerm(arg_cur)))) {
909 return YAP_Unify(arg_next, YAP_MkIntTerm((YAP_Int) data));
916static YAP_Bool p_trie_disable_hash(
void) {
917 trie_disable_hash_table();
923static YAP_Bool p_trie_enable_hash(
void) {
924 trie_enable_hash_table();
930#define arg_trie YAP_ARG1
931#define arg_list YAP_ARG2
932static YAP_Bool p_trie_to_list(
void) {
936 if (!YAP_IsIntTerm(arg_trie))
940 list = trie_to_list((
TrEntry) YAP_IntOfTerm(arg_trie));
941 return YAP_Unify(arg_list, list);
948#define arg_trie YAP_ARG1
949#define arg_db_trie YAP_ARG2
950#define arg_final_label YAP_ARG3
951#define arg_opt_level YAP_ARG4
952#define arg_start_counter YAP_ARG5
953#define arg_end_counter YAP_ARG6
954static YAP_Bool p_trie_depth_breadth(
void) {
956 if (!YAP_IsIntTerm(arg_opt_level))
958 if (!YAP_IsIntTerm(arg_start_counter))
961 YAP_Term t = trie_depth_breadth((
TrEntry) YAP_IntOfTerm(arg_trie), (
TrEntry) YAP_IntOfTerm(arg_db_trie), YAP_IntOfTerm(arg_opt_level), YAP_IntOfTerm(arg_start_counter), &End);
962 int a = YAP_Unify(t, arg_final_label);
963 a = a && YAP_Unify(YAP_MkIntTerm(End), arg_end_counter);
968#undef arg_final_label
970#undef arg_start_counter
971#undef arg_end_counter
975#define arg_entry YAP_ARG1
976static YAP_Bool p_trie_get_depth_breadth_reduction_current_data(
void) {
977 TrData data = trie_get_depth_breadth_reduction_current_data();
979 return YAP_Unify(arg_entry, YAP_MkIntTerm((YAP_Int) data));
988#define arg_opt_level YAP_ARG1
989#define arg_count YAP_ARG2
990static YAP_Bool p_trie_get_db_opt_level_count_init(
void) {
991 if (YAP_IsIntTerm(arg_opt_level)) {
992 if (YAP_IntOfTerm(arg_opt_level) > 0 && YAP_IntOfTerm(arg_opt_level) < 4) {
993 if (YAP_Unify(arg_count, YAP_MkIntTerm(trie_get_db_opt_level_count(YAP_IntOfTerm(arg_opt_level))))) {
1005 if (YAP_IsVarTerm(arg_opt_level)) {
1007 opt_level->value = YAP_MkIntTerm(1);
1008 if (YAP_Unify(arg_opt_level, opt_level->value)) {
1009 return YAP_Unify(arg_count, YAP_MkIntTerm(trie_get_db_opt_level_count(YAP_IntOfTerm(arg_opt_level))));
1022#define arg_opt_level YAP_ARG1
1023#define arg_count YAP_ARG2
1024static YAP_Bool p_trie_get_db_opt_level_count_cont(
void) {
1026 opt_level->value = YAP_MkIntTerm(YAP_IntOfTerm(opt_level->value) + 1);
1027 if (YAP_IntOfTerm(opt_level->value) < 4) {
1028 if (YAP_Unify(arg_opt_level, opt_level->value))
1029 return YAP_Unify(arg_count, YAP_MkIntTerm(trie_get_db_opt_level_count(YAP_IntOfTerm(arg_opt_level))));
1042#define arg_trie YAP_ARG1
1043#define arg_nested_id YAP_ARG2
1044#define arg_term YAP_ARG3
1045static YAP_Bool p_trie_replace_nested_trie(
void) {
1046 if (!YAP_IsIntTerm(arg_nested_id))
1048 if (!YAP_IsNonVarTerm(arg_term))
1050 trie_replace_nested_trie((
TrEntry) YAP_IntOfTerm(arg_trie), YAP_IntOfTerm(arg_nested_id), arg_term);
1059#define arg_min_prefix YAP_ARG1
1060static YAP_Bool p_trie_db_opt_min_prefix(
void) {
1064 if (YAP_IsVarTerm(arg_min_prefix)) {
1065 min_prefix = trie_get_db_opt_min_prefix();
1066 return YAP_Unify(arg_min_prefix, YAP_MkIntTerm(min_prefix));
1070 if (YAP_IsIntTerm(arg_min_prefix)) {
1071 min_prefix = YAP_IntOfTerm(arg_min_prefix);
1072 if (min_prefix > 1) {
1073 trie_set_db_opt_min_prefix(min_prefix);
1086int WINAPI win_tries(HANDLE, DWORD, LPVOID);
1088int WINAPI win_tries(HANDLE hinst, DWORD reason, LPVOID reserved)
1092 case DLL_PROCESS_ATTACH:
1094 case DLL_PROCESS_DETACH:
1096 case DLL_THREAD_ATTACH:
1098 case DLL_THREAD_DETACH: