{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.Effect ( Effect(..), toSAS ) where import qualified Data.Text.Lazy.Builder import FastDownward.SAS.DomainIndex ( DomainIndex ) import qualified FastDownward.SAS.DomainIndex as DomainIndex import FastDownward.SAS.VariableIndex ( VariableIndex ) import qualified FastDownward.SAS.VariableIndex as VariableIndex data Effect = Effect { variable :: VariableIndex , pre :: Maybe DomainIndex , post :: DomainIndex } deriving ( Eq, Ord, Show ) toSAS :: Effect -> Data.Text.Lazy.Builder.Builder toSAS Effect{..} = "0" <> " " <> VariableIndex.toSAS variable <> " " <> case pre of Nothing -> "-1" Just x -> DomainIndex.toSAS x <> " " <> DomainIndex.toSAS post