{-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  ToySolver.FileFormat
-- Copyright   :  (c) Masahiro Sakai 2018
-- License     :  BSD-style
--
-- Maintainer  :  masahiro.sakai@gmail.com
-- Stability   :  provisional
-- Portability :  portable
--
-----------------------------------------------------------------------------
module ToySolver.FileFormat
  ( module ToySolver.FileFormat.Base
  ) where

import qualified Data.PseudoBoolean as PBFile
import qualified Data.PseudoBoolean.Attoparsec as PBFileAttoparsec
import qualified Data.PseudoBoolean.ByteStringBuilder as PBFileBB
import ToySolver.FileFormat.Base
import ToySolver.FileFormat.CNF () -- importing instances
import ToySolver.QUBO () -- importing instances

instance FileFormat PBFile.Formula where
  parse :: ByteString -> Either String Formula
parse = ByteString -> Either String Formula
PBFileAttoparsec.parseOPBByteString
  render :: Formula -> Builder
render = Formula -> Builder
PBFileBB.opbBuilder

instance FileFormat PBFile.SoftFormula where
  parse :: ByteString -> Either String SoftFormula
parse = ByteString -> Either String SoftFormula
PBFileAttoparsec.parseWBOByteString
  render :: SoftFormula -> Builder
render = SoftFormula -> Builder
PBFileBB.wboBuilder