書式 | 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(_, _, _, _, _)). |