Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Chain_insertafter/5

Этот предикат помещает терм после определенного терма, возвращая

указатель нового терма. Он имеет вид:

chain_insertafter(Dbase,Domain,Ref,Term,NewRef) /* (i,i,i,i,o) */

chain_insertafter вставляет терм Term после элемента цепочки опреде-

ленного указателем Ref, причем NewRef связывается с указателем, соответс-

твующим терму Term после его вставки.

chain_terms/5

В процессе поиска с возвратом предикат chain_terms поочередно связы-

вает Term и Ref с каждым термом и соответствующим ему указателем в данной

цепочке chain. Он имеет вид:

chain_terms(Dbase,Chain,Domain,Term,Ref) /* (i,i,i,о,o) */

chain_delete/2

Предикат удаляет определенную цепочку из данной базы данных, преди-

кат имеет вид:

chain_delete(Dbase,Chain) /* (i,i) */

chain_first/3 и chain_last/3

Эти предикаты возвращают указатели первого и последнего элемента це-

почки:

chain_first(Dbase,Chain,FirstRef) /* (i,i,o) */

chain_last (Dbase,Chain,LastRef) /* (i,i,o) */

chain_next/3 и chain_prev/3

Предикат chain_next возвращает указатель терма, следующего за данным

в цепочке, а chain_prev возвращает указатель терма, предыдущего данному.

chain_next(Dbase,Ref,NextRef) /* (i,i,o) */

chain_prev(Dbase,Ref,PrevRef) /* (i,i,o) */

Обработка термов.

Есть три предиката работы с базами данных, обрабатывающих термы:

term_replace, term_delete, ref_term. При обращении к любому из выше при-

веденных предикатов необходимо объявить домен терма в качестве аргумента.

Вследствие этого, удобно объявить все термы в данной базе данных как аль-

тернативы одного домена, как в этом описании:

domains

terms_for_my_stock_control_database =

customer(Customer,Name,ZipCode,Address);

supplier(SupplierNo,Name,Address);

parts(PartNo,Description,Price,SipplierNo)

Обратите внимание, что здесь нет ограничений на смешивание доменов

во внешней базе данных. Одна цепочка может содержать текстовые строки,

другая - целые числа, а третья составные объекты, и так далее. Однако,

элементы внешней базы данных не запоминаются вместе с описанием домена,

например, целые не обязательно занимают именно два байта. Это ваше дело

выбирать из базы данных терм в тот домен, из которого он был записан в

базу данных. Если вы перепутали домены, обычно происходит ошибка при ис-

полнении.

Term_replace/4

Предикат term_replace заменяет терм (с указателем Ref), на новый

терм с именем Term

term_replace(Dbase,Domain,Ref,Term) /* (i,i,i,i) */

Term_delete/3

Предикат term_delete удаляет терм с указателем Ref:

term_delete(Dbase,Chain,Ref) /* (i,i,i) */

Память занятая термом, будет высвобождена, и в дальнейшем нельзя до-

пускать ссылки на Ref.

Ref_term/4

Предикат ref_term связывает Term с термом, который помещен с указа-

телем Ref:

ref_term(Dbase,Domain,Ref,Term) /* (i,i,i,о) */

Соседние файлы в папке Документация