module Copilot.Compile.SBV.Common
( mkTmpStVar
, mkUpdateStFn
, mkQueueVar
, mkQueuePtrVar
, mkExtTmpVar
, mkObserverFn
, mkTriggerGuardFn
, mkTriggerArgFn
, mkTriggerArgIdx
) where
import Copilot.Core (Id)
import Prelude hiding (id)
mkVar :: String -> Id -> String
mkVar str id = str ++ show id
mkTmpStVar :: Id -> String
mkTmpStVar = mkVar "tmp_"
mkUpdateStFn :: Id -> String
mkUpdateStFn = mkVar "update_state_"
mkQueueVar :: Id -> String
mkQueueVar = mkVar "queue_"
mkQueuePtrVar :: Id -> String
mkQueuePtrVar = mkVar "ptr_"
mkExtTmpVar :: String -> String
mkExtTmpVar = ("ext_" ++)
mkObserverFn :: String -> String
mkObserverFn = ("observer_" ++)
mkTriggerGuardFn :: String -> String
mkTriggerGuardFn = ("trigger_guard_" ++)
mkTriggerArgFn :: Int -> String -> String
mkTriggerArgFn i nm = "trigger_" ++ nm ++ "_arg_" ++ show i
mkTriggerArgIdx :: [a] -> [(Int, a)]
mkTriggerArgIdx args = zip [0,1 ..] args