]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/scl/File.scl
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / File.scl
diff --git a/bundles/org.simantics.scl.runtime/scl/File.scl b/bundles/org.simantics.scl.runtime/scl/File.scl
new file mode 100644 (file)
index 0000000..54af66d
--- /dev/null
@@ -0,0 +1,83 @@
+import "Prelude"
+import "Stream"
+import "Vector"
+
+importJava "java.io.File" where
+    data File
+    
+    @JavaName "<init>"
+    file :: String -> File
+    
+    @JavaName "<init>"
+    childFile :: File -> String -> File
+    
+    @JavaName "getPath"
+    pathOfFile :: File -> String
+    
+    @JavaName "getAbsolutePath"
+    cwd :: File -> String
+    
+    @JavaName "getParent"
+    parentFile :: File -> String
+    
+    @JavaName exists
+    fileExists :: File -> <Proc> Boolean
+    
+    @JavaName createNewFile
+    createFile :: File -> <Proc> ()
+
+    @JavaName length
+    sizeOfFile :: File -> <Proc> Long
+    
+    @JavaName createTempFile
+    createTempFile :: String -> String -> Maybe File -> <Proc> File
+    
+    @JavaName deleteOnExit
+    deleteFileOnExit :: File -> <Proc> ()
+    
+    @JavaName delete
+    deleteFile :: File -> <Proc> ()
+    
+    @JavaName mkdirs
+    makeDirs :: File -> <Proc> Boolean
+    
+    isFile :: File -> <Proc> Boolean
+    isDirectory :: File -> <Proc> Boolean 
+    
+    @private
+    @JavaName listFiles
+    listMaybeFiles :: File -> <Proc> Maybe (Vector File)
+
+listFiles :: File -> <Proc> Vector File
+listFiles filees = do
+    match listMaybeFiles filees with
+        Just (files) -> files
+        Nothing -> vector []
+    
+importJava "org.simantics.scl.runtime.io.FileIO" where
+    copyFile :: File -> File -> <Proc> ()
+    moveFile :: File -> File -> <Proc> ()
+    syncFile :: File -> <Proc> ()
+    createTempDirectory :: String -> Maybe File -> <Proc> File
+
+pwd :: () -> String
+pwd () = cwd (file "")
+
+instance Show File where
+    show = pathOfFile
+
+importJava "java.io.FileInputStream" where
+    @private
+    @JavaName "<init>"
+    openFileForReading :: File -> InputStream
+
+instance Readable File where
+    openForReading = openFileForReading
+
+importJava "java.io.FileOutputStream" where
+    @private
+    @JavaName "<init>"
+    openFileForWriting :: File -> OutputStream
+
+instance Writable File where
+    openForWriting = openFileForWriting
\ No newline at end of file