X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.runtime%2Fscl%2FFile.scl;fp=bundles%2Forg.simantics.scl.runtime%2Fscl%2FFile.scl;h=54af66dc05f03a5d92546ed1076adacf0c3b0f7c;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.runtime/scl/File.scl b/bundles/org.simantics.scl.runtime/scl/File.scl new file mode 100644 index 000000000..54af66dc0 --- /dev/null +++ b/bundles/org.simantics.scl.runtime/scl/File.scl @@ -0,0 +1,83 @@ +import "Prelude" +import "Stream" +import "Vector" + +importJava "java.io.File" where + data File + + @JavaName "" + file :: String -> File + + @JavaName "" + childFile :: File -> String -> File + + @JavaName "getPath" + pathOfFile :: File -> String + + @JavaName "getAbsolutePath" + cwd :: File -> String + + @JavaName "getParent" + parentFile :: File -> String + + @JavaName exists + fileExists :: File -> Boolean + + @JavaName createNewFile + createFile :: File -> () + + @JavaName length + sizeOfFile :: File -> Long + + @JavaName createTempFile + createTempFile :: String -> String -> Maybe File -> File + + @JavaName deleteOnExit + deleteFileOnExit :: File -> () + + @JavaName delete + deleteFile :: File -> () + + @JavaName mkdirs + makeDirs :: File -> Boolean + + isFile :: File -> Boolean + isDirectory :: File -> Boolean + + @private + @JavaName listFiles + listMaybeFiles :: File -> Maybe (Vector File) + +listFiles :: File -> 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 -> () + moveFile :: File -> File -> () + syncFile :: File -> () + createTempDirectory :: String -> Maybe File -> File + +pwd :: () -> String +pwd () = cwd (file "") + +instance Show File where + show = pathOfFile + +importJava "java.io.FileInputStream" where + @private + @JavaName "" + openFileForReading :: File -> InputStream + +instance Readable File where + openForReading = openFileForReading + +importJava "java.io.FileOutputStream" where + @private + @JavaName "" + openFileForWriting :: File -> OutputStream + +instance Writable File where + openForWriting = openFileForWriting \ No newline at end of file