jpl
Class Compound

java.lang.Object
  extended by jpl.Term
      extended by jpl.Compound
Direct Known Subclasses:
Atom

public class Compound
extends Term

A Compound represents a structured term, comprising a functor and arguments (Terms). Atom is a subclass of Compound, whose instances have zero arguments. Direct instances of Compound must have one or more arguments (it is an error to attempt to construct a Compound with zero args; a JPLException will be thrown). For example, this Java expression yields a representation of the term f(a):

 new Compound( "f", new Term[] { new Atom("a") } )
 
Note the use of the "anonymous array" notation to denote the arguments (an anonymous array of Term).
Alternatively, construct the Term from Prolog source syntax:
 Util.textToTerm("f(a)")
 
The arity of a Compound is the quantity of its arguments. Once constructed, neither the name nor the arity of a Compound can be altered. An argument of a Compound can be replaced with the setArg() method.
Copyright (C) 2004 Paul Singleton

Copyright (C) 1998 Fred Dushin

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library Public License for more details.


See Also:
Term, Atom

Constructor Summary
Compound(java.lang.String name, int arity)
          Creates a Compound with name and arity.
Compound(java.lang.String name, Term[] args)
          Creates a Compound with name and args.
 
Method Summary
 Term arg(int i)
          Returns the ith argument (counting from 1) of this Compound; throws an ArrayIndexOutOfBoundsException if i is inappropriate.
 Term arg0(int i)
          Deprecated.  
 Term[] args()
          Deprecated.  
 int arity()
          Returns the arity (1+) of this Compound.
 java.lang.String debugString()
          Deprecated.  
 boolean equals(java.lang.Object obj)
          Two Compounds are equal if they are identical (same object) or their names and arities are equal and their respective arguments are equal.
 boolean hasFunctor(java.lang.String name, int arity)
          Tests whether this Compound's functor has (String) 'name' and 'arity'.
 boolean isJFalse()
          whether this Term is a 'jboolean' structure denoting Java's false, i.e.
 boolean isJNull()
          whether this Term is a 'jnull' structure, i.e.
 boolean isJObject()
          whether this Term is a 'jobject' structure, i.e.
 boolean isJRef()
          whether this Term is a 'jref' structure, i.e.
 boolean isJTrue()
          whether this Term is a 'jboolean' structure denoting Java's true, i.e.
 boolean isJVoid()
          whether this Term is a 'jvoid' structure, i.e.
 java.lang.String name()
          Returns the name (unquoted) of this Compound.
 void setArg(int i, Term arg)
          Sets the i-th (from 1) arg of this Compound to the given Term instance.
 java.lang.String toString()
          Returns a prefix functional representation of a Compound of the form name(arg1,...), where 'name' is quoted iff necessary (to be valid Prolog soutce text) and each argument is represented according to its toString() method.
 int type()
          returns the type of this term, as jpl.fli.Prolog.COMPOUND
 java.lang.String typeName()
          returns the name of the type of this term, as "Compound"
 
Methods inherited from class jpl.Term
debugString, doubleValue, floatValue, hasFunctor, hasFunctor, intValue, isAtom, isCompound, isFloat, isInteger, isVariable, listLength, longValue, put, putParams, putParams, putTerm, toString, toTermArray
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Compound

public Compound(java.lang.String name,
                Term[] args)
Creates a Compound with name and args.

Parameters:
name - the name of this Compound
args - the (one or more) arguments of this Compound

Compound

public Compound(java.lang.String name,
                int arity)
Creates a Compound with name and arity. This constructor, along with the setArg method, serves the new, native Prolog-term-to-Java-term routine, and is public only so as to be accessible via JNI: it is not intended for general use.

Parameters:
name - the name of this Compound
arity - the arity of this Compound
Method Detail

arg

public final Term arg(int i)
Returns the ith argument (counting from 1) of this Compound; throws an ArrayIndexOutOfBoundsException if i is inappropriate.

Overrides:
arg in class Term
Returns:
the ith argument (counting from 1) of this Compound

hasFunctor

