JSHOP2
Class DelAddProtection

java.lang.Object
  extended by JSHOP2.CompileTimeObject
      extended by JSHOP2.DelAddElement
          extended by JSHOP2.DelAddProtection

public class DelAddProtection
extends DelAddElement

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

Version:
1.0.3
Author:
Okhtay Ilghami, http://www.cs.umd.edu/~okhtay

Field Summary
private  Predicate atom
          The atom to be protected/unprotected.
 
Fields inherited from class JSHOP2.CompileTimeObject
endl
 
Constructor Summary
DelAddProtection(Predicate atomIn)
          To initialize this Protection delete/add element.
 
Method Summary
 void add(State s, Term[] binding, java.util.Vector[] delAddList)
          To add this atom to the list of protected atoms.
 boolean del(State s, Term[] binding, java.util.Vector[] delAddList)
          To delete this atom from the list of protected atoms.
 void setVarCount(int varCount)
          To set the number of variables in this Protection delete/add element.
 java.lang.String toCode()
          This function produces Java code to create this Protection delete/add element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

atom

private Predicate atom
The atom to be protected/unprotected.

Constructor Detail

DelAddProtection

public DelAddProtection(Predicate atomIn)
To initialize this Protection delete/add element.

Parameters:
atomIn - the atom to be protected/unprotected.
Method Detail

add

public void add(State s,
                Term[] binding,
                java.util.Vector[] delAddList)
To add this atom to the list of protected atoms.

Specified by:
add in class DelAddElement
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 boolean del(State s,
                   Term[] binding,
                   java.util.Vector[] delAddList)
To delete this atom from the list of protected atoms.

Specified by:
del in class DelAddElement
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 void setVarCount(int varCount)
To set the number of variables in this Protection delete/add element.

Specified by:
setVarCount in class DelAddElement
Parameters:
varCount - the number of variables.

toCode

public java.lang.String toCode()
This function produces Java code to create this Protection delete/add element.

Specified by:
toCode in class CompileTimeObject
Returns:
the produced code as a String.