{-# LANGUAGE InstanceSigs #-} --{-# LANGUAGE DeriveFunctor #-} --{-# LANGUAGE GeneralizedNewtypeDeriving #-} 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)