]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/scl/G3D/Scenegraph/Node.scl
Added <Proc> side effects
[simantics/3d.git] / org.simantics.g3d / scl / G3D / Scenegraph / Node.scl
1 import "JavaBuiltin" as Java
2
3 importJava "org.simantics.g3d.scenegraph.base.ParentNode" where
4   data ParentNode
5   
6   @JavaName addNode
7   addNode' :: ParentNode -> String -> Node -> <Proc> ()
8   @JavaName removeNode
9   removeNode' :: ParentNode -> String -> Node -> <Proc> Boolean
10   @JavaName deattachNode
11   deattachNode' :: ParentNode -> String -> Node -> <Proc> Boolean
12   
13   @JavaName removeNodes
14   removeNodes' :: ParentNode -> String -> <Proc>()
15   @JavaName getNodes
16   getNodes' :: ParentNode -> String -> <Proc> [Node]
17   @JavaName getNodes
18   getAllNodes' :: ParentNode -> <Proc> [Node]
19   @JavaName remove
20   remove' :: ParentNode -> <Proc> ()
21
22 class ParentNodeClass a where
23   asParentNode :: a -> ParentNode
24   asParentNode = Java.unsafeCoerce
25
26   addNode :: a -> String -> Node -> <Proc> ()
27   addNode c = addNode' (asParentNode c)
28   removeNode :: a -> String -> Node -> <Proc> Boolean
29   removeNode c = removeNode' (asParentNode c)
30   deattachNode :: a -> String -> Node -> <Proc> Boolean
31   deattachNode c = deattachNode' (asParentNode c)
32   removeNodes :: a -> String -> <Proc> ()
33   removeNodes c = removeNodes' (asParentNode c)
34   getNodes :: a -> String -> <Proc> [Node]
35   getNodes c = getNodes' (asParentNode c)
36   remove :: a -> <Proc> ()
37   remove c = remove' (asParentNode c)
38
39 instance NodeClass ParentNode
40 instance ParentNodeClass ParentNode where
41   asParentNode = id
42   
43 importJava "org.simantics.g3d.scenegraph.base.INode" where
44   data Node
45   
46   @JavaName getParent
47   getParent' :: Node -> <Proc> Maybe ParentNode
48   @JavaName getRootNode
49   getRootNode' :: Node -> <Proc> Maybe ParentNode
50   @JavaName deattach
51   deattach' :: Node -> <Proc> ()
52
53 class NodeClass a where
54   asNode :: a -> Node
55   asNode = Java.unsafeCoerce
56
57   getParent :: a -> <Proc> Maybe ParentNode
58   getParent c = getParent' (asNode c)
59   getRootNode :: a -> <Proc> Maybe ParentNode
60   getRootNode c = getRootNode' (asNode c)
61   deattach :: a -> <Proc> ()
62   deattach c = deattach' (asNode c)
63
64 instance NodeClass Node where
65   asNode = id