package jp.ac.kobe_u.cs.prolog.builtin;
import jp.ac.kobe_u.cs.prolog.lang.Predicate;
import jp.ac.kobe_u.cs.prolog.lang.Prolog;
import jp.ac.kobe_u.cs.prolog.lang.StructureTerm;
import jp.ac.kobe_u.cs.prolog.lang.SymbolTerm;
import jp.ac.kobe_u.cs.prolog.lang.Term;
import jp.ac.kobe_u.cs.prolog.lang.VariableTerm;
/*
This file is generated by Prolog Cafe.
PLEASE DO NOT EDIT!
*/
/**
<code>'$consult_init'/1</code> defined in builtins.pl<br>
@author Mutsunori Banbara (banbara@kobe-u.ac.jp)
@author Naoyuki Tamura (tamura@kobe-u.ac.jp)
@version 1.0
*/
class PRED_$consult_init_1 extends Predicate {
static SymbolTerm s1 = SymbolTerm.makeSymbol(":", 2);
static SymbolTerm s2 = SymbolTerm.makeSymbol("jp.ac.kobe_u.cs.prolog.builtin");
static SymbolTerm s3 = SymbolTerm.makeSymbol("$consulted_file", 1);
static SymbolTerm s4 = SymbolTerm.makeSymbol("$consulted_package", 1);
static SymbolTerm s5 = SymbolTerm.makeSymbol("$consulted_predicate", 3);
static SymbolTerm s6 = SymbolTerm.makeSymbol("user");
static Term[] s7 = {s6};
static StructureTerm s8 = new StructureTerm(s4, s7);
static Term[] s9 = {s2, s8};
static StructureTerm s10 = new StructureTerm(s1, s9);
static Predicate _$consult_init_1_sub_1 = new PRED_$consult_init_1_sub_1();
static Predicate _$consult_init_1_1 = new PRED_$consult_init_1_1();
static Predicate _$consult_init_1_2 = new PRED_$consult_init_1_2();
public Term arg1;
public PRED_$consult_init_1(Term a1, Predicate cont) {
arg1 = a1;
this.cont = cont;
}
public PRED_$consult_init_1(){}
public void setArgument(Term[] args, Predicate cont) {
arg1 = args[0];
this.cont = cont;
}
public int arity() { return 1; }
public String toString() {
return "$consult_init(" + arg1 + ")";
}
public Predicate exec(Prolog engine) {
engine.aregs[1] = arg1;
engine.cont = cont;
engine.setB0();
return engine.jtry(_$consult_init_1_1, _$consult_init_1_sub_1);
}
}
class PRED_$consult_init_1_sub_1 extends PRED_$consult_init_1 {
public Predicate exec(Prolog engine) {
return engine.trust(_$consult_init_1_2);
}
}
class PRED_$consult_init_1_1 extends PRED_$consult_init_1 {
public Predicate exec(Prolog engine) {
// '$consult_init'(A):-retractall('$consulted_file'(B)),retractall('$consulted_package'(C)),retract('$consulted_predicate'(D,E,A)),abolish(D:E),fail
Term a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
Predicate p1, p2, p3, p4;
Predicate cont;
a1 = engine.aregs[1];
cont = engine.cont;
// '$consult_init'(A):-[retractall('jp.ac.kobe_u.cs.prolog.builtin':'$consulted_file'(B)),retractall('jp.ac.kobe_u.cs.prolog.builtin':'$consulted_package'(C)),retract('jp.ac.kobe_u.cs.prolog.builtin':'$consulted_predicate'(D,E,A)),abolish(D:E),fail]
Term[] y1 = {new VariableTerm(engine)};
a2 = new StructureTerm(s3, y1);
Term[] y2 = {s2, a2};
a3 = new StructureTerm(s1, y2);
Term[] y3 = {new VariableTerm(engine)};
a4 = new StructureTerm(s4, y3);
Term[] y4 = {s2, a4};
a5 = new StructureTerm(s1, y4);
a6 = new VariableTerm(engine);
a7 = new VariableTerm(engine);
Term[] y5 = {a6, a7, a1};
a8 = new StructureTerm(s5, y5);
Term[] y6 = {s2, a8};
a9 = new StructureTerm(s1, y6);
Term[] y7 = {a6, a7};
a10 = new StructureTerm(s1, y7);
p1 = new PRED_fail_0(cont);
p2 = new PRED_abolish_1(a10, p1);
p3 = new PRED_retract_1(a9, p2);
p4 = new PRED_retractall_1(a5, p3);
return new PRED_retractall_1(a3, p4);
}
}
class PRED_$consult_init_1_2 extends PRED_$consult_init_1 {
public Predicate exec(Prolog engine) {
// '$consult_init'(A):-assertz('$consulted_file'(A)),assertz('$consulted_package'(user))
Term a1, a2, a3;
Predicate p1;
Predicate cont;
a1 = engine.aregs[1];
cont = engine.cont;
// '$consult_init'(A):-[assertz('jp.ac.kobe_u.cs.prolog.builtin':'$consulted_file'(A)),assertz('jp.ac.kobe_u.cs.prolog.builtin':'$consulted_package'(user))]
Term[] y1 = {a1};
a2 = new StructureTerm(s3, y1);
Term[] y2 = {s2, a2};
a3 = new StructureTerm(s1, y2);
p1 = new PRED_assertz_1(s10, cont);
return new PRED_assertz_1(a3, p1);
}
}