new built-in predicate: show_tabled_predicates/0

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1620 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
ricroc 2006-04-29 15:52:22 +00:00
parent 481a01c5e5
commit 676e2774c9

View File

@ -5,7 +5,7 @@
Copyright: R. Rocha and NCC - University of Porto, Portugal
File: opt.preds.c
version: $Id: opt.preds.c,v 1.25 2005-08-10 21:36:34 ricroc Exp $
version: $Id: opt.preds.c,v 1.26 2006-04-29 15:52:22 ricroc Exp $
**********************************************************************/
@ -67,6 +67,7 @@ static int p_table(void);
static int p_tabling_mode(void);
static int p_abolish_table(void);
static int p_abolish_all_tables(void);
static int p_show_tabled_predicates(void);
static int p_show_table(void);
static int p_table_statistics(void);
static int p_tabling_statistics(void);
@ -128,6 +129,7 @@ void Yap_init_optyap_preds(void) {
Yap_InitCPred("$c_tabling_mode", 3, p_tabling_mode, SafePredFlag|SyncPredFlag|HiddenPredFlag);
Yap_InitCPred("$c_abolish_table", 2, p_abolish_table, SafePredFlag|SyncPredFlag|HiddenPredFlag);
Yap_InitCPred("abolish_all_tables", 0, p_abolish_all_tables, SafePredFlag|SyncPredFlag);
Yap_InitCPred("show_tabled_predicates", 0, p_show_tabled_predicates, SafePredFlag|SyncPredFlag);
Yap_InitCPred("$c_show_table", 2, p_show_table, SafePredFlag|SyncPredFlag|HiddenPredFlag);
Yap_InitCPred("$c_table_statistics", 2, p_table_statistics, SafePredFlag|SyncPredFlag|HiddenPredFlag);
Yap_InitCPred("tabling_statistics", 0, p_tabling_statistics, SafePredFlag|SyncPredFlag);
@ -681,6 +683,31 @@ int p_abolish_all_tables(void) {
}
static
int p_show_tabled_predicates(void) {
tab_ent_ptr tab_ent;
PredEntry *pred;
char *name;
Int arity;
fprintf(Yap_stderr,"Tabled predicates\n");
tab_ent = GLOBAL_root_tab_ent;
if (tab_ent == NULL)
fprintf(Yap_stderr," none\n");
else while(tab_ent) {
pred = TabEnt_pe(tab_ent);
arity = pred->ArityOfPE;
if (arity == 0)
name = RepAtom((Atom)pred->FunctorOfPred)->StrOfAE;
else
name = RepAtom(NameOfFunctor((pred->FunctorOfPred)))->StrOfAE;
fprintf(Yap_stderr," %s/%d\n", name, arity);
tab_ent = TabEnt_next(tab_ent);
}
return (TRUE);
}
static
int p_show_table(void) {
Term mod, t;