Adapt to latest PrologCafe snapshot
I changed around some of the APIs in PrologCafe to make the use of SymbolTerm safer in a shared environment. Change-Id: I182c8c6fad78598749a75a1b45ad264c500ab5d5
This commit is contained in:
@@ -24,6 +24,8 @@ import com.googlecode.prolog_cafe.lang.PrologClassLoader;
|
|||||||
import com.googlecode.prolog_cafe.lang.SystemException;
|
import com.googlecode.prolog_cafe.lang.SystemException;
|
||||||
import com.googlecode.prolog_cafe.lang.Term;
|
import com.googlecode.prolog_cafe.lang.Term;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Per-thread Prolog interpreter.
|
* Per-thread Prolog interpreter.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -56,7 +58,7 @@ public class PrologEnvironment extends BufferingPrologControl {
|
|||||||
setPrologClassLoader(new PrologClassLoader(newCL));
|
setPrologClassLoader(new PrologClassLoader(newCL));
|
||||||
setMaxArity(8);
|
setMaxArity(8);
|
||||||
setMaxDatabaseSize(64);
|
setMaxDatabaseSize(64);
|
||||||
setEnableReflection(false);
|
setEnabled(EnumSet.allOf(Prolog.Feature.class), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get the global Guice Injector that configured the environment. */
|
/** Get the global Guice Injector that configured the environment. */
|
||||||
|
@@ -139,7 +139,7 @@ public class ProjectState {
|
|||||||
new PushbackReader(new StringReader(rules), Prolog.PUSHBACK_SIZE);
|
new PushbackReader(new StringReader(rules), Prolog.PUSHBACK_SIZE);
|
||||||
JavaObjectTerm streamObject = new JavaObjectTerm(in);
|
JavaObjectTerm streamObject = new JavaObjectTerm(in);
|
||||||
if (!env.execute(Prolog.BUILTIN, "consult_stream",
|
if (!env.execute(Prolog.BUILTIN, "consult_stream",
|
||||||
SymbolTerm.makeSymbol("rules.pl"), streamObject)) {
|
SymbolTerm.intern("rules.pl"), streamObject)) {
|
||||||
throw new CompileException("Cannot consult rules.pl " +
|
throw new CompileException("Cannot consult rules.pl " +
|
||||||
getProject().getName() + " " + getConfig().getRevision());
|
getProject().getName() + " " + getConfig().getRevision());
|
||||||
}
|
}
|
||||||
|
@@ -24,9 +24,9 @@ import com.googlecode.prolog_cafe.lang.Term;
|
|||||||
|
|
||||||
/** Exports list of {@code commit_label( label('Code-Review', 2), user(12345789) )}. */
|
/** Exports list of {@code commit_label( label('Code-Review', 2), user(12345789) )}. */
|
||||||
class PRED_$load_commit_labels_1 extends Predicate.P1 {
|
class PRED_$load_commit_labels_1 extends Predicate.P1 {
|
||||||
private static final SymbolTerm sym_commit_label = SymbolTerm.makeSymbol("commit_label", 2);
|
private static final SymbolTerm sym_commit_label = SymbolTerm.intern("commit_label", 2);
|
||||||
private static final SymbolTerm sym_label = SymbolTerm.makeSymbol("label", 2);
|
private static final SymbolTerm sym_label = SymbolTerm.intern("label", 2);
|
||||||
private static final SymbolTerm sym_user = SymbolTerm.makeSymbol("user", 1);
|
private static final SymbolTerm sym_user = SymbolTerm.intern("user", 1);
|
||||||
|
|
||||||
PRED_$load_commit_labels_1(Term a1, Operation n) {
|
PRED_$load_commit_labels_1(Term a1, Operation n) {
|
||||||
arg1 = a1;
|
arg1 = a1;
|
||||||
@@ -57,7 +57,7 @@ class PRED_$load_commit_labels_1 extends Predicate.P1 {
|
|||||||
|
|
||||||
StructureTerm labelTerm = new StructureTerm(
|
StructureTerm labelTerm = new StructureTerm(
|
||||||
sym_label,
|
sym_label,
|
||||||
SymbolTerm.makeSymbol(t.getCategory().getLabelName()),
|
SymbolTerm.intern(t.getCategory().getLabelName()),
|
||||||
new IntegerTerm(a.getValue()));
|
new IntegerTerm(a.getValue()));
|
||||||
|
|
||||||
StructureTerm userTerm = new StructureTerm(
|
StructureTerm userTerm = new StructureTerm(
|
||||||
|
@@ -68,14 +68,14 @@ class PRED_get_legacy_approval_types_1 extends Predicate.P1 {
|
|||||||
return cont;
|
return cont;
|
||||||
}
|
}
|
||||||
|
|
||||||
static final SymbolTerm symApprovalType = SymbolTerm.makeSymbol(
|
static final SymbolTerm symApprovalType = SymbolTerm.intern(
|
||||||
"approval_type", 5);
|
"approval_type", 5);
|
||||||
|
|
||||||
static Term export(ApprovalType type) {
|
static Term export(ApprovalType type) {
|
||||||
return new StructureTerm(symApprovalType,
|
return new StructureTerm(symApprovalType,
|
||||||
SymbolTerm.makeSymbol(type.getCategory().getLabelName()),
|
SymbolTerm.intern(type.getCategory().getLabelName()),
|
||||||
SymbolTerm.makeSymbol(type.getCategory().getId().get()),
|
SymbolTerm.intern(type.getCategory().getId().get()),
|
||||||
SymbolTerm.makeSymbol(type.getCategory().getFunctionName()),
|
SymbolTerm.intern(type.getCategory().getFunctionName()),
|
||||||
new IntegerTerm(type.getMin().getValue()),
|
new IntegerTerm(type.getMin().getValue()),
|
||||||
new IntegerTerm(type.getMax().getValue()));
|
new IntegerTerm(type.getMax().getValue()));
|
||||||
}
|
}
|
||||||
|
@@ -30,12 +30,13 @@ import java.io.FileNotFoundException;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/** Base class for any tests written in Prolog. */
|
/** Base class for any tests written in Prolog. */
|
||||||
public abstract class PrologTestCase extends TestCase {
|
public abstract class PrologTestCase extends TestCase {
|
||||||
private static final SymbolTerm test_1 = SymbolTerm.makeSymbol("test", 1);
|
private static final SymbolTerm test_1 = SymbolTerm.intern("test", 1);
|
||||||
|
|
||||||
private String pkg;
|
private String pkg;
|
||||||
private boolean hasSetup;
|
private boolean hasSetup;
|
||||||
@@ -54,6 +55,7 @@ public abstract class PrologTestCase extends TestCase {
|
|||||||
PrologEnvironment.Factory.class);
|
PrologEnvironment.Factory.class);
|
||||||
env = factory.create(getClass().getClassLoader());
|
env = factory.create(getClass().getClassLoader());
|
||||||
env.setMaxDatabaseSize(16 * 1024);
|
env.setMaxDatabaseSize(16 * 1024);
|
||||||
|
env.setEnabled(Prolog.Feature.IO, true);
|
||||||
|
|
||||||
consult(getClass(), prologResource);
|
consult(getClass(), prologResource);
|
||||||
|
|
||||||
@@ -62,7 +64,7 @@ public abstract class PrologTestCase extends TestCase {
|
|||||||
hasTeardown = has("teardown");
|
hasTeardown = has("teardown");
|
||||||
|
|
||||||
StructureTerm head = new StructureTerm(":",
|
StructureTerm head = new StructureTerm(":",
|
||||||
SymbolTerm.makeSymbol(pkg),
|
SymbolTerm.intern(pkg),
|
||||||
new StructureTerm(test_1, new VariableTerm()));
|
new StructureTerm(test_1, new VariableTerm()));
|
||||||
|
|
||||||
tests = new ArrayList<Term>();
|
tests = new ArrayList<Term>();
|
||||||
@@ -79,7 +81,7 @@ public abstract class PrologTestCase extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String path = url.getPath();
|
String path = url.getPath();
|
||||||
if (!env.execute(Prolog.BUILTIN, "consult", SymbolTerm.makeSymbol(path))) {
|
if (!env.execute(Prolog.BUILTIN, "consult", SymbolTerm.intern(path))) {
|
||||||
throw new CompileException("Cannot consult" + path);
|
throw new CompileException("Cannot consult" + path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,7 +92,7 @@ public abstract class PrologTestCase extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean has(String name) {
|
private boolean has(String name) {
|
||||||
StructureTerm head = SymbolTerm.makeSymbol(pkg, name, 0);
|
StructureTerm head = SymbolTerm.create(pkg, name, 0);
|
||||||
return env.execute(Prolog.BUILTIN, "clause", head, new VariableTerm());
|
return env.execute(Prolog.BUILTIN, "clause", head, new VariableTerm());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +147,7 @@ public abstract class PrologTestCase extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void call(String name) {
|
private void call(String name) {
|
||||||
StructureTerm head = SymbolTerm.makeSymbol(pkg, name, 0);
|
StructureTerm head = SymbolTerm.create(pkg, name, 0);
|
||||||
if (!env.execute(Prolog.BUILTIN, "call", head)) {
|
if (!env.execute(Prolog.BUILTIN, "call", head)) {
|
||||||
fail("Cannot invoke " + pkg + ":" + name);
|
fail("Cannot invoke " + pkg + ":" + name);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user