1 cananian 1.1.2.1 // TempFactory.java, created Fri Dec 11 21:10:48 1998 by cananian 2 cananian 1.1.2.5 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.2.5 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.2.1 package harpoon.Temp; 5 cananian 1.1.2.1 6 cananian 1.1.2.1 /** 7 pnkfelix 1.1.2.4 * A <code>TempFactory</code> assigns unique identifiers to 8 cananian 1.1.2.1 * <code>Temp</code>s within a given scope. 9 cananian 1.1.2.1 * 10 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 11 cananian 1.3 * @version $Id: TempFactory.java,v 1.3 2004/02/08 01:59:47 cananian Exp $ 12 cananian 1.1.2.1 */ 13 cananian 1.3 public abstract class TempFactory implements net.cscott.jutil.ReferenceUnique { 14 pnkfelix 1.1.2.7 int nextID = 0; 15 pnkfelix 1.1.2.7 int newID() { 16 pnkfelix 1.1.2.7 return nextID++; 17 pnkfelix 1.1.2.7 } 18 pnkfelix 1.1.2.7 19 cananian 1.1.2.1 /** Returns the static scope of this <code>TempFactory</code>. 20 cananian 1.1.2.1 * Should be unique among <code>TempFactory</code>s and invariant 21 cananian 1.1.2.1 * for a given <code>TempFactory</code>. */ 22 cananian 1.1.2.1 public abstract String getScope(); 23 pnkfelix 1.1.2.4 24 cananian 1.1.2.1 /** Returns a unique identifier within this scope. Not 25 cananian 1.1.2.1 * required to be unique among all <code>TempFactory</code>s. 26 cananian 1.1.2.1 * Should be repeatable; that is, the n'th call to getUniqueID() 27 cananian 1.1.2.1 * with a given suggestion String for a given <code>TempFactory</code> 28 cananian 1.1.2.1 * should always return the same String. */ 29 andyb 1.1.2.3 protected abstract String getUniqueID(String suggestion); 30 pnkfelix 1.1.2.4 31 cananian 1.1.2.1 /** Human-readable representation of <code>TempFactory</code> */ 32 cananian 1.1.2.1 public String toString() { return "TempFactory["+getScope()+"]"; } 33 pnkfelix 1.1.2.4 34 cananian 1.1.2.1 /** Return a hashcode for this <code>TempFactory</code>. */ 35 cananian 1.1.2.1 public int hashCode() { return getScope().hashCode(); } 36 cananian 1.2 }