{-# 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 (Int -> Operator -> ShowS) -> (Operator -> String) -> ([Operator] -> ShowS) -> Show Operator 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" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Text -> Builder Data.Text.Lazy.Builder.fromLazyText Text name Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Builder forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( Seq VariableAssignment -> Int forall a. Seq a -> Int Seq.length Seq VariableAssignment prevail ) Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> (VariableAssignment -> Builder) -> Seq VariableAssignment -> Builder forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ( \VariableAssignment x -> VariableAssignment -> Builder VariableAssignment.toSAS VariableAssignment x Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq VariableAssignment prevail Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Builder forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( Seq Effect -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length Seq Effect effects ) Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> (Effect -> Builder) -> Seq Effect -> Builder forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ( \Effect x -> Effect -> Builder Effect.toSAS Effect x Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq Effect effects Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "0\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "end_operator"