package org.ggp.base.util.statemachine; import java.util.HashSet; import java.util.Set; import org.ggp.base.util.gdl.grammar.GdlSentence; public class MachineState { public MachineState() { this.contents = null; } /** * Starts with a simple implementation of a MachineState. StateMachines that * want to do more advanced things can subclass this implementation, but for * many cases this will do exactly what we want. */ private final Set<GdlSentence> contents; public MachineState(Set<GdlSentence> contents) { this.contents = contents; } /** * getContents returns the GDL sentences which determine the current state * of the game being played. Two given states with identical GDL sentences * should be identical states of the game. */ public Set<GdlSentence> getContents() { return contents; } @Override public MachineState clone() { return new MachineState(new HashSet<GdlSentence>(contents)); } /* Utility methods */ @Override public int hashCode() { return getContents().hashCode(); } @Override public String toString() { Set<GdlSentence> contents = getContents(); if(contents == null) return "(MachineState with null contents)"; else return contents.toString(); } @Override public boolean equals(Object o) { if ((o != null) && (o instanceof MachineState)) { MachineState state = (MachineState) o; return state.getContents().equals(getContents()); } return false; } }