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