public final boolean hasFunctor(java.lang.String name,
                                int arity)
Tests whether this Compound's functor has (String) 'name' and 'arity'.

Overrides:
hasFunctor in class Term
Returns:
whether this Compound's functor has (String) 'name' and 'arity'

isJFalse

public boolean isJFalse()
whether this Term is a 'jboolean' structure denoting Java's false, i.e. @(false)

Overrides:
isJFalse in class Term
Returns:
whether this Term is a 'jboolean' structure denoting Java's false, i.e. @(false)

isJTrue

public boolean isJTrue()
whether this Term is a 'jboolean' structure denoting Java's true, i.e. @(fatruelse)

Overrides:
isJTrue in class Term
Returns:
whether this Term is a 'jboolean' structure denoting Java's true, i.e. @(fatruelse)

isJNull

public boolean isJNull()
whether this Term is a 'jnull' structure, i.e. @(null)

Overrides:
isJNull in class Term
Returns:
whether this Term is a 'jnull' structure, i.e. @(null)

isJVoid

public boolean isJVoid()
whether this Term is a 'jvoid' structure, i.e. @(void)

Overrides:
isJVoid in class Term
Returns:
whether this Term is a 'jvoid' structure, i.e. @(void)

isJObject

public boolean isJObject()
whether this Term is a 'jobject' structure, i.e. @(Tag)

Overrides:
isJObject in class Term
Returns:
whether this Term is a 'jobject' structure, i.e. @(Tag)

isJRef

public boolean isJRef()
whether this Term is a 'jref' structure, i.e. @(Tag) or @(null)

Overrides:
isJRef in class Term
Returns:
whether this Term is a 'jref' structure, i.e. @(Tag) or @(null)

name

public final java.lang.String name()
Returns the name (unquoted) of this Compound.

Overrides:
name in class Term
Returns:
the name (unquoted) of this Compound

arity

public final int arity()
Returns the arity (1+) of this Compound.

Overrides:
arity in class Term
Returns:
the arity (1+) of this Compound

toString

public java.lang.String toString()
Returns a prefix functional representation of a Compound of the form name(arg1,...), where 'name' is quoted iff necessary (to be valid Prolog soutce text) and each argument is represented according to its toString() method.

Overrides:
toString in class java.lang.Object
Returns:
string representation of an Compound

equals

public final boolean equals(java.lang.Object obj)
Two Compounds are equal if they are identical (same object) or their names and arities are equal and their respective arguments are equal.

Overrides:
equals in class java.lang.Object
Parameters:
obj - the Object to compare (not necessarily another Compound)
Returns:
true if the Object satisfies the above condition

type

public int type()
returns the type of this term, as jpl.fli.Prolog.COMPOUND

Specified by:
type in class Term
Returns:
the type of this term, as jpl.fli.Prolog.COMPOUND

typeName

public java.lang.String typeName()
returns the name of the type of this term, as "Compound"

Specified by:
typeName in class Term
Returns:
the name of the type of this term, as "Compound"

setArg

public void setArg(int i,
                   Term arg)
Sets the i-th (from 1) arg of this Compound to the given Term instance. This method, along with the Compound(name,arity) constructor, serves the new, native Prolog-term-to-Java-term routine, and is public only so as to be accessible via JNI: it is not intended for general use.

Parameters:
i - the index (1+) of the arg to be set
arg - the Term which is to become the i-th (from 1) arg of this Compound

args

public final Term[] args()
Deprecated. 

Returns the arguments of this Compound (1..arity) of this Compound as an array[0..arity-1] of Term.

Specified by:
args in class Term
Returns:
the arguments (1..arity) of this Compound as an array[0..arity-1] of Term

arg0

public final Term arg0(int i)
Deprecated. 

Returns the ith argument (counting from 0) of this Compound.

Returns:
the ith argument (counting from 0) of this Compound

debugString

public java.lang.String debugString()
Deprecated. 

Returns a debug-friendly representation of a Compound.

Specified by:
debugString in class Term
Returns:
a debug-friendly representation of a Compound