module Hoogle.TextBase.Type where import Hoogle.TypeSig.All import Data.Binary.Defer import General.Code -- (the item, any haddock documentation) type TextBase = [(TextItem,String)] data TextItem = ItemModule [String] | ItemClass TypeSig | ItemFunc String TypeSig | ItemAlias TypeSig TypeSig | ItemData DataKeyword TypeSig | ItemInstance TypeSig | ItemAttribute String String deriving (Show,Eq) data DataKeyword = NewTypeKeyword | DataKeyword deriving (Enum,Eq) instance Show DataKeyword where show NewTypeKeyword = "newtype" show DataKeyword = "data" instance BinaryDefer TextItem where put (ItemModule a ) = putByte 0 >> put1 a put (ItemClass a ) = putByte 1 >> put1 a put (ItemFunc a b) = putByte 2 >> put2 a b put (ItemAlias a b) = putByte 3 >> put2 a b put (ItemData a b) = putByte 4 >> put2 a b put (ItemInstance a ) = putByte 5 >> put1 a put (ItemAttribute a b) = putByte 6 >> put2 a b get = do x <- getByte case x of 0 -> get1 ItemModule 1 -> get1 ItemClass 2 -> get2 ItemFunc 3 -> get2 ItemAlias 4 -> get2 ItemData 5 -> get1 ItemInstance 6 -> get2 ItemAttribute instance BinaryDefer DataKeyword where put = putEnumByte get = getEnumByte