Merge branch 'master' of git.martlubbers.net:clean-tests
[clean-tests.git] / metaeditor / MetaType.dcl
diff --git a/metaeditor/MetaType.dcl b/metaeditor/MetaType.dcl
new file mode 100644 (file)
index 0000000..7f85458
--- /dev/null
@@ -0,0 +1,42 @@
+definition module MetaType
+
+from StdOverloaded import class toString, class fromString
+from iTasks.UI.Editor import :: Editor
+from iTasks.UI.Definition import :: UIType
+from iTasks.WF.Definition import class iTask
+from iTasks.UI.Editor import :: Editor
+from iTasks.UI.Editor.Generic import generic gEditor
+from iTasks.Internal.Generic.Visualization import generic gText, :: TextFormat
+from iTasks.Internal.Generic.Defaults import generic gDefault
+from iTasks.WF.Definition import :: Task
+from Text.GenJSON import generic JSONEncode, generic JSONDecode, :: JSONNode
+from Data.GenEq import generic gEq
+from Data.Maybe import :: Maybe
+from Data.Either import :: Either
+
+derive class iTask MetaType
+derive gEq MetaInst
+derive gText MetaInst
+derive JSONEncode MetaInst
+derive JSONDecode MetaInst
+derive gEditor MetaInst
+derive gDefault MetaInst
+
+:: MetaType = MInt | MReal | MBool | MChar | MVoid | MPoint MetaType | MThis
+       | MRecord [(String, MetaType)] | MADT [(String, [MetaType])]
+//     | MTup2 (MetaType, MetaType)
+//     | MTup3 (MetaType, MetaType, MetaType)
+//     | MTup4 (MetaType, MetaType, MetaType, MetaType)
+
+:: MetaInst = IInt Int | IReal Real | IBool Bool | IChar Char | IVoid
+       | IPoint String | IRecord [MetaInst] | IADT Int [MetaInst]
+
+typeToInst :: MetaType -> MetaInst
+typeToEditor :: MetaType -> Editor MetaInst
+
+enterValueOfType :: MetaType -> Task MetaInst
+
+parse :: MetaType [Char] -> Either String (MetaInst, [Char])
+
+instance toString MetaType
+instance fromString MetaType