protobuf-simple-0.1.0.0: src/Parser/FileDesc.hs
-- |
-- Module: Parser.FileDesc
-- Copyright: (c) 2015-2016 Martijn Rijkeboer <mrr@sru-systems.com>
-- License: MIT
-- Maintainer: Martijn Rijkeboer <mrr@sru-systems.com>
--
-- File Descriptor type and functions.
module Parser.FileDesc
( FileDesc
, new
, getName
, getPackage
, setPackage
, addMessageDesc
, addMessageDescs
, getMessageDescs
, addEnumDesc
, addEnumDescs
, getEnumDescs
) where
import Prelude (Maybe(..), (.))
import Data.Foldable (toList)
import Data.Sequence ((|>), (><))
import qualified Data.Sequence
import qualified Data.Sequence as Seq
import qualified Parser.EnumDesc as Parser
import qualified Parser.MessageDesc as Parser
import qualified Prelude
data FileDesc = FileDesc
{ name :: Prelude.String
, package :: Prelude.Maybe Prelude.String
, messageDescs :: Data.Sequence.Seq Parser.MessageDesc
, enumDescs :: Data.Sequence.Seq Parser.EnumDesc
} deriving (Prelude.Show, Prelude.Eq)
type FileName = Prelude.String
type Package = Prelude.String
new :: FileName -> FileDesc
new fn = FileDesc fn Nothing Seq.empty Seq.empty
getName :: FileDesc -> FileName
getName = name
getPackage :: FileDesc -> Maybe Package
getPackage = package
setPackage :: Package -> FileDesc -> FileDesc
setPackage val self = self{package = Just val}
addMessageDesc :: Parser.MessageDesc -> FileDesc -> FileDesc
addMessageDesc val self = self{messageDescs = messageDescs self |> val}
addMessageDescs :: [Parser.MessageDesc] -> FileDesc -> FileDesc
addMessageDescs vs self = self{messageDescs = messageDescs self >< Seq.fromList vs}
getMessageDescs :: FileDesc -> [Parser.MessageDesc]
getMessageDescs = toList . messageDescs
addEnumDesc :: Parser.EnumDesc -> FileDesc -> FileDesc
addEnumDesc val self = self{enumDescs = enumDescs self |> val}
addEnumDescs :: [Parser.EnumDesc] -> FileDesc -> FileDesc
addEnumDescs vs self = self{enumDescs = enumDescs self >< Seq.fromList vs}
getEnumDescs :: FileDesc -> [Parser.EnumDesc]
getEnumDescs = toList . enumDescs