diff java/src/java/io/File.d @ 21:9b96950f2c3c

the 'java' tree compiles on both D1-Tango and D2-Phobos
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Mar 2009 20:38:55 +0100
parents 6dd524f61e62
children
line wrap: on
line diff
--- a/java/src/java/io/File.d	Wed Mar 18 12:10:17 2009 +0100
+++ b/java/src/java/io/File.d	Thu Mar 19 20:38:55 2009 +0100
@@ -5,10 +5,15 @@
 
 import java.lang.all;
 
-static import tango.io.model.IFile;
-static import tango.io.FilePath;
-static import tango.io.Path;
-static import tango.io.FileSystem;
+version(Tango){
+    static import tango.io.model.IFile;
+    static import tango.io.FilePath;
+    static import tango.io.Path;
+    static import tango.io.FileSystem;
+} else { // Phobos
+    static import std.file;
+    static import std.path;
+}
 
 public class File {
 
@@ -17,25 +22,55 @@
     public static char pathSeparatorChar;
     public static String pathSeparator;
 
-    private tango.io.FilePath.FilePath mFilePath;
+    private String mFilePath;
 
     static this(){
-        separator = tango.io.model.IFile.FileConst.PathSeparatorString;
-        separatorChar = tango.io.model.IFile.FileConst.PathSeparatorChar;
-        pathSeparator = tango.io.model.IFile.FileConst.SystemPathString;
-        pathSeparatorChar = tango.io.model.IFile.FileConst.SystemPathChar;
+        version(Tango){
+            separator = tango.io.model.IFile.FileConst.PathSeparatorString;
+            separatorChar = tango.io.model.IFile.FileConst.PathSeparatorChar;
+            pathSeparator = tango.io.model.IFile.FileConst.SystemPathString;
+            pathSeparatorChar = tango.io.model.IFile.FileConst.SystemPathChar;
+        } else { // Phobos
+            version(Windows){
+                separator = "\\";
+                separatorChar = '\\';
+                pathSeparator = ";";
+                pathSeparatorChar = ';';
+            }
+            else{
+                separator = "/";
+                separatorChar = '/';
+                pathSeparator = ":";
+                pathSeparatorChar = ':';
+            }
+        }
+    }
+
+    private static String toStd( String path ){
+        version(Tango){
+            return tango.io.Path.standard( path );
+        } else { // Phobos
+            return path;
+        }
+    }
+    private static String join( String path, String file ){
+        version(Tango){
+            return tango.io.Path.join( path, file );
+        } else { // Phobos
+            return std.path.join( path, file );
+        }
     }
 
     public this ( String pathname ){
-        mFilePath = new tango.io.FilePath.FilePath( tango.io.Path.standard( pathname ));
+        mFilePath = toStd( pathname );
     }
 
     public this ( String parent, String child ){
-        mFilePath = new tango.io.FilePath.FilePath( tango.io.FilePath.FilePath.join( parent, child ) );
+        mFilePath = join( toStd(parent), toStd(child) );
     }
 
     public this ( java.io.File.File parent, String child ){
-        mFilePath = new tango.io.FilePath.FilePath( tango.io.FilePath.FilePath.join( parent.mFilePath.toString, child ) );
+        mFilePath = join( parent.mFilePath, toStd(child) );
     }
 
     public int getPrefixLength(){
@@ -69,11 +104,21 @@
     }
 
     public String getAbsolutePath(){
-        return tango.io.FileSystem.FileSystem.toAbsolute( mFilePath ).toString;
+        version(Tango){
+            return tango.io.FileSystem.FileSystem.toAbsolute( mFilePath );
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+            return "";
+        }
     }
 
     public java.io.File.File getAbsoluteFile(){
-        return new File( getAbsolutePath() );
+        version(Tango){
+            return new File( getAbsolutePath() );
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+            return null;
+        }
     }
 
     public String getCanonicalPath(){
@@ -92,15 +137,30 @@
     }
 
     public bool canWrite(){
-        return mFilePath.isWritable;
+        version(Tango){
+            return tango.io.Path.isWritable(mFilePath);
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+            return false;
+        }
     }
 
     public bool exists(){
-        return mFilePath.exists;
+        version(Tango){
+            return tango.io.Path.exists(mFilePath);
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+            return false;
+        }
     }
 
     public bool isDirectory(){
-        return mFilePath.isFolder;
+        version(Tango){
+            return tango.io.Path.isFolder(mFilePath);
+        } else { // Phobos
+            implMissing( __FILE__, __LINE__ );
+            return false;
+        }
     }
 
     public bool isFile(){