static int p_trie_get_last_entry(void) { TrData data; /* check args */ if (!YAP_IsIntTerm(arg_trie)) return FALSE; /* get last trie entry */ if (!(data = trie_get_last_entry((TrEntry) YAP_IntOfTerm(arg_trie)))) return FALSE; return YAP_Unify(arg_ref, YAP_MkIntTerm((YAP_Int) data)); }
inline TrData trie_traverse_init(TrEntry trie, TrData init_data) { TrData data; if (init_data) { data = TrData_next(init_data); } else { if (CURRENT_TRAVERSE_MODE == TRAVERSE_MODE_FORWARD) data = TrEntry_first_data(trie); else data = trie_get_last_entry(trie); } TrEntry_traverse_data(trie) = data; return data; }