org.jscience.computing.ai.planning
Class DelAddElement

java.lang.Object
  extended by org.jscience.computing.ai.planning.CompileTimeObject
      extended by org.jscience.computing.ai.planning.DelAddElement
Direct Known Subclasses:
DelAddAtomic, DelAddForAll, DelAddProtection

public abstract class DelAddElement
extends CompileTimeObject

Each element in the delete/add list of an operator both at compile time and run time is represented as an instance of a class derived from this abstract class.


Constructor Summary
DelAddElement()
           
 
Method Summary
abstract  void add(State s, Term[] binding, java.util.Vector[] delAddList)
          What to do when an operator has this element in its add list and it is being applied.
abstract  boolean del(State s, Term[] binding, java.util.Vector[] delAddList)
          What to do when an operator has this element in its delete list and it is being applied.
abstract  void setVarCount(int varCount)
          To set the number of variables in this delete/add element.
 
Methods inherited from class org.jscience.computing.ai.planning.CompileTimeObject
toCode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelAddElement

public DelAddElement()
Method Detail

add

public abstract void add(State s,
                         Term[] binding,
                         java.util.Vector[] delAddList)
What to do when an operator has this element in its add list and it is being applied.

Parameters:
s - the current state of the world.
binding - the binding to be applied before adding the element.
delAddList - an array of size 4 of atoms and protections deleted and added. This is useful when a backtrack happens: Added atoms and protections are retracted, and deleted atoms and protections are added back to change the state of the world to what it was before backtracked decision was made. The 4 elements of the array are the deleted atoms, the added atoms, the deleted protections, and the added protections repectively.

del

public abstract boolean del(State s,
                            Term[] binding,
                            java.util.Vector[] delAddList)
What to do when an operator has this element in its delete list and it is being applied.

Parameters:
s - the current state of the world.
binding - the binding to be applied before deleting the element.
delAddList - an array of size 4 of atoms and protections deleted and added. This is useful when a backtrack happens: Added atoms and protections are retracted, and deleted atoms and protections are added back to change the state of the world to what it was before backtracked decision was made. The 4 elements of array are the the deleted atoms, added atoms, deleted protections and added protections in that order.
Returns:
true if the atom(s) associated with this delete/add element were deleted, false otherwise, i.e., when at least one of the atoms to be deleted was protected. If this function returns false, it means the operator has failed and should be backtracked.

setVarCount

public abstract void setVarCount(int varCount)
To set the number of variables in this delete/add element. It is used when returning a binding since a binding is assumed to be an array of this size. This function must be called at compile time, since at run time the code to calculate the bindings has already been produced.

Parameters:
varCount - the number of variables.