diff options
Diffstat (limited to 'CleanC.dcl')
-rw-r--r-- | CleanC.dcl | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/CleanC.dcl b/CleanC.dcl new file mode 100644 index 0000000..1a83056 --- /dev/null +++ b/CleanC.dcl @@ -0,0 +1,60 @@ +definition module CleanC + +from StdClass import class toInt, class toString, class toReal, + class fromInt, class fromString, class fromReal + +:: State + +:: CType = Int | String | Real +:: CParam = CI Int | CS String | CR Real + +cNewState :: *State + +instance toInt CParam +instance toString CParam +instance toReal CParam + +class fromCParam a :: CParam -> a +instance fromCParam Int +instance fromCParam String +instance fromCParam Real + +instance fromInt CParam +instance fromString CParam +instance fromReal CParam + +class toCParam a :: a -> CParam +instance toCParam Int +instance toCParam String +instance toCParam Real + +class toCParamList a :: a -> [CParam] +instance toCParamList [CParam] +instance toCParamList Int +instance toCParamList String +instance toCParamList Real +instance toCParamList (a,b) | toCParam a & toCParam b +instance toCParamList (a,b,c) | toCParam a & toCParam b & toCParam c +instance toCParamList (a,b,c,d) | toCParam a & toCParam b & toCParam c & toCParam d +instance toCParamList (a,b,c,d,e) | toCParam a & toCParam b & toCParam c & toCParam d & toCParam e +instance toCParamList (a,b,c,d,e,f) | toCParam a & toCParam b & toCParam c & toCParam d & toCParam e & toCParam f +instance toCParamList (a,b,c,d,e,f,g) | toCParam a & toCParam b & toCParam c & toCParam d & toCParam e & toCParam f & toCParam g + +cInit :: !*State -> *State + +cPuti :: !Int !*State -> *State +cPuts :: !String !*State -> *State +cPutr :: !Real !*State -> *State + +cPutParam :: !CParam -> *State -> *State + +cSetReturnType :: !CType -> *State -> *State + +cCall_ :: !String !*State -> *State + +cGeti :: !*State -> (!Int, !*State) +cGets :: !*State -> (!String, !*State) +cGetr :: !*State -> (!Real, !*State) + +cCall :: !CType !String !a !*State -> (!CParam, !*State) | toCParamList a + |