]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/scl/File.scl
54af66dc05f03a5d92546ed1076adacf0c3b0f7c
[simantics/platform.git] / bundles / org.simantics.scl.runtime / scl / File.scl
1 import "Prelude"
2 import "Stream"
3 import "Vector"
4
5 importJava "java.io.File" where
6     data File
7     
8     @JavaName "<init>"
9     file :: String -> File
10     
11     @JavaName "<init>"
12     childFile :: File -> String -> File
13     
14     @JavaName "getPath"
15     pathOfFile :: File -> String
16     
17     @JavaName "getAbsolutePath"
18     cwd :: File -> String
19     
20     @JavaName "getParent"
21     parentFile :: File -> String
22     
23     @JavaName exists
24     fileExists :: File -> <Proc> Boolean
25     
26     @JavaName createNewFile
27     createFile :: File -> <Proc> ()
28
29     @JavaName length
30     sizeOfFile :: File -> <Proc> Long
31     
32     @JavaName createTempFile
33     createTempFile :: String -> String -> Maybe File -> <Proc> File
34     
35     @JavaName deleteOnExit
36     deleteFileOnExit :: File -> <Proc> ()
37     
38     @JavaName delete
39     deleteFile :: File -> <Proc> ()
40     
41     @JavaName mkdirs
42     makeDirs :: File -> <Proc> Boolean
43     
44     isFile :: File -> <Proc> Boolean
45     isDirectory :: File -> <Proc> Boolean 
46     
47     @private
48     @JavaName listFiles
49     listMaybeFiles :: File -> <Proc> Maybe (Vector File)
50
51 listFiles :: File -> <Proc> Vector File
52 listFiles filees = do
53     match listMaybeFiles filees with
54         Just (files) -> files
55         Nothing -> vector []
56     
57 importJava "org.simantics.scl.runtime.io.FileIO" where
58     copyFile :: File -> File -> <Proc> ()
59     moveFile :: File -> File -> <Proc> ()
60     syncFile :: File -> <Proc> ()
61     createTempDirectory :: String -> Maybe File -> <Proc> File
62
63 pwd :: () -> String
64 pwd () = cwd (file "")
65
66 instance Show File where
67     show = pathOfFile
68
69 importJava "java.io.FileInputStream" where
70     @private
71     @JavaName "<init>"
72     openFileForReading :: File -> InputStream
73
74 instance Readable File where
75     openForReading = openFileForReading
76
77 importJava "java.io.FileOutputStream" where
78     @private
79     @JavaName "<init>"
80     openFileForWriting :: File -> OutputStream
81
82 instance Writable File where
83     openForWriting = openFileForWriting