aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2011-06-03 17:42:47 -0700
committerShawn O. Pearce <sop@google.com>2011-06-03 17:42:47 -0700
commitd98caf42d928f22577bf8f53439e565d1c1c85e2 (patch)
tree3ab548dc79d1edd7412ad7ac6646d3f5f8382a76
parentcb388d4d406f5acb352e6a815af6dbe84b13b1a9 (diff)
downloadprolog-cafe-d98caf42d928f22577bf8f53439e565d1c1c85e2.tar.gz
Make StructureTerm constructor a varags format
This cleans up the allocation of many StructureTerms.
-rw-r--r--src/builtin/PRED_$call_2.java9
-rw-r--r--src/builtin/PRED_$get_instances_2.java13
-rw-r--r--src/builtin/PRED_atom_concat_3.java3
-rw-r--r--src/builtin/PRED_open_4.java12
-rw-r--r--src/lang/StructureTerm.java2
5 files changed, 13 insertions, 26 deletions
diff --git a/src/builtin/PRED_$call_2.java b/src/builtin/PRED_$call_2.java
index 32d3904..b9ace54 100644
--- a/src/builtin/PRED_$call_2.java
+++ b/src/builtin/PRED_$call_2.java
@@ -53,10 +53,11 @@ class PRED_$call_2 extends Predicate.P2 {
if ((engine.getUnknown()).equals("fail"))
return engine.fail();
- Term[] fa = {SymbolTerm.makeSymbol(functor), new IntegerTerm(arity)};
- Term[] r = {a1, new StructureTerm(SYM_SLASH_2, fa)};
- Term what = new StructureTerm(SYM_COLON_2, r);
-
+ Term what = new StructureTerm(SYM_COLON_2,
+ a1,
+ new StructureTerm(SYM_SLASH_2,
+ SymbolTerm.makeSymbol(functor),
+ new IntegerTerm(arity)));
ExistenceException err = new ExistenceException(this, 0, "procedure", what, e.getMessage());
err.initCause(e);
throw err;
diff --git a/src/builtin/PRED_$get_instances_2.java b/src/builtin/PRED_$get_instances_2.java
index 4d778cf..2873e9b 100644
--- a/src/builtin/PRED_$get_instances_2.java
+++ b/src/builtin/PRED_$get_instances_2.java
@@ -41,17 +41,8 @@ class PRED_$get_instances_2 extends Predicate.P2 {
int i = ((IntegerTerm)car).intValue();
Term e = engine.internalDB.get(i);
if (e != null) {
- Term[] arg = {e, car};
- x = new ListTerm(new StructureTerm(COMMA, arg), x);
- }
- // else {
- // System.out.println("index " + i + " is deleted.");
- // }
-
- // if (e == null)
- // throw new SystemException("invalid index");
- // Term[] arg = {e, car};
- // x = new ListTerm(new StructureTerm(COMMA, arg), x);
+ x = new ListTerm(new StructureTerm(COMMA, e, car), x);
+ }
tmp = ((ListTerm)tmp).cdr().dereference();
}
if (! a2.unify(x, engine.trail))
diff --git a/src/builtin/PRED_atom_concat_3.java b/src/builtin/PRED_atom_concat_3.java
index 48f5875..77e4dec 100644
--- a/src/builtin/PRED_atom_concat_3.java
+++ b/src/builtin/PRED_atom_concat_3.java
@@ -33,8 +33,7 @@ public class PRED_atom_concat_3 extends Predicate.P3 {
SymbolTerm.makeSymbol(str3.substring(i, endIndex))};
t = new ListTerm(new StructureTerm(AC_2, args), t);
}
- Term[] args12 = {a1,a2};
- return new PRED_$member_in_reverse_2(new StructureTerm(AC_2, args12), t, cont);
+ return new PRED_$member_in_reverse_2(new StructureTerm(AC_2, a1, a2), t, cont);
} else if (! a3.isVariable()) {
throw new IllegalTypeException(this, 3, "atom", a3);
}
diff --git a/src/builtin/PRED_open_4.java b/src/builtin/PRED_open_4.java
index f4a2c88..24e482c 100644
--- a/src/builtin/PRED_open_4.java
+++ b/src/builtin/PRED_open_4.java
@@ -111,16 +111,12 @@ public class PRED_open_4 extends Predicate.P4 {
}
tmp = ((ListTerm) tmp).cdr().dereference();
}
- Term[] args1 = {SYM_TEXT};
- Term[] args2 = {a2};
- Term[] args3 = {SymbolTerm.makeSymbol(file.getAbsolutePath())};
- opts = new ListTerm(new StructureTerm(SYM_TYPE_1, args1), opts);
- opts = new ListTerm(new StructureTerm(SYM_MODE_1, args2), opts);
- opts = new ListTerm(new StructureTerm(SYM_FILE_NAME_1, args3), opts);
+ opts = new ListTerm(new StructureTerm(SYM_TYPE_1, SYM_TEXT), opts);
+ opts = new ListTerm(new StructureTerm(SYM_MODE_1, a2), opts);
+ opts = new ListTerm(new StructureTerm(SYM_FILE_NAME_1, SymbolTerm.makeSymbol(file.getAbsolutePath())), opts);
if (alias != null) {
engine.getStreamManager().put(alias, streamObject);
- Term[] as = {alias};
- opts = new ListTerm(new StructureTerm(SYM_ALIAS_1, as), opts);
+ opts = new ListTerm(new StructureTerm(SYM_ALIAS_1, alias), opts);
}
((VariableTerm)a3).bind(streamObject, engine.trail);
engine.getStreamManager().put(streamObject, opts);
diff --git a/src/lang/StructureTerm.java b/src/lang/StructureTerm.java
index 354a66b..ef806cf 100644
--- a/src/lang/StructureTerm.java
+++ b/src/lang/StructureTerm.java
@@ -35,7 +35,7 @@ public class StructureTerm extends Term {
* such that <code>_functor</code> is the functor symbol, and
* <code>_args</code> is the argument terms respectively.
*/
- public StructureTerm(SymbolTerm _functor, Term[] _args){
+ public StructureTerm(SymbolTerm _functor, Term... _args){
functor = _functor;
arity = functor.arity();
args = _args;