summaryrefslogtreecommitdiff
path: root/assignment-13/uFPL/Sim.dcl
diff options
context:
space:
mode:
Diffstat (limited to 'assignment-13/uFPL/Sim.dcl')
-rw-r--r--assignment-13/uFPL/Sim.dcl50
1 files changed, 9 insertions, 41 deletions
diff --git a/assignment-13/uFPL/Sim.dcl b/assignment-13/uFPL/Sim.dcl
index 36e4e73..f30e107 100644
--- a/assignment-13/uFPL/Sim.dcl
+++ b/assignment-13/uFPL/Sim.dcl
@@ -19,45 +19,16 @@ class unlift a b :: b -> a
:: ReadOrWrite = ReadOnly | ReadWrite
-:: ISharedInt =
- { iisname :: String
- , iisinit :: Int
- , iisrw :: ReadOrWrite
- }
-
-:: ISharedUInt =
- { iuisname :: String
- , iuisinit :: Int
- , iuisrw :: ReadOrWrite
- }
-
-:: ISharedLong =
- { ilsname :: String
- , ilsinit :: Int
- , ilsrw :: ReadOrWrite
- }
-
-:: ISharedULong =
- { iulsname :: String
- , iulsinit :: Int
- , iulsrw :: ReadOrWrite
- }
-
-:: ISharedBool =
- { ibsname :: String
- , ibsinit :: Bool
- , ibsrw :: ReadOrWrite
- }
+:: IShared
+ = ISharedInt String Int ReadOrWrite
+ | ISharedUInt String Int ReadOrWrite
+ | ISharedLong String Int ReadOrWrite
+ | ISharedULong String Int ReadOrWrite
+ | ISharedBool String Bool ReadOrWrite
:: ISharedRef :== String
-:: IShares =
- { ishares :: [ISharedInt]
- , uishares :: [ISharedUInt]
- , lshares :: [ISharedLong]
- , ulshares :: [ISharedULong]
- , bshares :: [ISharedBool]
- }
+:: IShares :== [IShared]
:: IExpr
= ILitInt Int
@@ -97,16 +68,13 @@ class unlift a b :: b -> a
, bsvalues :: Map String Bool
}
-derive class iTask Signedness, CType, ReadOrWrite, ISharedInt, ISharedUInt,
- ISharedLong, ISharedULong, ISharedBool, IShares, IExpr, ITrigger, IRule,
- INamedRule, IState
+derive class iTask Signedness, CType, ReadOrWrite, IShared, IExpr, ITrigger,
+ IRule, INamedRule, IState
instance lift [a] | lift a
instance unlift [a] [b] | unlift a b
instance lift IExpr
instance unlift IExpr (Expr t rw) | Expr t
-instance lift ISharedInt
-instance unlift ISharedInt (UShared Int rw)
instance lift ITrigger
instance unlift ITrigger Trigger
instance lift IRule