{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.Operator ( Operator(..), toSAS ) where import Data.Sequence ( Seq ) import qualified Data.Sequence as Seq import qualified Data.Text.Lazy import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.Builder.Int import FastDownward.SAS.Effect ( Effect ) import qualified FastDownward.SAS.Effect as Effect import FastDownward.SAS.VariableAssignment ( VariableAssignment ) import qualified FastDownward.SAS.VariableAssignment as VariableAssignment data Operator = Operator { Operator -> Text name :: Data.Text.Lazy.Text , Operator -> Seq VariableAssignment prevail :: Seq VariableAssignment , Operator -> Seq Effect effects :: Seq Effect } deriving ( Int -> Operator -> ShowS [Operator] -> ShowS Operator -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Operator] -> ShowS $cshowList :: [Operator] -> ShowS show :: Operator -> String $cshow :: Operator -> String showsPrec :: Int -> Operator -> ShowS $cshowsPrec :: Int -> Operator -> ShowS Show ) toSAS :: Operator -> Data.Text.Lazy.Builder.Builder toSAS :: Operator -> Builder toSAS Operator{Seq VariableAssignment Seq Effect Text effects :: Seq Effect prevail :: Seq VariableAssignment name :: Text effects :: Operator -> Seq Effect prevail :: Operator -> Seq VariableAssignment name :: Operator -> Text ..} = Builder "begin_operator\n" forall a. Semigroup a => a -> a -> a <> Text -> Builder Data.Text.Lazy.Builder.fromLazyText Text name forall a. Semigroup a => a -> a -> a <> Builder "\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 prevail ) 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 prevail forall a. Semigroup a => a -> a -> a <> forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( forall (t :: * -> *) a. Foldable t => t a -> Int length Seq Effect effects ) 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 ( \Effect x -> Effect -> Builder Effect.toSAS Effect x forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq Effect effects forall a. Semigroup a => a -> a -> a <> Builder "0\n" forall a. Semigroup a => a -> a -> a <> Builder "end_operator"