{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.MutexGroup ( MutexGroup(..), toSAS ) where import Data.Sequence ( Seq ) import qualified Data.Sequence as Seq import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.Builder.Int import FastDownward.SAS.VariableAssignment ( VariableAssignment ) import qualified FastDownward.SAS.VariableAssignment as VariableAssignment newtype MutexGroup = MutexGroup { MutexGroup -> Seq VariableAssignment assignments :: Seq VariableAssignment } deriving ( Int -> MutexGroup -> ShowS [MutexGroup] -> ShowS MutexGroup -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MutexGroup] -> ShowS $cshowList :: [MutexGroup] -> ShowS show :: MutexGroup -> String $cshow :: MutexGroup -> String showsPrec :: Int -> MutexGroup -> ShowS $cshowsPrec :: Int -> MutexGroup -> ShowS Show ) toSAS :: MutexGroup -> Data.Text.Lazy.Builder.Builder toSAS :: MutexGroup -> Builder toSAS MutexGroup{Seq VariableAssignment assignments :: Seq VariableAssignment assignments :: MutexGroup -> Seq VariableAssignment ..} = Builder "begin_mutex_group\n" forall a. Semigroup a => a -> a -> a <> forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( forall a. Seq a -> Int Seq.length Seq VariableAssignment assignments ) forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ( \VariableAssignment x -> VariableAssignment -> Builder VariableAssignment.toSAS VariableAssignment x forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq VariableAssignment assignments forall a. Semigroup a => a -> a -> a <> Builder "end_mutex_group"