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 }