update bprolog emulation stuff.

This commit is contained in:
Vítor Santos Costa
2011-11-03 07:54:51 +09:00
parent 5ce8d637ef
commit 1d2de81e86
5 changed files with 302 additions and 22 deletions

View File

@@ -1,3 +1,5 @@
%% -*- Prolog -*-
:- module(bphash, [new_hashtable/1,
new_hashtable/2,
is_hashtable/1,
@@ -12,7 +14,7 @@
:- use_module(library(bhash), [b_hash_new/2,
is_b_hash/1,
b_hash_lookup/3,
b_hash_insert/3,
b_hash_insert/4,
b_hash_size/2,
b_hash_to_list/2,
b_hash_values_to_list/2,
@@ -31,19 +33,20 @@ hashtable_get(Hash, Key, Value) :-
b_hash_lookup(Key, Value, Hash).
hashtable_put(Hash, Key, Value) :-
b_hash_insert(Key, Value, Hash).
b_hash_insert(Hash, Key, Value, Hash).
hashtable_register(Hash, Key, Value) :-
b_hash_lookup(Key, Value0, Hash), !,
Value0 = Value.
hashtable_register(Hash, Key, Value) :-
b_hash_insert(Hash, Key, Value).
b_hash_insert(Hash, Key, Value, Hash).
hashtable_size(Hash, Size) :-
b_hash_size(Hash, Size).
hashtable_to_list(Hash, List) :-
b_hash_to_list(Hash, List).
b_hash_to_list(Hash, List0),
keylist_to_bp(List0, List).
hashtable_keys_to_list(Hash, List) :-
b_hash_keys_to_list(Hash, List).
@@ -51,6 +54,10 @@ hashtable_keys_to_list(Hash, List) :-
hashtable_values_to_list(Hash, List) :-
b_hash_values_to_list(Hash, List).
keylist_to_bp([], []).
keylist_to_bp((X-Y).List0, (X=Y).List) :-
keylist_to_bp(List0, List).