1 cananian 1.1.2.1 // FieldOracle.java, created Wed Nov 15 15:57:40 2000 by cananian
 2 cananian 1.1.2.2 // Copyright (C) 2000 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1.2.1 package harpoon.Analysis.Transactions;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.1 import harpoon.ClassFile.HField;
 7 cananian 1.1.2.1 
 8 cananian 1.1.2.1 /**
 9 cananian 1.1.2.1  * A <code>FieldOracle</code> helps the <code>SyncTransformer</code>
10 cananian 1.1.2.1  * decide which field references it can skip checks for.
11 cananian 1.1.2.1  * 
12 cananian 1.1.2.2  * @author   C. Scott Ananian <cananian@alumni.princeton.edu>
13 cananian 1.2      * @version $Id: FieldOracle.java,v 1.2 2002/02/25 21:00:09 cananian Exp $
14 cananian 1.1.2.1  */
15 cananian 1.1.2.1 abstract class FieldOracle {
16 cananian 1.1.2.1     /** Returns <code>true</code> if this field can be read within a
17 cananian 1.1.2.1         synchronized context. */
18 cananian 1.1.2.1     public abstract boolean isSyncRead(HField hf);
19 cananian 1.1.2.1     /** Returns <code>true</code> if this field can be written within a
20 cananian 1.1.2.1         synchronized context. */
21 cananian 1.1.2.1     public abstract boolean isSyncWrite(HField hf);
22 cananian 1.1.2.1     /** Returns <code>true</code> if this field can be read outside a
23 cananian 1.1.2.1         synchronized context. */
24 cananian 1.1.2.1     public abstract boolean isUnsyncRead(HField hf);
25 cananian 1.1.2.1     /** Returns <code>true</code> if this field can be written outside a
26 cananian 1.1.2.1         synchronized context. */
27 cananian 1.1.2.1     public abstract boolean isUnsyncWrite(HField hf);
28 cananian 1.2     }