Merge branch 'master' of git.martlubbers.net:clean-tests
[clean-tests.git] / metaeditor / MetaType.dcl
1 definition module MetaType
2
3 from StdOverloaded import class toString, class fromString
4 from iTasks.UI.Editor import :: Editor
5 from iTasks.UI.Definition import :: UIType
6 from iTasks.WF.Definition import class iTask
7 from iTasks.UI.Editor import :: Editor
8 from iTasks.UI.Editor.Generic import generic gEditor
9 from iTasks.Internal.Generic.Visualization import generic gText, :: TextFormat
10 from iTasks.Internal.Generic.Defaults import generic gDefault
11 from iTasks.WF.Definition import :: Task
12 from Text.GenJSON import generic JSONEncode, generic JSONDecode, :: JSONNode
13 from Data.GenEq import generic gEq
14 from Data.Maybe import :: Maybe
15 from Data.Either import :: Either
16
17 derive class iTask MetaType
18 derive gEq MetaInst
19 derive gText MetaInst
20 derive JSONEncode MetaInst
21 derive JSONDecode MetaInst
22 derive gEditor MetaInst
23 derive gDefault MetaInst
24
25 :: MetaType = MInt | MReal | MBool | MChar | MVoid | MPoint MetaType | MThis
26 | MRecord [(String, MetaType)] | MADT [(String, [MetaType])]
27 // | MTup2 (MetaType, MetaType)
28 // | MTup3 (MetaType, MetaType, MetaType)
29 // | MTup4 (MetaType, MetaType, MetaType, MetaType)
30
31 :: MetaInst = IInt Int | IReal Real | IBool Bool | IChar Char | IVoid
32 | IPoint String | IRecord [MetaInst] | IADT Int [MetaInst]
33
34 typeToInst :: MetaType -> MetaInst
35 typeToEditor :: MetaType -> Editor MetaInst
36
37 enterValueOfType :: MetaType -> Task MetaInst
38
39 parse :: MetaType [Char] -> Either String (MetaInst, [Char])
40
41 instance toString MetaType
42 instance fromString MetaType