serdoc-core-0.1.0.0: Generated documentation of serialization formats
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.SerDoc.Info

Synopsis

Documentation annotation types

newtype Description Source #

Used to add descriptions via ANN pragmas. This is necessary because Template Haskell cannot find Haddock comments attached to constructors inside associated types, but it can find annotations on those same constructors.

Constructors

Description 

Instances

Instances details
Data Description Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Description -> c Description #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Description #

toConstr :: Description -> Constr #

dataTypeOf :: Description -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Description) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Description) #

gmapT :: (forall b. Data b => b -> b) -> Description -> Description #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Description -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Description -> r #

gmapQ :: (forall d. Data d => d -> u) -> Description -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Description -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Description -> m Description #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Description -> m Description #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Description -> m Description #

Monoid Description Source # 
Instance details

Defined in Data.SerDoc.Info

Semigroup Description Source # 
Instance details

Defined in Data.SerDoc.Info

Read Description Source # 
Instance details

Defined in Data.SerDoc.Info

Show Description Source # 
Instance details

Defined in Data.SerDoc.Info

Eq Description Source # 
Instance details

Defined in Data.SerDoc.Info

Lift Description Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

lift :: Quote m => Description -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Description -> Code m Description #

FieldInfo and related types

data FieldInfo codec Source #

Describes the serialization format of a field.

Constructors

AnnField !String !(FieldInfo codec)

Adds an annotation to a field.

BasicField !BasicFieldInfo

A simple field, with a named type and a size.

EnumField !EnumFieldInfo

An enum field, which reports labels and values for the possible values.

CompoundField !(CompoundFieldInfo codec)

A field that is composed out of multiple sub-fields, encoded sequentially.

ChoiceField !(ChoiceFieldInfo codec)

A list of alternatives, to be picked based on a given choice condition.

ListField !(ListFieldInfo codec)

A list of values, encoded sequentially. The length must be encoded separately, and can be referenced from a length expression.

AliasField !(AliasFieldInfo codec)

Adds an alternative name (alias) to a field type.

SumField !(SumFieldInfo codec)

A list of named alternatives. TODO: this is probably redundant and may not actually work.

Instances

Instances details
Show (FieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

showsPrec :: Int -> FieldInfo codec -> ShowS #

show :: FieldInfo codec -> String #

showList :: [FieldInfo codec] -> ShowS #

Eq (FieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: FieldInfo codec -> FieldInfo codec -> Bool #

(/=) :: FieldInfo codec -> FieldInfo codec -> Bool #

data EnumFieldInfo Source #

Instances

Instances details
Show EnumFieldInfo Source # 
Instance details

Defined in Data.SerDoc.Info

Eq EnumFieldInfo Source # 
Instance details

Defined in Data.SerDoc.Info

data AliasFieldInfo codec Source #

Constructors

AliasFieldInfo 

Instances

Instances details
Show (AliasFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

showsPrec :: Int -> AliasFieldInfo codec -> ShowS #

show :: AliasFieldInfo codec -> String #

showList :: [AliasFieldInfo codec] -> ShowS #

Eq (AliasFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: AliasFieldInfo codec -> AliasFieldInfo codec -> Bool #

(/=) :: AliasFieldInfo codec -> AliasFieldInfo codec -> Bool #

data CompoundFieldInfo codec Source #

Instances

Instances details
Show (CompoundFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Eq (CompoundFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

data SumFieldInfo codec Source #

Constructors

SumFieldInfo 

Instances

Instances details
Show (SumFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

showsPrec :: Int -> SumFieldInfo codec -> ShowS #

show :: SumFieldInfo codec -> String #

showList :: [SumFieldInfo codec] -> ShowS #

Eq (SumFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: SumFieldInfo codec -> SumFieldInfo codec -> Bool #

(/=) :: SumFieldInfo codec -> SumFieldInfo codec -> Bool #

data ListFieldInfo codec Source #

Constructors

ListFieldInfo 

Fields

Instances

Instances details
Show (ListFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

showsPrec :: Int -> ListFieldInfo codec -> ShowS #

show :: ListFieldInfo codec -> String #

showList :: [ListFieldInfo codec] -> ShowS #

Eq (ListFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: ListFieldInfo codec -> ListFieldInfo codec -> Bool #

(/=) :: ListFieldInfo codec -> ListFieldInfo codec -> Bool #

data SubfieldInfo codec Source #

Constructors

SubfieldInfo 

Fields

Instances

Instances details
Show (SubfieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

showsPrec :: Int -> SubfieldInfo codec -> ShowS #

show :: SubfieldInfo codec -> String #

showList :: [SubfieldInfo codec] -> ShowS #

Eq (SubfieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: SubfieldInfo codec -> SubfieldInfo codec -> Bool #

(/=) :: SubfieldInfo codec -> SubfieldInfo codec -> Bool #

data ChoiceFieldInfo codec Source #

Instances

Instances details
Show (ChoiceFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Eq (ChoiceFieldInfo codec) Source # 
Instance details

Defined in Data.SerDoc.Info

Methods

(==) :: ChoiceFieldInfo codec -> ChoiceFieldInfo codec -> Bool #

(/=) :: ChoiceFieldInfo codec -> ChoiceFieldInfo codec -> Bool #

annField :: String -> FieldInfo codec -> FieldInfo codec Source #

sumField :: String -> [(String, FieldInfo codec)] -> FieldInfo codec Source #

Field sizes

data FieldSize Source #

Constructors

FixedSize !Int

Exactly this size

EnumSize

The default enum size for the codec

VarSize !String

Size given by a named variable from the context

BinopSize !FieldSizeBinop !FieldSize !FieldSize

Binary operation

RangeSize !FieldSize !FieldSize

Min/max range

UnknownSize

Size is entirely unknown

Instances

Instances details
Show FieldSize Source # 
Instance details

Defined in Data.SerDoc.Info

Eq FieldSize Source # 
Instance details

Defined in Data.SerDoc.Info

data FieldSizeBinop Source #

Constructors

FSPlus 
FSMul 
FSMax 
FSMin 

Instances

Instances details
Show FieldSizeBinop Source # 
Instance details

Defined in Data.SerDoc.Info

Eq FieldSizeBinop Source # 
Instance details

Defined in Data.SerDoc.Info