1 cananian 1.1.2.1 // INFile.java, created Sat Nov 13 01:00:13 1999 by cananian
 2 cananian 1.1.2.1 // Copyright (C) 1999 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.Interpret.Quads;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.1 import harpoon.ClassFile.HClass;
 7 cananian 1.1.2.1 import harpoon.ClassFile.HField;
 8 cananian 1.1.2.1 import harpoon.ClassFile.HMethod;
 9 cananian 1.1.2.1 
10 cananian 1.1.2.1 /**
11 cananian 1.1.2.1  * <code>INFile</code> provides implementations for (some of) the native
12 cananian 1.1.2.1  * methods in <code>java.io.File</code>.
13 cananian 1.1.2.1  * 
14 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
15 cananian 1.2      * @version $Id: INFile.java,v 1.2 2002/02/25 21:05:45 cananian Exp $
16 cananian 1.1.2.1  */
17 cananian 1.1.2.2 public class INFile {
18 cananian 1.1.2.1     static final void register(StaticState ss) {
19 cananian 1.1.2.3         // JDK 1.1 only
20 cananian 1.1.2.3         try { ss.register(isFile0(ss)); } catch (NoSuchMethodError e) {}
21 cananian 1.1.2.4         try { ss.register(isDirectory0(ss)); } catch (NoSuchMethodError e) {}
22 cananian 1.1.2.1     }
23 cananian 1.1.2.1     // test existence of a file.
24 cananian 1.1.2.2     private static final NativeMethod isFile0(StaticState ss0) {
25 cananian 1.1.2.1         final HMethod hm =
26 cananian 1.1.2.2             ss0.HCfile.getMethod("isFile0", new HClass[0]);
27 cananian 1.1.2.1         return new NativeMethod() {
28 cananian 1.1.2.1             HMethod getMethod() { return hm; }
29 cananian 1.1.2.1             Object invoke(StaticState ss, Object[] params) {
30 cananian 1.1.2.1                 ObjectRef obj = (ObjectRef) params[0];
31 cananian 1.1.2.2                 HField hf = ss.HCfile.getField("path");
32 cananian 1.1.2.1                 String path = ss.ref2str((ObjectRef)obj.get(hf));
33 cananian 1.1.2.1                 return new Boolean(new java.io.File(path).isFile());
34 cananian 1.1.2.4             }
35 cananian 1.1.2.4         };
36 cananian 1.1.2.4     }
37 cananian 1.1.2.4     // verify that the File is a directory.
38 cananian 1.1.2.4     private static final NativeMethod isDirectory0(StaticState ss0) {
39 cananian 1.1.2.4         final HMethod hm =
40 cananian 1.1.2.4             ss0.HCfile.getMethod("isDirectory0", new HClass[0]);
41 cananian 1.1.2.4         return new NativeMethod() {
42 cananian 1.1.2.4             HMethod getMethod() { return hm; }
43 cananian 1.1.2.4             Object invoke(StaticState ss, Object[] params) {
44 cananian 1.1.2.4                 ObjectRef obj = (ObjectRef) params[0];
45 cananian 1.1.2.4                 HField hf = ss.HCfile.getField("path");
46 cananian 1.1.2.4                 String path = ss.ref2str((ObjectRef)obj.get(hf));
47 cananian 1.1.2.4                 return new Boolean(new java.io.File(path).isDirectory());
48 cananian 1.1.2.1             }
49 cananian 1.1.2.1         };
50 cananian 1.1.2.1     }
51 cananian 1.2     }