| 書式 | db_open_env(+Home, +Info, -Handle) db_config(+Info) | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||||||||
| 注意 | Info は下記の素性構造であることが想定されています. (ldbm:info_env& ldbm:mode\ +Mode& (オプション) ldbm:bdbm_page_size\ +Pagesize& (オプション) ldbm:bdbm_cache_size\ +Cachesize& (オプション) ldbm:flags\ +Flags)
| ||||||||||||
| LiLDBM 環境をオープンします。(今のところは必要のない機能。将来マルチユーザー処理、トランザクション処理の機能が導入された時に必要になる。) | |||||||||||||
> :- db_open_env("myenv", (ldbm:bdbm_page_size\ 1024 &
ldbm:bdbm_cache_size\ 32768 &
ldbm:flags\ ["CREATE", "INIT_MPOOL", "PRIVATE"]), $H).
| |||||||||||||
| 書式 | db_open(+Pred) db_open(+File, +Info, +Pred) db_open(+Env, +file, +Info, +Pred) | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||||||||||||||||||||||||||||||
| 注意 | 配列名は、予め、述語(pred型の subtype)として定義されている必要があります。また、配列名と ( の間には空白を置くことはできません。 Predの表記方法 : 任意の次元のキーの定義, 任意の数のデータの定義をカンマで区切って列挙します。但し、配列は述語として扱われるため、合計の引数は15個までになります。キーには次の6種類があります.
(ldbm:info_db& ldbm:mode\ +Mode& (オプション) ldbm:flags\ +Flags& (オプション) ldbm:type\ +Type& (オプション) ldbm:cache_size\ +Cache (オプション))
| ||||||||||||||||||||||||||||||||||
| open_db/1は静的に値を保持するDBをメモリ上に作ります. open_db/3もしくはopen_db\4は静的に値を保持するDBをファイル上に作ります。 | |||||||||||||||||||||||||||||||||||
> myarr <- [pred].
> :- db_open("mydata.db", (ldbm:flags\ ["CREATE"]),
myarr(key_integer & ARRAY_BASE\0 & ARRAY_SIZE\2000,
array_value)).
> myarr2 <- [pred].
> :- db_open(myarr2(key_inthash, array_value_string)).<BR><BR>
> myarr3 <- [pred].
> :- db_open(myarr3((key_integer & ARRAY_BASE\ 0 & ARRAY_SIZE\ 100),
(key_integer & ARRAY_BASE\ 0 & ARRAY_SIZE\ 200),
array_value_integer,
array_value_integer,
array_value_string)).
最初の例では、整数がキーで素性構造が値になっているファイルDBを宣言しています。
次の例では、整数がキーで文字列を値としてもつメモリDBを宣言しています。
最後の例では、100 x 200の2次元配列を定義しています。C言語での
struct arr1{
int a;
int b;
char *c;
}arr1[100][200];
という定義と似ています。
| |||||||||||||||||||||||||||||||||||
| 書式 | db_sync(+Pred) | |||
|---|---|---|---|---|
| 引数 |
| |||
| ファイルDBをsyncします. | ||||
> myarr <- [pred].
> :- db_open("mydata.db", (ldbm:flags\ ["CREATE"]),
myarr(key_integer & ARRAY_BASE\0 & ARRAY_SIZE\2000,
array_value)).
> :- db_sync(myarr(_, _)).
| ||||
| 書式 | db_close(+Pred) | |||
|---|---|---|---|---|
| 引数 |
| |||
| ファイルDBを閉じます. | ||||
> myarr <- [pred].
> :- db_open("mydata.db", (ldbm:flags\ ["CREATE"]),
myarr(key_integer & ARRAY_BASE\0 & ARRAY_SIZE\2000,
array_value)).
> :- db_close(myarr(_, _)).
| ||||
| 書式 | db_find(+Pred) db_find(+Iter, +Pred) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| db_find/1はキーで指定されたエントリーの値をDBから取り出してきます。db_find/2はIterで指定されたエントリーを取り出してきます。 | |||||||
> myarr <- [pred].
> :- db_open("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_find(my_arr(10, X)), printAVM(X).
> :- db_first(my_arr(_, _), I), db_find(I, X), printAVM(X).
| |||||||
| 書式 | db_insert(+Pred) | |||
|---|---|---|---|---|
| 引数 |
| |||
| db_insertはDBにエントリーを格納/上書きします. | ||||
> myarr <- [pred].
> :- db_open("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_find(my_arr(10, X)), printAVM(X).
> :- db_first(my_arr(_, _), I), db_find(I, X), printAVM(X).
| ||||
| 書式 | db_delete(+Pred) | |||
|---|---|---|---|---|
| 引数 |
| |||
| db_deleteはDBのエントリーを削除します. | ||||
> myarr <- [pred].
> :- db_open("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_delete(my_arr(10, _)).
| ||||
| 書式 | db_clear(+Pred) | |||
|---|---|---|---|---|
| 引数 |
| |||
| データベースの内容を空にします。(全エントリーが消えます。) | ||||
> myarr <- [pred].
> :- db_open("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_clear(my_arr(_, _)).
| ||||
| 書式 | db_findall(+Pred, -EntryList) | |||
|---|---|---|---|---|
| 引数 |
| |||
| データベースの全エントリーをリストにして返します. | ||||
> myarr <- [pred].
> :- db_declare("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_insert(my_arr(20, [4,5])).
> :- db_insert(my_arr(30, [6,7,8,9])).
> :- db_findall(my_arr(_, _), X), printAVM(X).
| ||||
| 書式 | db_first(+Pred, -Iter) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| データベースの先頭のエントリーのIDを返します。先頭のエントリーがない場合はfailします。 | |||||||
> :- db_declare("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_first(my_arr(_, _), I), db_find(I, X), printAVM(X).
| |||||||
| 書式 | db_last(+Pred, -Iter) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| データベースの末尾のエントリーのIDを返します。先頭のエントリーがない場合はfailします。 | |||||||
> :- db_declare("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_last(my_arr(_, _), I), db_find(I, X), printAVM(X).
| |||||||
| 書式 | db_next(+Iter1, -Iter2) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| Iter1の次のエントリーのIDをIter2に返します.次のエントリーがない場合はfailします. | |||||||
> myarr <- [pred].
> :- db_declare("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_insert(my_arr(30, [4,5,6,7])).
> :- db_first(my_arr(_, _), I), db_next(I, J), db_find(J, X), printAVM(X).
| |||||||
| 書式 | db_prev(+Iter1, -Iter2) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| Iter1の前のエントリーのIDをIter2に返します.前のエントリーがない場合はfailします. | |||||||
> myarr <- [pred].
> :- db_declare("hoge.db", ldbm:flags\ ["CREATE"],
myarr(key_inthash, array_value)).
> :- db_insert(my_arr(10, [1,2,3])).
> :- db_insert(my_arr(30, [4,5,6,7])).
> :- db_first(my_arr(_, _), I), db_prev(I, J), db_find(J, X), printAVM(X).
| |||||||
| 書式 | db_save(+FILE, +NAME) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| DBの内容をファイルに保存します。 | |||||||
:- db_save("array1", arr1(_, _, _, _, _)).
| |||||||
| 書式 | db_load(+FILE, +NAME) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| DBの内容をファイルから取り込みます。 | |||||||
:- db_load("array1", arr1(_, _, _, _, _)).
| |||||||
| 書式 | declare_array(+INFO) | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 引数 |
| |||||||||||||||||
| 注意 | 配列名は、予め、述語(pred型の subtype)として定義されている必要があります。また、配列名と ( の間には空白を置くことはできません。 | |||||||||||||||||
| 静的に値を保持する配列を作ります. | ||||||||||||||||||
> :- declare_array(arr1((key_integer & ARRAY_BASE\ 0 & ARRAY_SIZE\ 100),
(key_integer & ARRAY_BASE\ 0 & ARRAY_SIZE\ 200),
array_value_integer,
array_value_integer,
array_value_string)).
> :- declare_array(arr2(key_string,
array_value)).
上記の例の1番目は、100×200の2次元配列で、2つの整数値と1つの文字列を保持するものです。およそ、C言語における
struct arr1{
int a;
int b;
char *c;
}arr1[100][200];
に相当します。
2番目の例は、文字列をキーとする配列で、1つの素性構造を保持します。
| ||||||||||||||||||
| 書式 | delete_array(+NAME) | |||
|---|---|---|---|---|
| 引数 |
| |||
| NAMEという名前の配列を削除します. | ||||
:- delete_array(arr1(_, _, _, _, _)). | ||||
| 書式 | get_array(+INFO) | |||
|---|---|---|---|---|
| 引数 |
| |||
| 関連項目 | set_array/1 | |||
| 配列の値を取得します. | ||||
| 書式 | set_array(+INFO) | |||
|---|---|---|---|---|
| 引数 |
| |||
| 関連項目 | get_array/1 | |||
| 配列に値を代入します. | ||||
> :- set_array(arr1(3,4,200,55,"abc")).
> :- set_array(arr2("foo", abc & F1\aa)).
> ?- get_array(arr1(3,4,X,Y,Z)).
X: 200
Y: 55
Z: "abc"
> ?- get_array(arr2("foo",X)).
X: |~abc ~|
|_F1:aa_|
上記の例の1番目は、arr1[3][4]の値として、 200, 100, "abc" を代入したものです。
2番目の例は、"foo" をキーとして、素性構造 abc & F1\aa を登録したものです。
配列の値を参照するには、配列名を述語としたクエリーを記述します。
| ||||
| 書式 | unset_array(+INFO) | |||
|---|---|---|---|---|
| 引数 |
| |||
| 配列の値を消去します. | ||||
> :- unset_array(arr1(3,4,_,_,_)). > ?- get_array(arr1(3,4,X,Y,Z)). no | ||||
| 書式 | clear_array(+NAME) | |||
|---|---|---|---|---|
| 引数 |
| |||
| NAMEという名前の配列の内容をクリアします. | ||||
:- clear_array(arr1(_, _, _, _, _)). | ||||
| 書式 | save_array(+FILE, +NAME) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| 配列の内容をファイルに保存します。 | |||||||
:- save_array("array1", arr1(_, _, _, _, _)).
| |||||||
| 書式 | load_array(+FILE, +NAME) | ||||||
|---|---|---|---|---|---|---|---|
| 引数 |
| ||||||
| 配列の内容をファイルから取り込みます。 | |||||||
:- load_array("array1", arr1(_, _, _, _, _)).
| |||||||