{-# language OverloadedStrings #-}
{-# language RecordWildCards #-}

module FastDownward.SAS.State ( State(..), toSAS ) where

import Data.Sequence ( Seq )
import qualified Data.Text.Lazy.Builder
import FastDownward.SAS.DomainIndex ( DomainIndex )
import qualified FastDownward.SAS.DomainIndex as DomainIndex


newtype State =
  State { initialValues :: Seq DomainIndex }
  deriving
    ( Show )


toSAS :: State -> Data.Text.Lazy.Builder.Builder
toSAS State{..} =
     "begin_state\n"
  <> foldMap ( \x -> DomainIndex.toSAS x <> "\n" ) initialValues
  <> "end_state"