Logtalk 2.10.0 file.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@424 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
pmoura
2002-04-03 13:26:59 +00:00
parent 6a28b0a02b
commit 06ea1bd8ec
86 changed files with 410 additions and 269 deletions

View File

@@ -2,7 +2,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Logtalk - Object oriented extension to Prolog
% Release 2.9.3
% Release 2.10.0
%
% Copyright (c) 1998-2002 Paulo Moura. All Rights Reserved.
%
@@ -77,7 +77,9 @@
:- dynamic(lgt_dcl_/1). % lgt_dcl_(Clause)
:- dynamic(lgt_ddcl_/1). % lgt_ddcl_(Clause)
:- dynamic(lgt_def_/1). % lgt_def_(Clause)
:- dynamic(lgt_ddef_/1). % lgt_ddef_(Clause)
:- dynamic(lgt_super_/1). % lgt_super_(Clause)
:- dynamic(lgt_dynamic_/1). % lgt_dynamic_(Functor/Arity)
@@ -305,7 +307,7 @@ create_object(Obj, Rels, Dirs, Clauses) :-
create_object(Obj, Rels, Dirs, Clauses) :-
lgt_clean_up,
lgt_tr_directive(object, [Obj| Rels]),
lgt_tr_directives(Dirs),
lgt_tr_directives([(dynamic)| Dirs]),
lgt_tr_clauses(Clauses),
lgt_fix_redef_built_ins,
lgt_gen_object_clauses,
@@ -352,7 +354,7 @@ create_category(Ctg, Rels, Dirs, Clauses) :-
create_category(Ctg, Rels, Dirs, Clauses) :-
lgt_clean_up,
lgt_tr_directive(category, [Ctg| Rels]),
lgt_tr_directives(Dirs),
lgt_tr_directives([(dynamic)| Dirs]),
lgt_tr_clauses(Clauses),
lgt_fix_redef_built_ins,
lgt_gen_category_clauses,
@@ -395,7 +397,7 @@ create_protocol(Ptc, Rels, Dirs) :-
create_protocol(Ptc, Rels, Dirs) :-
lgt_clean_up,
lgt_tr_directive(protocol, [Ptc| Rels]),
lgt_tr_directives(Dirs),
lgt_tr_directives([(dynamic)| Dirs]),
lgt_gen_protocol_clauses,
lgt_gen_protocol_directives,
lgt_assert_tr_entity,
@@ -1017,7 +1019,7 @@ logtalk_version(Major, Minor, Patch) :-
\+ integer(Patch),
throw(error(type_error(integer, Patch), logtalk_version(Major, Minor, Patch))).
logtalk_version(2, 9, 3).
logtalk_version(2, 10, 0).
@@ -1228,10 +1230,6 @@ lgt_abolish(Obj, Functor/Arity, Sender, _) :-
(var(Functor); var(Arity)),
throw(error(instantiation_error, Obj::abolish(Functor/Arity), Sender)).
lgt_abolish(Obj, Functor/Arity, Sender, _) :-
(var(Functor); var(Arity)),
throw(error(instantiation_error, Obj::abolish(Functor/Arity), Sender)).
lgt_abolish(Obj, Functor/Arity, Sender, _) :-
\+ atom(Functor),
throw(error(type_error(atom, Functor), Obj::abolish(Functor/Arity), Sender)).
@@ -1240,38 +1238,39 @@ lgt_abolish(Obj, Functor/Arity, Sender, _) :-
\+ integer(Arity),
throw(error(type_error(integer, Arity), Obj::abolish(Functor/Arity), Sender)).
lgt_abolish(Obj, Functor/Arity, Sender, _) :-
\+ lgt_current_object_(Obj, _, _, _, _),
throw(error(existence_error(object, Obj), Obj::abolish(Functor/Arity), Sender)).
lgt_abolish(Obj, Functor/Arity, Sender, Scope) :-
functor(Pred, Functor, Arity),
lgt_current_object_(Obj, Prefix, _, _, _),
lgt_once(Prefix, Dcl, _, _, _, _, DDcl, DDef),
(lgt_once(Dcl, Pred, PScope, Type, _, SContainer, _) ->
(Type = (dynamic) ->
lgt_current_object_(Obj, Prefix, Dcl, _, _) ->
((functor(Pred, Functor, Arity),
lgt_once(Dcl, Pred, PScope, Compilation, _, SContainer, _)) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
(lgt_once(DDcl, Pred, _, _, _) ->
(lgt_once(DDef, Pred, _, _, _, Call) ->
functor(Call, CFunctor, CArity),
abolish(CFunctor/CArity),
Clause =.. [DDef, Pred, _, _, _, Call],
retractall(Clause)
(Compilation = (dynamic) ->
lgt_once(Prefix, _, _, _, _, _, DDcl, DDef),
(lgt_once(DDcl, Pred, _, _, _) ->
Clause =.. [DDcl, Pred, _, _, _],
retractall(Clause),
(lgt_once(DDef, Pred, _, _, _, Call) ->
functor(Call, CFunctor, CArity),
abolish(CFunctor/CArity),
Clause2 =.. [DDef, Pred, _, _, _, Call],
retractall(Clause2)
;
true)
;
true),
Clause2 =.. [DDcl, Pred, _, _, _],
retractall(Clause2)
(lgt_once(Dcl, Pred, _, _, _) ->
throw(error(permission_error(modify, predicate_declaration, Pred), Obj::abolish(Functor/Arity), Sender))
;
throw(error(existence_error(predicate_declaration, Pred), Obj::abolish(Functor/Arity), Sender))))
;
throw(error(permission_error(modify, predicate_declaration, Pred), Obj::abolish(Functor/Arity), Sender)))
throw(error(permission_error(modify, static_predicate, Pred), Obj::abolish(Functor/Arity), Sender)))
;
(PScope = p ->
throw(error(permission_error(modify, private_predicate, Pred), Obj::abolish(Functor/Arity), Sender))
;
throw(error(permission_error(modify, protected_predicate, Pred), Obj::abolish(Functor/Arity), Sender))))
;
throw(error(permission_error(modify, static_predicate, Pred), Obj::abolish(Functor/Arity), Sender)))
throw(error(existence_error(predicate_declaration, Pred), Obj::abolish(Functor/Arity), Sender)))
;
throw(error(existence_error(predicate_declaration, Pred), Obj::abolish(Functor/Arity), Sender))).
throw(error(existence_error(object, Obj), Obj::abolish(Functor/Arity), Sender)).
@@ -1304,22 +1303,26 @@ lgt_asserta(Obj, (Head:-Body), Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, Meta, SContainer, _) ->
true
;
lgt_assert_dynamic_dcl_clause(Head, DDcl)),
lgt_convert_test_scope(Scope, Scope2),
lgt_assert_ddcl_clause(DDcl, Head, Scope2)),
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, Sender2, This, Self, Call); lgt_once(DDef, Head, Sender2, This, Self, Call)) ->
true
;
functor(Head, Functor, Arity),
lgt_assert_dynamic_def_clause(Functor, Arity, Prefix, DDef, _),
lgt_assert_ddef_clause(Functor, Arity, Prefix, DDef, _),
lgt_once(DDef, Head, Sender2, This, Self, Call)),
lgt_self(Context, Self),
lgt_this(Context, This),
lgt_sender(Context, Sender2),
lgt_prefix(Context, Prefix),
Head =.. [_| Args],
Meta =.. [_| MArgs],
lgt_extract_metavars(Args, MArgs, Metavars),
(nonvar(Meta) ->
Head =.. [_| Args],
Meta =.. [_| MArgs],
lgt_extract_metavars(Args, MArgs, Metavars)
;
Metavars = []),
lgt_metavars(Context, Metavars),
asserta((Call:-lgt_tr_body(Body, TBody, Context), call(TBody)))
;
@@ -1336,14 +1339,15 @@ lgt_asserta(Obj, Head, Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, _, SContainer, _) ->
true
;
lgt_assert_dynamic_dcl_clause(Head, DDcl)),
lgt_convert_test_scope(Scope, Scope2),
lgt_assert_ddcl_clause(DDcl, Head, Scope2)),
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, _, _, _, Call); lgt_once(DDef, Head, _, _, _, Call)) ->
true
;
functor(Head, Functor, Arity),
lgt_assert_dynamic_def_clause(Functor, Arity, Prefix, DDef, _),
lgt_assert_ddef_clause(Functor, Arity, Prefix, DDef, _),
lgt_once(DDef, Head, _, _, _, Call)),
asserta(Call)
;
@@ -1385,22 +1389,26 @@ lgt_assertz(Obj, (Head:-Body), Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, Meta, SContainer, _) ->
true
;
lgt_assert_dynamic_dcl_clause(Head, DDcl)),
lgt_convert_test_scope(Scope, Scope2),
lgt_assert_ddcl_clause(DDcl, Head, Scope2)),
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, Sender2, This, Self, Call); lgt_once(DDef, Head, Sender2, This, Self, Call)) ->
true
;
functor(Head, Functor, Arity),
lgt_assert_dynamic_def_clause(Functor, Arity, Prefix, DDef, _),
lgt_assert_ddef_clause(Functor, Arity, Prefix, DDef, _),
lgt_once(DDef, Head, Sender2, This, Self, Call)),
lgt_self(Context, Self),
lgt_this(Context, This),
lgt_sender(Context, Sender2),
lgt_prefix(Context, Prefix),
Head =.. [_| Args],
Meta =.. [_| MArgs],
lgt_extract_metavars(Args, MArgs, Metavars),
(nonvar(Meta) ->
Head =.. [_| Args],
Meta =.. [_| MArgs],
lgt_extract_metavars(Args, MArgs, Metavars)
;
Metavars = []),
lgt_metavars(Context, Metavars),
assertz((Call:-lgt_tr_body(Body, TBody, Context), call(TBody)))
;
@@ -1417,14 +1425,15 @@ lgt_assertz(Obj, Head, Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, _, SContainer, _) ->
true
;
lgt_assert_dynamic_dcl_clause(Head, DDcl)),
lgt_convert_test_scope(Scope, Scope2),
lgt_assert_ddcl_clause(DDcl, Head, Scope2)),
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, _, _, _, Call); lgt_once(DDef, Head, _, _, _, Call)) ->
true
;
functor(Head, Functor, Arity),
lgt_assert_dynamic_def_clause(Functor, Arity, Prefix, DDef, _),
lgt_assert_ddef_clause(Functor, Arity, Prefix, DDef, _),
lgt_once(DDef, Head, _, _, _, Call)),
assertz(Call)
;
@@ -1505,11 +1514,14 @@ lgt_retract(Obj, (Head:-Body), Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, _, SContainer, _) ->
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, _, _, _, Call); lgt_once(DDef, Head, _, _, _, Call)) ->
TBody = (lgt_tr_body(Body, _, _), _),
retract((Call:-TBody))
(lgt_once(Def, Head, _, _, _, Call) ->
retract((Call:-(lgt_tr_body(Body, _, _), _)))
;
fail)
(lgt_once(DDef, Head, _, _, _, Call) ->
retract((Call:-(lgt_tr_body(Body, _, _), _))),
lgt_update_ddef_table(DDef, Call)
;
fail))
;
(PScope = p ->
throw(error(permission_error(modify, private_predicate, Head), Obj::retract((Head:-Body)), Sender))
@@ -1526,10 +1538,14 @@ lgt_retract(Obj, Head, Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, _, SContainer, _) ->
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, _, _, _, Call); lgt_once(DDef, Head, _, _, _, Call)) ->
(lgt_once(Def, Head, _, _, _, Call) ->
retract(Call)
;
fail)
(lgt_once(DDef, Head, _, _, _, Call) ->
retract(Call),
lgt_update_ddef_table(DDef, Call)
;
fail))
;
(PScope = p ->
throw(error(permission_error(modify, private_predicate, Head), Obj::retract(Head), Sender))
@@ -1562,10 +1578,14 @@ lgt_retractall(Obj, Head, Sender, Scope) :-
(lgt_once(Dcl, Head, PScope, Type, _, SContainer, _) ->
(Type = (dynamic) ->
((\+ \+ PScope = Scope; Sender = SContainer) ->
((lgt_once(Def, Head, _, _, _, Call); lgt_once(DDef, Head, _, _, _, Call)) ->
(lgt_once(Def, Head, _, _, _, Call) ->
retractall(Call)
;
true)
(lgt_once(DDef, Head, _, _, _, Call) ->
retractall(Call),
lgt_update_ddef_table(DDef, Call)
;
true))
;
(PScope = p ->
throw(error(permission_error(modify, private_predicate, Head), Obj::retractall(Head), Sender))
@@ -2078,7 +2098,9 @@ lgt_clean_up :-
retractall(lgt_fentity_init_(_)),
retractall(lgt_entity_comp_mode_(_)),
retractall(lgt_dcl_(_)),
retractall(lgt_ddcl_(_)),
retractall(lgt_def_(_)),
retractall(lgt_ddef_(_)),
retractall(lgt_super_(_)),
retractall(lgt_rclause_(_)),
retractall(lgt_eclause_(_)),
@@ -2094,6 +2116,8 @@ lgt_clean_up :-
% dump all dynamic predicates used during entity compilation
% in the current ouput stream (just a debugging utility)
%
% only works on Prolog compilers implementing listing/1
lgt_dump_all :-
listing(lgt_object_/9),
@@ -2123,7 +2147,9 @@ lgt_dump_all :-
listing(lgt_fentity_init_/1),
listing(lgt_entity_comp_mode_/1),
listing(lgt_dcl_/1),
listing(lgt_ddcl_/1),
listing(lgt_def_/1),
listing(lgt_ddef_/1),
listing(lgt_super_/1),
listing(lgt_rclause_/1),
listing(lgt_eclause_/1),
@@ -2556,11 +2582,21 @@ lgt_tr_clause(Fact, TFact, Context) :-
% translates an entity clause head
% definition of dynamic predicates inside categories
lgt_tr_head(Head, _, _) :-
lgt_entity_(category, _, _, _),
functor(Head, Functor, Arity),
lgt_dynamic_(Functor/Arity),
throw(permission_error(define, dynamic_predicate, Functor/Arity)).
% redefinition of built-in methods
lgt_tr_head(Head, _, _) :-
lgt_built_in_method(Head, _),
throw(permission_error(modify, built_in_method, Head)).
functor(Head, Functor, Arity),
throw(permission_error(modify, built_in_method, Functor/Arity)).
% redefinition of Logtalk built-in predicates
@@ -2594,7 +2630,13 @@ lgt_tr_head(Head, THead, Context) :-
Head =.. [_| Args],
lgt_prefix(Context, EPrefix),
lgt_construct_predicate_functor(EPrefix, Functor, Arity, PPrefix),
lgt_add_def_clause(Functor, Arity, PPrefix, Context),
((lgt_dynamic_(Functor/Arity),
\+ lgt_public_(Functor/Arity),
\+ lgt_protected_(Functor/Arity),
\+ lgt_private_(Functor/Arity)) ->
lgt_add_ddef_clause(Functor, Arity, PPrefix, Context)
;
lgt_add_def_clause(Functor, Arity, PPrefix, Context)),
lgt_sender(Context, Sender),
lgt_this(Context, This),
lgt_self(Context, Self),
@@ -2930,38 +2972,38 @@ lgt_tr_msg(Obj, setof(Term, Pred, List), setof(Term, TPred, List), Context) :-
% "reflection" built-in predicates
lgt_tr_msg(Obj, current_predicate(Pred), lgt_current_predicate(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, current_predicate(Pred), lgt_current_predicate(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, predicate_property(Pred, Property), lgt_predicate_property(Obj, Pred, Property, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, predicate_property(Pred, Property), lgt_predicate_property(Obj, Pred, Property, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
% database handling built-in predicates
lgt_tr_msg(Obj, abolish(Pred), lgt_abolish(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, abolish(Pred), lgt_abolish(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, asserta(Pred), lgt_asserta(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, asserta(Pred), lgt_asserta(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, assertz(Pred), lgt_assertz(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, assertz(Pred), lgt_assertz(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, clause(Head, Body), lgt_clause(Obj, Head, Body, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, clause(Head, Body), lgt_clause(Obj, Head, Body, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, retract(Pred), lgt_retract(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, retract(Pred), lgt_retract(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
lgt_tr_msg(Obj, retractall(Pred), lgt_retractall(Obj, Pred, This, p(p(_))), Context) :-
lgt_tr_msg(Obj, retractall(Pred), lgt_retractall(Obj, Pred, This, p(p(p))), Context) :-
!,
lgt_this(Context, This).
@@ -3556,11 +3598,40 @@ lgt_add_def_clause(Functor, Arity, Prefix, Context) :-
% lgt_assert_dynamic_def_clause(+atom, +integer, +atom, +atom, -callable)
% lgt_add_ddef_clause(+atom, +integer, +atom, +term)
%
% asserts a dynamic "def clause" (used to translate a predicate call)
% adds a "ddef clause" (used to translate a predicate call)
lgt_assert_dynamic_def_clause(Functor, Arity, OPrefix, DDef, Call) :-
lgt_add_ddef_clause(Functor, Arity, Prefix, Context) :-
functor(Head, Functor, Arity),
Head =.. [_| Args],
lgt_sender(Context, Sender),
lgt_this(Context, This),
lgt_self(Context, Self),
lgt_append(Args, [Sender, This, Self], TArgs),
THead =.. [Prefix|TArgs],
lgt_object_(_, _, _, _, _, _, _, _, DDef),
Clause =.. [DDef, Head, Sender, This, Self, THead],
(lgt_ddef_(Clause) ->
true
;
assertz(lgt_ddef_(Clause))),
(lgt_built_in(Head) ->
assertz(lgt_redefined_built_in_(Head, Context, THead))
;
true),
(lgt_defs_pred_(Functor/Arity) ->
true
;
assertz(lgt_defs_pred_(Functor/Arity))).
% lgt_assert_ddef_clause(+atom, +integer, +atom, +atom, -callable)
%
% asserts a dynamic "ddef clause" (used to translate a predicate call)
lgt_assert_ddef_clause(Functor, Arity, OPrefix, DDef, Call) :-
lgt_construct_predicate_functor(OPrefix, Functor, Arity, PPrefix),
functor(Pred, Functor, Arity),
Pred =.. [_| Args],
@@ -3571,14 +3642,45 @@ lgt_assert_dynamic_def_clause(Functor, Arity, OPrefix, DDef, Call) :-
% lgt_assert_dynamic_dcl_clause(+term, +atom)
% lgt_update_ddef_table(+atom, +callable)
%
% retracts a dynamic "ddef clause" (used to translate a predicate call)
% if there are no more clauses for the predicate otherwise does nothing
lgt_update_ddef_table(DDef, Call) :-
functor(Call, Functor, Arity),
functor(Call2, Functor, Arity),
(clause(Call2, _) ->
true
;
Clause =.. [DDef, _, _, _, _, Call2],
retractall(Clause)).
% lgt_convert_test_scope(@term, +term),
%
% convert asserta/z test scope to predicate declaration scope
lgt_convert_test_scope(Scope, Scope2) :-
var(Scope) ->
Scope2 = p
;
((Scope = p(V), var(V)) ->
Scope2 = p(p)
;
Scope2 = p(p(p))).
% lgt_assert_ddcl_clause(+atom, +term, +term)
%
% asserts a dynamic predicate declaration
lgt_assert_dynamic_dcl_clause(Pred, DDcl) :-
lgt_assert_ddcl_clause(DDcl, Pred, Scope) :-
functor(Pred, Functor, Arity),
functor(DPred, Functor, Arity),
Clause =.. [DDcl, DPred, p(p(p)), (dynamic), no],
Clause =.. [DDcl, DPred, Scope, (dynamic), no],
assertz(Clause).
@@ -3730,6 +3832,8 @@ lgt_gen_object_clauses :-
% lgt_gen_local_dcl_clauses
%
% a (local) predicate declaration is only generated
% if there is a scope declaration for the predicate
@@ -3738,12 +3842,16 @@ lgt_gen_local_dcl_clauses :-
((lgt_public_(Functor/Arity), Scope = p(p(p)));
(lgt_protected_(Functor/Arity), Scope = p(p));
(lgt_private_(Functor/Arity), Scope = p)),
((lgt_entity_comp_mode_((dynamic)); lgt_dynamic_(Functor/Arity)) ->
Compilation = (dynamic);
Compilation = static),
functor(Meta, Functor, Arity),
(lgt_metapredicate_(Meta) -> Meta2 = Meta; Meta2 = no),
(lgt_metapredicate_(Meta) ->
Meta2 = Meta
;
Meta2 = no),
functor(Pred, Functor, Arity),
(lgt_dynamic_(Functor/Arity)->
Compilation = (dynamic)
;
Compilation = static),
Fact =.. [Dcl, Pred, Scope, Compilation, Meta2],
assertz(lgt_dcl_(Fact)),
fail.
@@ -3752,16 +3860,46 @@ lgt_gen_local_dcl_clauses.
lgt_gen_dynamic_def_clauses :-
lgt_gen_catchall_dcl_clause :-
\+ lgt_dcl_(_) ->
lgt_entity_(_, _, _, Dcl),
Head =.. [Dcl, _, _, _, _],
assertz(lgt_dcl_((Head:-fail)))
;
true.
% lgt_gen_local_def_clauses
%
% generates local def clauses for undefined but declared (via scope or
% dynamic directives) predicates
lgt_gen_local_def_clauses :-
lgt_entity_(_, _, EPrefix, _),
lgt_dynamic_(Functor/Arity),
\+ lgt_defs_pred_(Functor/Arity),
lgt_construct_predicate_functor(EPrefix, Functor, Arity, PPrefix),
lgt_context(Context),
lgt_add_def_clause(Functor, Arity, PPrefix, Context),
((\+ lgt_public_(Functor/Arity),
\+ lgt_protected_(Functor/Arity),
\+ lgt_private_(Functor/Arity)) ->
lgt_add_ddef_clause(Functor, Arity, PPrefix, Context)
;
lgt_add_def_clause(Functor, Arity, PPrefix, Context)),
fail.
lgt_gen_dynamic_def_clauses.
lgt_gen_local_def_clauses.
lgt_gen_obj_catchall_def_clause :-
\+ lgt_def_(_) ->
lgt_object_(_, _, _, Def, _, _, _, _, _),
Head =.. [Def, _, _, _, _, _],
assertz(lgt_def_((Head:-fail)))
;
true.
@@ -3774,12 +3912,7 @@ lgt_gen_protocol_clauses :-
lgt_gen_protocol_local_clauses :-
lgt_gen_local_dcl_clauses,
(\+ lgt_dcl_(_) ->
lgt_protocol_(_, _, PDcl),
Head =.. [PDcl, _, _, _, _],
assertz(lgt_dcl_((Head:-fail)))
;
true).
lgt_gen_catchall_dcl_clause.
@@ -3818,23 +3951,13 @@ lgt_gen_category_clauses :-
lgt_gen_category_dcl_clauses :-
lgt_gen_category_local_dcl_clauses,
lgt_gen_local_dcl_clauses,
lgt_gen_catchall_dcl_clause,
lgt_gen_category_linking_dcl_clauses,
lgt_gen_category_implements_dcl_clauses.
lgt_gen_category_local_dcl_clauses :-
lgt_gen_local_dcl_clauses,
(\+ lgt_dcl_(_) ->
lgt_category_(_, _, CDcl, _),
Head =.. [CDcl, _, _, _, _],
assertz(lgt_dcl_((Head:-fail)))
;
true).
lgt_gen_category_linking_dcl_clauses :-
lgt_category_(Ctg, _, CDcl, _),
Head =.. [CDcl, Pred, Scope, Compilation, Meta, Ctg],
@@ -3864,14 +3987,14 @@ lgt_gen_category_implements_dcl_clauses.
lgt_gen_category_def_clauses :-
lgt_gen_category_local_def_clauses.
lgt_gen_category_catchall_def_clause.
lgt_gen_category_local_def_clauses :-
lgt_gen_category_catchall_def_clause :-
\+ lgt_def_(_) ->
lgt_category_(_, _, _, CDef),
Head =.. [CDef, _, _, _, _, _],
lgt_category_(_, _, _, Def),
Head =.. [Def, _, _, _, _, _],
assertz(lgt_def_((Head:-fail)))
;
true.
@@ -3886,7 +4009,8 @@ lgt_gen_prototype_clauses :-
lgt_gen_prototype_dcl_clauses :-
lgt_gen_prototype_local_dcl_clauses,
lgt_gen_local_dcl_clauses,
lgt_gen_catchall_dcl_clause,
lgt_gen_prototype_linking_dcl_clauses,
lgt_gen_prototype_implements_dcl_clauses,
lgt_gen_prototype_imports_dcl_clauses,
@@ -3894,17 +4018,6 @@ lgt_gen_prototype_dcl_clauses :-
lgt_gen_prototype_local_dcl_clauses :-
lgt_gen_local_dcl_clauses,
(\+ lgt_dcl_(_) ->
lgt_object_(_, _, ODcl, _, _, _, _, _, _),
Head =.. [ODcl, _, _, _, _],
assertz(lgt_dcl_((Head:-fail)))
;
true).
lgt_gen_prototype_linking_dcl_clauses :-
lgt_object_(Obj, _, Dcl, _, _, _, _, DDcl, _),
Head =.. [Dcl, Pred, Scope, Compilation, Meta, Obj, Obj],
@@ -3977,24 +4090,14 @@ lgt_gen_prototype_extends_dcl_clauses.
lgt_gen_prototype_def_clauses :-
lgt_gen_dynamic_def_clauses,
lgt_gen_prototype_local_def_clauses,
lgt_gen_local_def_clauses,
lgt_gen_obj_catchall_def_clause,
lgt_gen_prototype_linking_def_clauses,
lgt_gen_prototype_imports_def_clauses,
lgt_gen_prototype_extends_def_clauses.
lgt_gen_prototype_local_def_clauses :-
\+ lgt_def_(_) ->
lgt_object_(_, _, _, Def, _, _, _, _, _),
Head =.. [Def, _, _, _, _, _],
assertz(lgt_def_((Head:-fail)))
;
true.
lgt_gen_prototype_linking_def_clauses :-
lgt_object_(Obj, _, _, Def, _, _, _, _, DDef),
Head =.. [Def, Pred, Sender, This, Self, Call, Obj],
@@ -4065,19 +4168,9 @@ lgt_gen_ic_clauses :-
lgt_gen_ic_dcl_clauses :-
lgt_gen_ic_local_dcl_clauses,
lgt_gen_ic_hierarchy_dcl_clauses.
lgt_gen_ic_local_dcl_clauses :-
lgt_gen_local_dcl_clauses,
(\+ lgt_dcl_(_) ->
lgt_object_(_, _, ODcl, _, _, _, _, _, _),
Head =.. [ODcl, _, _, _, _],
assertz(lgt_dcl_((Head:-fail)))
;
true).
lgt_gen_catchall_dcl_clause,
lgt_gen_ic_hierarchy_dcl_clauses.
@@ -4192,24 +4285,14 @@ lgt_gen_ic_hierarchy_idcl_clauses.
lgt_gen_ic_def_clauses :-
lgt_gen_dynamic_def_clauses,
lgt_gen_ic_local_def_clauses,
lgt_gen_local_def_clauses,
lgt_gen_obj_catchall_def_clause,
lgt_gen_ic_linking_def_clauses,
lgt_gen_ic_imports_def_clauses,
lgt_gen_ic_hierarchy_def_clauses.
lgt_gen_ic_local_def_clauses :-
\+ lgt_def_(_) ->
lgt_object_(_, _, _, Def, _, _, _, _, _),
Head =.. [Def, _, _, _, _, _],
assertz(lgt_def_((Head:-fail)))
;
true.
lgt_gen_ic_linking_def_clauses :-
lgt_object_(Obj, _, _, Def, _, _, _, _, DDef),
Head =.. [Def, Pred, Sender, This, Self, Call, Obj],
@@ -4487,6 +4570,7 @@ lgt_write_clauses(Stream) :-
lgt_write_functors_clause(Stream),
lgt_write_dcl_clauses(Stream),
lgt_write_def_clauses(Stream),
lgt_write_ddef_clauses(Stream),
lgt_write_super_clauses(Stream),
lgt_write_entity_clauses(Stream).
@@ -4510,6 +4594,16 @@ lgt_write_def_clauses(_).
lgt_write_ddef_clauses(Stream) :-
lgt_ddef_(Clause),
write_term(Stream, Clause, [quoted(true)]),
write_term(Stream, '.', []), nl(Stream),
fail.
lgt_write_ddef_clauses(_).
lgt_write_dcl_clauses(Stream) :-
lgt_dcl_(Clause),
write_term(Stream, Clause, [quoted(true)]),
@@ -4587,6 +4681,7 @@ lgt_assert_tr_entity :-
lgt_assert_functors_clause,
lgt_assert_dcl_clauses,
lgt_assert_def_clauses,
lgt_assert_ddef_clauses,
lgt_assert_super_clauses,
lgt_assert_entity_clauses,
lgt_assert_relation_clauses,
@@ -4634,6 +4729,15 @@ lgt_assert_def_clauses.
lgt_assert_ddef_clauses :-
lgt_ddef_(Clause),
assertz(Clause),
fail.
lgt_assert_ddef_clauses.
lgt_assert_super_clauses :-
lgt_super_(Clause),
assertz(Clause),
@@ -4685,7 +4789,7 @@ lgt_assert_relation_clauses([Clause| Clauses]) :-
arg(1, Clause, Entity),
lgt_retract_old_relation_clauses(Entity),
lgt_assert_new_relation_clauses([Clause| Clauses]).
lgt_retract_old_relation_clauses(Entity) :-
retractall(lgt_current_object_(Entity, _, _, _, _)),
@@ -5203,6 +5307,9 @@ lgt_lgt_built_in(abolish_events(_, _, _, _, _)).
lgt_lgt_built_in(define_events(_, _, _, _, _)).
lgt_lgt_built_in(current_event(_, _, _, _, _)).
lgt_lgt_built_in(current_logtalk_flag(_, _)).
lgt_lgt_built_in(set_logtalk_flag(_, _)).

View File

@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Logtalk - Object oriented extension to Prolog
% Release 2.9.3
% Release 2.10.0
%
% configuration file for YAP Prolog 4.3.x
%