module Proto
( Tree(..)
, Forest(..)
, Proto(..)
, ProtoObj(..)
, Enum(..)
, EnumField(..)
, Message(..)
, MessageField(..)
, FieldQualifier(..)
) where
import Prelude hiding (Enum)
import qualified Data.Text as T
import Tree
type Forest l i = [Tree l i]
type Proto = Forest Enum Message
type ProtoObj = Tree Enum Message
data Enum = Enum T.Text [EnumField] deriving (Show, Eq)
data EnumField = EnumField T.Text Integer deriving (Show, Eq)
data Message = Message T.Text [MessageField] deriving (Show, Eq)
data MessageField = MessageField
{ fieldQualifier :: FieldQualifier
, fieldType :: T.Text
, name :: T.Text
, value :: Integer
} deriving (Show, Eq)
data FieldQualifier = Optional | Required | Repeated deriving (Show, Eq)