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     }