]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/scl/SCL/Reflection.scl
Removed a clash between two nameOf functions
[simantics/platform.git] / bundles / org.simantics.scl.compiler / scl / SCL / Reflection.scl
1 module {
2     export = [possibleUnsafeSclValueByName, unsafeSclValueByName, sclModuleNames, moduleByName,
3               moduleOfName, nameOfName, createName, valueNamesOf]
4 }
5
6 include "SCL/ReflectionJava"
7
8 importJava "org.simantics.scl.compiler.module.repository.ModuleRepository" where
9     @JavaName getValue
10     unsafeSclValueByName_ :: ModuleRepository -> String -> <Proc> a
11     
12     @JavaName getSourceRepository
13     moduleSourceRepositoryOf :: ModuleRepository -> ModuleSourceRepository
14     
15     @JavaName getModule
16     moduleByName_ :: ModuleRepository -> String -> <Proc> Failable Module 
17     
18 importJava "org.simantics.scl.compiler.source.repository.ModuleSourceRepository" where
19     data ModuleSourceRepository
20     
21     @JavaName getModuleNames
22     sclModuleNames_ :: ModuleSourceRepository -> [String]
23
24 importJava "org.simantics.scl.compiler.errors.Failable" where
25     data Failable a
26     
27     didSucceed :: Failable a -> Boolean
28     getResult :: Failable a -> Maybe a 
29
30 importJava "org.simantics.scl.compiler.module.Module" where
31     data Module
32     
33     @JavaName getValueNames
34     valueNamesOf_ :: Module -> [String]    
35     
36 importJava "org.simantics.scl.compiler.common.names.Name" where
37     data Name
38     
39     @JavaName module
40     moduleOfName_ :: Name -> String
41     @JavaName name
42     nameOfName_ :: Name -> String
43     
44     @JavaName create
45     createName_ :: String -> String -> Name
46
47 instance Show Name where
48     sb <+ n = sb << moduleOfName n << "/" << nameOfName n
49     
50 moduleOfName = moduleOfName_
51 nameOfName = nameOfName_
52 createName = createName_
53 valueNamesOf = valueNamesOf_      
54     
55 type Location = Long
56     
57 unsafeSclValueByName :: String -> <Proc> a
58 unsafeSclValueByName = unsafeSclValueByName_ MODULE_REPOSITORY
59
60 possibleUnsafeSclValueByName :: String -> <Proc> Maybe a
61 possibleUnsafeSclValueByName name = Just (unsafeSclValueByName name) `catch` \(_ :: Exception) -> Nothing
62
63 sclModuleNames :: <Proc> [String]
64 sclModuleNames = sclModuleNames_ (moduleSourceRepositoryOf MODULE_REPOSITORY)
65
66 moduleByName :: String -> <Proc> Maybe Module
67 moduleByName name = getResult failable
68   where
69     failable = moduleByName_ MODULE_REPOSITORY name