{-# 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 { Effect -> VariableIndex variable :: VariableIndex , Effect -> Maybe DomainIndex pre :: Maybe DomainIndex , Effect -> DomainIndex post :: DomainIndex } deriving ( Effect -> Effect -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Effect -> Effect -> Bool $c/= :: Effect -> Effect -> Bool == :: Effect -> Effect -> Bool $c== :: Effect -> Effect -> Bool Eq, Eq Effect Effect -> Effect -> Bool Effect -> Effect -> Ordering Effect -> Effect -> Effect forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Effect -> Effect -> Effect $cmin :: Effect -> Effect -> Effect max :: Effect -> Effect -> Effect $cmax :: Effect -> Effect -> Effect >= :: Effect -> Effect -> Bool $c>= :: Effect -> Effect -> Bool > :: Effect -> Effect -> Bool $c> :: Effect -> Effect -> Bool <= :: Effect -> Effect -> Bool $c<= :: Effect -> Effect -> Bool < :: Effect -> Effect -> Bool $c< :: Effect -> Effect -> Bool compare :: Effect -> Effect -> Ordering $ccompare :: Effect -> Effect -> Ordering Ord, Int -> Effect -> ShowS [Effect] -> ShowS Effect -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Effect] -> ShowS $cshowList :: [Effect] -> ShowS show :: Effect -> String $cshow :: Effect -> String showsPrec :: Int -> Effect -> ShowS $cshowsPrec :: Int -> Effect -> ShowS Show ) toSAS :: Effect -> Data.Text.Lazy.Builder.Builder toSAS :: Effect -> Builder toSAS Effect{Maybe DomainIndex DomainIndex VariableIndex post :: DomainIndex pre :: Maybe DomainIndex variable :: VariableIndex post :: Effect -> DomainIndex pre :: Effect -> Maybe DomainIndex variable :: Effect -> VariableIndex ..} = Builder "0" forall a. Semigroup a => a -> a -> a <> Builder " " forall a. Semigroup a => a -> a -> a <> VariableIndex -> Builder VariableIndex.toSAS VariableIndex variable forall a. Semigroup a => a -> a -> a <> Builder " " forall a. Semigroup a => a -> a -> a <> case Maybe DomainIndex pre of Maybe DomainIndex Nothing -> Builder "-1" Just DomainIndex x -> DomainIndex -> Builder DomainIndex.toSAS DomainIndex x forall a. Semigroup a => a -> a -> a <> Builder " " forall a. Semigroup a => a -> a -> a <> DomainIndex -> Builder DomainIndex.toSAS DomainIndex post