protobuf-0.2.1.1: Google Protocol Buffers via GHC.Generics

Safe HaskellNone
LanguageHaskell2010

Data.ProtocolBuffers.Internal

Synopsis

Documentation

type Tag = Word32 #

Field identifiers

data WireField #

A representation of the wire format as described in https://developers.google.com/protocol-buffers/docs/encoding#structure

Constructors

VarintField !Tag !Word64

For: int32, int64, uint32, uint64, sint32, sint64, bool, enum

Fixed64Field !Tag !Word64

For: fixed64, sfixed64, double

DelimitedField !Tag !ByteString

For: string, bytes, embedded messages, packed repeated fields

StartField !Tag

For: groups (deprecated)

EndField !Tag

For: groups (deprecated)

Fixed32Field !Tag !Word32

For: fixed32, sfixed32, float

class EncodeWire a where #

Minimal complete definition

encodeWire

Methods

encodeWire :: Tag -> a -> Put #

Instances

EncodeWire Bool # 

Methods

encodeWire :: Tag -> Bool -> Put #

EncodeWire Double # 

Methods

encodeWire :: Tag -> Double -> Put #

EncodeWire Float # 

Methods

encodeWire :: Tag -> Float -> Put #

EncodeWire Int32 # 

Methods

encodeWire :: Tag -> Int32 -> Put #

EncodeWire Int64 # 

Methods

encodeWire :: Tag -> Int64 -> Put #

EncodeWire Word32 # 

Methods

encodeWire :: Tag -> Word32 -> Put #

EncodeWire Word64 # 

Methods

encodeWire :: Tag -> Word64 -> Put #

EncodeWire String # 

Methods

encodeWire :: Tag -> String -> Put #

EncodeWire ByteString # 

Methods

encodeWire :: Tag -> ByteString -> Put #

EncodeWire Text # 

Methods

encodeWire :: Tag -> Text -> Put #

EncodeWire WireField # 

Methods

encodeWire :: Tag -> WireField -> Put #

EncodeWire a => EncodeWire [Value a] # 

Methods

encodeWire :: Tag -> [Value a] -> Put #

EncodeWire a => EncodeWire (Maybe (Value a)) # 

Methods

encodeWire :: Tag -> Maybe (Value a) -> Put #

(Foldable f, Enum a) => EncodeWire (f (Enumeration a)) # 

Methods

encodeWire :: Tag -> f (Enumeration a) -> Put #

(Foldable f, Encode m) => EncodeWire (f (Message m)) # 

Methods

encodeWire :: Tag -> f (Message m) -> Put #

EncodeWire a => EncodeWire (Last (Value a)) # 

Methods

encodeWire :: Tag -> Last (Value a) -> Put #

EncodeWire (Fixed Int32) # 

Methods

encodeWire :: Tag -> Fixed Int32 -> Put #

EncodeWire (Fixed Int64) # 

Methods

encodeWire :: Tag -> Fixed Int64 -> Put #

EncodeWire (Fixed Word32) # 

Methods

encodeWire :: Tag -> Fixed Word32 -> Put #

EncodeWire (Fixed Word64) # 

Methods

encodeWire :: Tag -> Fixed Word64 -> Put #

EncodeWire (Signed Int32) # 

Methods

encodeWire :: Tag -> Signed Int32 -> Put #

EncodeWire (Signed Int64) # 

Methods

encodeWire :: Tag -> Signed Int64 -> Put #

Enum a => EncodeWire (PackedList (Enumeration a)) # 
EncodeWire (PackedList (Value Bool)) # 

Methods

encodeWire :: Tag -> PackedList (Value Bool) -> Put #

EncodeWire (PackedList (Value Double)) # 
EncodeWire (PackedList (Value Float)) # 
EncodeWire (PackedList (Value Int32)) # 
EncodeWire (PackedList (Value Int64)) # 
EncodeWire (PackedList (Value Word32)) # 
EncodeWire (PackedList (Value Word64)) # 
EncodeWire (PackedList (Value (Fixed Int32))) # 
EncodeWire (PackedList (Value (Fixed Int64))) # 
EncodeWire (PackedList (Value (Fixed Word32))) # 
EncodeWire (PackedList (Value (Fixed Word64))) # 
EncodeWire (PackedList (Value (Signed Int32))) # 
EncodeWire (PackedList (Value (Signed Int64))) # 
EncodeWire a => EncodeWire (Always (Value a)) # 

Methods

encodeWire :: Tag -> Always (Value a) -> Put #

EncodeWire a => EncodeWire (Value a) # 

Methods

encodeWire :: Tag -> Value a -> Put #

class DecodeWire a where #

Minimal complete definition

decodeWire

Methods

decodeWire :: WireField -> Get a #

Instances

DecodeWire Bool # 
DecodeWire Double # 
DecodeWire Float # 
DecodeWire Int32 # 
DecodeWire Int64 # 
DecodeWire Word32 # 
DecodeWire Word64 # 
DecodeWire String # 
DecodeWire ByteString # 
DecodeWire Text # 
DecodeWire WireField # 
Enum a => DecodeWire (Maybe (Enumeration a)) # 
DecodeWire a => DecodeWire (Maybe (Value a)) # 

Methods

decodeWire :: WireField -> Get (Maybe (Value a)) #

DecodeWire a => DecodeWire (Last (Value a)) # 

Methods

decodeWire :: WireField -> Get (Last (Value a)) #

DecodeWire (Fixed Int32) # 
DecodeWire (Fixed Int64) # 
DecodeWire (Fixed Word32) # 
DecodeWire (Fixed Word64) # 
DecodeWire (Signed Int32) # 
DecodeWire (Signed Int64) # 
Enum a => DecodeWire (PackedList (Enumeration a)) # 
DecodeWire (PackedList (Value Bool)) # 
DecodeWire (PackedList (Value Double)) # 
DecodeWire (PackedList (Value Float)) # 
DecodeWire (PackedList (Value Int32)) # 
DecodeWire (PackedList (Value Int64)) # 
DecodeWire (PackedList (Value Word32)) # 
DecodeWire (PackedList (Value Word64)) # 
DecodeWire (PackedList (Value (Fixed Int32))) # 
DecodeWire (PackedList (Value (Fixed Int64))) # 
DecodeWire (PackedList (Value (Fixed Word32))) # 
DecodeWire (PackedList (Value (Fixed Word64))) # 
DecodeWire (PackedList (Value (Signed Int32))) # 
DecodeWire (PackedList (Value (Signed Int64))) # 
Enum a => DecodeWire (Enumeration a) # 
Enum a => DecodeWire (Always (Enumeration a)) # 
DecodeWire a => DecodeWire (Always (Value a)) # 

Methods

decodeWire :: WireField -> Get (Always (Value a)) #

DecodeWire a => DecodeWire (Value a) # 

Methods

decodeWire :: WireField -> Get (Value a) #

Decode m => DecodeWire (Message m) # 

Methods

decodeWire :: WireField -> Get (Message m) #

getVarInt :: (Integral a, Bits a) => Get a #

putVarSInt :: (Integral a, Bits a) => a -> Put #

This can be used on any Integral type and is needed for signed types; unsigned can use putVarUInt below. This has been changed to handle only up to 64 bit integral values (to match documentation).

putVarUInt :: (Integral a, Bits a) => a -> Put #

This should be used on unsigned Integral types only (not checked)

newtype Field n a #

Fields are merely a way to hold a field tag along with its type, this shouldn't normally be referenced directly.

This provides better error messages than older versions which used Tagged

Constructors

Field 

Fields

Instances

Functor (Field n) # 

Methods

fmap :: (a -> b) -> Field n a -> Field n b #

(<$) :: a -> Field n b -> Field n a #

Foldable (Field n) # 

Methods

fold :: Monoid m => Field n m -> m #

foldMap :: Monoid m => (a -> m) -> Field n a -> m #

foldr :: (a -> b -> b) -> b -> Field n a -> b #

foldr' :: (a -> b -> b) -> b -> Field n a -> b #

foldl :: (b -> a -> b) -> b -> Field n a -> b #

foldl' :: (b -> a -> b) -> b -> Field n a -> b #

foldr1 :: (a -> a -> a) -> Field n a -> a #

foldl1 :: (a -> a -> a) -> Field n a -> a #

toList :: Field n a -> [a] #

null :: Field n a -> Bool #

length :: Field n a -> Int #

elem :: Eq a => a -> Field n a -> Bool #

maximum :: Ord a => Field n a -> a #

minimum :: Ord a => Field n a -> a #

sum :: Num a => Field n a -> a #

product :: Num a => Field n a -> a #

Traversable (Field n) # 

Methods

traverse :: Applicative f => (a -> f b) -> Field n a -> f (Field n b) #

sequenceA :: Applicative f => Field n (f a) -> f (Field n a) #

mapM :: Monad m => (a -> m b) -> Field n a -> m (Field n b) #

sequence :: Monad m => Field n (m a) -> m (Field n a) #

Bounded a => Bounded (Field n a) # 

Methods

minBound :: Field n a #

maxBound :: Field n a #

Enum a => Enum (Field n a) # 

Methods

succ :: Field n a -> Field n a #

pred :: Field n a -> Field n a #

toEnum :: Int -> Field n a #

fromEnum :: Field n a -> Int #

enumFrom :: Field n a -> [Field n a] #

enumFromThen :: Field n a -> Field n a -> [Field n a] #

enumFromTo :: Field n a -> Field n a -> [Field n a] #

enumFromThenTo :: Field n a -> Field n a -> Field n a -> [Field n a] #

Eq a => Eq (Field n a) # 

Methods

(==) :: Field n a -> Field n a -> Bool #

(/=) :: Field n a -> Field n a -> Bool #

Ord a => Ord (Field n a) # 

Methods

compare :: Field n a -> Field n a -> Ordering #

(<) :: Field n a -> Field n a -> Bool #

(<=) :: Field n a -> Field n a -> Bool #

(>) :: Field n a -> Field n a -> Bool #

(>=) :: Field n a -> Field n a -> Bool #

max :: Field n a -> Field n a -> Field n a #

min :: Field n a -> Field n a -> Field n a #

Show a => Show (Field n a) # 

Methods

showsPrec :: Int -> Field n a -> ShowS #

show :: Field n a -> String #

showList :: [Field n a] -> ShowS #

Monoid a => Monoid (Field n a) # 

Methods

mempty :: Field n a #

mappend :: Field n a -> Field n a -> Field n a #

mconcat :: [Field n a] -> Field n a #

NFData a => NFData (Field n a) # 

Methods

rnf :: Field n a -> () #

HasField (Field n (PackedField (PackedList (Enumeration a)))) #

Iso: FieldType (Packed n (Enumeration a)) = [a]

HasField (Field n (PackedField (PackedList (Value a)))) #

Iso: FieldType (Packed n (Value a)) = [a]

HasField (Field n (RepeatedField [Enumeration a])) #

Iso: FieldType (Repeated n (Enumeration a)) = [a]

HasField (Field n (RepeatedField [Value a])) #

Iso: FieldType (Repeated n (Value a)) = [a]

Associated Types

type FieldType (Field n (RepeatedField [Value a])) :: * #

HasField (Field n (OptionalField (Last (Enumeration a)))) #

Iso: FieldType (Optional n (Enumeration a)) = Maybe a

HasField (Field n (OptionalField (Last (Value a)))) #

Iso: FieldType (Optional n (Value a)) = Maybe a

Associated Types

type FieldType (Field n (OptionalField (Last (Value a)))) :: * #

HasField (Field n (RequiredField (Always (Enumeration a)))) #

Iso: FieldType (Required n (Enumeration a)) = a

HasField (Field n (RequiredField (Always (Value a)))) #

Iso: FieldType (Required n (Value a)) = a

HasField (Field n (RepeatedField [Message a])) #

Iso: FieldType (Repeated n (Message a)) = [a]

HasField (Field n (OptionalField (Maybe (Message a)))) #

Iso: FieldType (Optional n (Message a)) = Maybe a

HasField (Field n (RequiredField (Always (Message a)))) #

Iso: FieldType (Required n (Message a)) = a

(EncodeWire a, KnownNat n, Foldable f) => GEncode (K1 i (Field n (f a))) # 

Methods

gencode :: K1 i (Field n (f a)) a -> Put

(DecodeWire (PackedList a), KnownNat n) => GDecode (K1 i (Packed n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Packed n a) a)

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Value a)))) a)

(DecodeWire a, KnownNat n) => GDecode (K1 i (Repeated n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Repeated n a) a)

(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a))))) # 
(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a))))) # 
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Value a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Maybe (Message a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Message a)))) a)

type FieldType (Field n (PackedField (PackedList (Enumeration a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) = [a]
type FieldType (Field n (RepeatedField [Enumeration a])) # 
type FieldType (Field n (RepeatedField [Value a])) # 
type FieldType (Field n (RepeatedField [Value a])) = [a]
type FieldType (Field n (OptionalField (Last (Enumeration a)))) # 
type FieldType (Field n (OptionalField (Last (Value a)))) # 
type FieldType (Field n (RequiredField (Always (Enumeration a)))) # 
type FieldType (Field n (RequiredField (Always (Value a)))) # 
type FieldType (Field n (RepeatedField [Message a])) # 
type FieldType (Field n (RepeatedField [Message a])) = [a]
type FieldType (Field n (OptionalField (Maybe (Message a)))) # 
type FieldType (Field n (RequiredField (Always (Message a)))) # 

newtype Value a #

Value selects the normal/typical way for encoding scalar (primitive) values.

Constructors

Value 

Fields

Instances

Functor Value # 

Methods

fmap :: (a -> b) -> Value a -> Value b #

(<$) :: a -> Value b -> Value a #

Foldable Value # 

Methods

fold :: Monoid m => Value m -> m #

foldMap :: Monoid m => (a -> m) -> Value a -> m #

foldr :: (a -> b -> b) -> b -> Value a -> b #

foldr' :: (a -> b -> b) -> b -> Value a -> b #

foldl :: (b -> a -> b) -> b -> Value a -> b #

foldl' :: (b -> a -> b) -> b -> Value a -> b #

foldr1 :: (a -> a -> a) -> Value a -> a #

foldl1 :: (a -> a -> a) -> Value a -> a #

toList :: Value a -> [a] #

null :: Value a -> Bool #

length :: Value a -> Int #

elem :: Eq a => a -> Value a -> Bool #

maximum :: Ord a => Value a -> a #

minimum :: Ord a => Value a -> a #

sum :: Num a => Value a -> a #

product :: Num a => Value a -> a #

Traversable Value # 

Methods

traverse :: Applicative f => (a -> f b) -> Value a -> f (Value b) #

sequenceA :: Applicative f => Value (f a) -> f (Value a) #

mapM :: Monad m => (a -> m b) -> Value a -> m (Value b) #

sequence :: Monad m => Value (m a) -> m (Value a) #

Bounded a => Bounded (Value a) # 

Methods

minBound :: Value a #

maxBound :: Value a #

Enum a => Enum (Value a) # 

Methods

succ :: Value a -> Value a #

pred :: Value a -> Value a #

toEnum :: Int -> Value a #

fromEnum :: Value a -> Int #

enumFrom :: Value a -> [Value a] #

enumFromThen :: Value a -> Value a -> [Value a] #

enumFromTo :: Value a -> Value a -> [Value a] #

enumFromThenTo :: Value a -> Value a -> Value a -> [Value a] #

Eq a => Eq (Value a) # 

Methods

(==) :: Value a -> Value a -> Bool #

(/=) :: Value a -> Value a -> Bool #

Ord a => Ord (Value a) # 

Methods

compare :: Value a -> Value a -> Ordering #

(<) :: Value a -> Value a -> Bool #

(<=) :: Value a -> Value a -> Bool #

(>) :: Value a -> Value a -> Bool #

(>=) :: Value a -> Value a -> Bool #

max :: Value a -> Value a -> Value a #

min :: Value a -> Value a -> Value a #

Show a => Show (Value a) # 

Methods

showsPrec :: Int -> Value a -> ShowS #

show :: Value a -> String #

showList :: [Value a] -> ShowS #

Monoid a => Monoid (Value a) # 

Methods

mempty :: Value a #

mappend :: Value a -> Value a -> Value a #

mconcat :: [Value a] -> Value a #

NFData a => NFData (Value a) # 

Methods

rnf :: Value a -> () #

DecodeWire a => DecodeWire (Maybe (Value a)) # 

Methods

decodeWire :: WireField -> Get (Maybe (Value a)) #

DecodeWire a => DecodeWire (Last (Value a)) # 

Methods

decodeWire :: WireField -> Get (Last (Value a)) #

DecodeWire (PackedList (Value Bool)) # 
DecodeWire (PackedList (Value Double)) # 
DecodeWire (PackedList (Value Float)) # 
DecodeWire (PackedList (Value Int32)) # 
DecodeWire (PackedList (Value Int64)) # 
DecodeWire (PackedList (Value Word32)) # 
DecodeWire (PackedList (Value Word64)) # 
DecodeWire (PackedList (Value (Fixed Int32))) # 
DecodeWire (PackedList (Value (Fixed Int64))) # 
DecodeWire (PackedList (Value (Fixed Word32))) # 
DecodeWire (PackedList (Value (Fixed Word64))) # 
DecodeWire (PackedList (Value (Signed Int32))) # 
DecodeWire (PackedList (Value (Signed Int64))) # 
DecodeWire a => DecodeWire (Always (Value a)) # 

Methods

decodeWire :: WireField -> Get (Always (Value a)) #

DecodeWire a => DecodeWire (Value a) # 

Methods

decodeWire :: WireField -> Get (Value a) #

EncodeWire a => EncodeWire [Value a] # 

Methods

encodeWire :: Tag -> [Value a] -> Put #

EncodeWire a => EncodeWire (Maybe (Value a)) # 

Methods

encodeWire :: Tag -> Maybe (Value a) -> Put #

EncodeWire a => EncodeWire (Last (Value a)) # 

Methods

encodeWire :: Tag -> Last (Value a) -> Put #

EncodeWire (PackedList (Value Bool)) # 

Methods

encodeWire :: Tag -> PackedList (Value Bool) -> Put #

EncodeWire (PackedList (Value Double)) # 
EncodeWire (PackedList (Value Float)) # 
EncodeWire (PackedList (Value Int32)) # 
EncodeWire (PackedList (Value Int64)) # 
EncodeWire (PackedList (Value Word32)) # 
EncodeWire (PackedList (Value Word64)) # 
EncodeWire (PackedList (Value (Fixed Int32))) # 
EncodeWire (PackedList (Value (Fixed Int64))) # 
EncodeWire (PackedList (Value (Fixed Word32))) # 
EncodeWire (PackedList (Value (Fixed Word64))) # 
EncodeWire (PackedList (Value (Signed Int32))) # 
EncodeWire (PackedList (Value (Signed Int64))) # 
EncodeWire a => EncodeWire (Always (Value a)) # 

Methods

encodeWire :: Tag -> Always (Value a) -> Put #

EncodeWire a => EncodeWire (Value a) # 

Methods

encodeWire :: Tag -> Value a -> Put #

HasField (Field n (PackedField (PackedList (Value a)))) #

Iso: FieldType (Packed n (Value a)) = [a]

HasField (Field n (RepeatedField [Value a])) #

Iso: FieldType (Repeated n (Value a)) = [a]

Associated Types

type FieldType (Field n (RepeatedField [Value a])) :: * #

HasField (Field n (OptionalField (Last (Value a)))) #

Iso: FieldType (Optional n (Value a)) = Maybe a

Associated Types

type FieldType (Field n (OptionalField (Last (Value a)))) :: * #

HasField (Field n (RequiredField (Always (Value a)))) #

Iso: FieldType (Required n (Value a)) = a

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Value a)))) a)

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Value a)))) a)

type Required n (Value a) # 
type Required n (Value a) = Field n (RequiredField (Always (Value a)))
type Optional n (Value a) # 
type Optional n (Value a) = Field n (OptionalField (Last (Value a)))
type FieldType (Field n (PackedField (PackedList (Value a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) = [a]
type FieldType (Field n (RepeatedField [Value a])) # 
type FieldType (Field n (RepeatedField [Value a])) = [a]
type FieldType (Field n (OptionalField (Last (Value a)))) # 
type FieldType (Field n (RequiredField (Always (Value a)))) # 

newtype Always a #

To provide consistent instances for serialization a Traversable Functor is needed to make Required fields have the same shape as Optional, Repeated and Packed.

This is the Identity Functor with a Show instance.

Constructors

Always 

Fields

Instances

Functor Always # 

Methods

fmap :: (a -> b) -> Always a -> Always b #

(<$) :: a -> Always b -> Always a #

Foldable Always # 

Methods

fold :: Monoid m => Always m -> m #

foldMap :: Monoid m => (a -> m) -> Always a -> m #

foldr :: (a -> b -> b) -> b -> Always a -> b #

foldr' :: (a -> b -> b) -> b -> Always a -> b #

foldl :: (b -> a -> b) -> b -> Always a -> b #

foldl' :: (b -> a -> b) -> b -> Always a -> b #

foldr1 :: (a -> a -> a) -> Always a -> a #

foldl1 :: (a -> a -> a) -> Always a -> a #

toList :: Always a -> [a] #

null :: Always a -> Bool #

length :: Always a -> Int #

elem :: Eq a => a -> Always a -> Bool #

maximum :: Ord a => Always a -> a #

minimum :: Ord a => Always a -> a #

sum :: Num a => Always a -> a #

product :: Num a => Always a -> a #

Traversable Always # 

Methods

traverse :: Applicative f => (a -> f b) -> Always a -> f (Always b) #

sequenceA :: Applicative f => Always (f a) -> f (Always a) #

mapM :: Monad m => (a -> m b) -> Always a -> m (Always b) #

sequence :: Monad m => Always (m a) -> m (Always a) #

Bounded a => Bounded (Always a) # 

Methods

minBound :: Always a #

maxBound :: Always a #

Enum a => Enum (Always a) # 

Methods

succ :: Always a -> Always a #

pred :: Always a -> Always a #

toEnum :: Int -> Always a #

fromEnum :: Always a -> Int #

enumFrom :: Always a -> [Always a] #

enumFromThen :: Always a -> Always a -> [Always a] #

enumFromTo :: Always a -> Always a -> [Always a] #

enumFromThenTo :: Always a -> Always a -> Always a -> [Always a] #

Eq a => Eq (Always a) # 

Methods

(==) :: Always a -> Always a -> Bool #

(/=) :: Always a -> Always a -> Bool #

Ord a => Ord (Always a) # 

Methods

compare :: Always a -> Always a -> Ordering #

(<) :: Always a -> Always a -> Bool #

(<=) :: Always a -> Always a -> Bool #

(>) :: Always a -> Always a -> Bool #

(>=) :: Always a -> Always a -> Bool #

max :: Always a -> Always a -> Always a #

min :: Always a -> Always a -> Always a #

Show a => Show (Always a) # 

Methods

showsPrec :: Int -> Always a -> ShowS #

show :: Always a -> String #

showList :: [Always a] -> ShowS #

Monoid (Always a) # 

Methods

mempty :: Always a #

mappend :: Always a -> Always a -> Always a #

mconcat :: [Always a] -> Always a #

NFData a => NFData (Always a) # 

Methods

rnf :: Always a -> () #

Enum a => DecodeWire (Always (Enumeration a)) # 
DecodeWire a => DecodeWire (Always (Value a)) # 

Methods

decodeWire :: WireField -> Get (Always (Value a)) #

EncodeWire a => EncodeWire (Always (Value a)) # 

Methods

encodeWire :: Tag -> Always (Value a) -> Put #

HasField (Field n (RequiredField (Always (Enumeration a)))) #

Iso: FieldType (Required n (Enumeration a)) = a

HasField (Field n (RequiredField (Always (Value a)))) #

Iso: FieldType (Required n (Value a)) = a

HasField (Field n (RequiredField (Always (Message a)))) #

Iso: FieldType (Required n (Message a)) = a

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Value a)))) a)

(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a))))) # 
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Message a)))) a)

type FieldType (Field n (RequiredField (Always (Enumeration a)))) # 
type FieldType (Field n (RequiredField (Always (Value a)))) # 
type FieldType (Field n (RequiredField (Always (Message a)))) # 

newtype Enumeration a #

Enumeration fields use fromEnum and toEnum when encoding and decoding messages.

Constructors

Enumeration 

Fields

Instances

Functor Enumeration # 

Methods

fmap :: (a -> b) -> Enumeration a -> Enumeration b #

(<$) :: a -> Enumeration b -> Enumeration a #

Foldable Enumeration # 

Methods

fold :: Monoid m => Enumeration m -> m #

foldMap :: Monoid m => (a -> m) -> Enumeration a -> m #

foldr :: (a -> b -> b) -> b -> Enumeration a -> b #

foldr' :: (a -> b -> b) -> b -> Enumeration a -> b #

foldl :: (b -> a -> b) -> b -> Enumeration a -> b #

foldl' :: (b -> a -> b) -> b -> Enumeration a -> b #

foldr1 :: (a -> a -> a) -> Enumeration a -> a #

foldl1 :: (a -> a -> a) -> Enumeration a -> a #

toList :: Enumeration a -> [a] #

null :: Enumeration a -> Bool #

length :: Enumeration a -> Int #

elem :: Eq a => a -> Enumeration a -> Bool #

maximum :: Ord a => Enumeration a -> a #

minimum :: Ord a => Enumeration a -> a #

sum :: Num a => Enumeration a -> a #

product :: Num a => Enumeration a -> a #

Traversable Enumeration # 

Methods

traverse :: Applicative f => (a -> f b) -> Enumeration a -> f (Enumeration b) #

sequenceA :: Applicative f => Enumeration (f a) -> f (Enumeration a) #

mapM :: Monad m => (a -> m b) -> Enumeration a -> m (Enumeration b) #

sequence :: Monad m => Enumeration (m a) -> m (Enumeration a) #

Bounded a => Bounded (Enumeration a) # 
Enum a => Enum (Enumeration a) # 
Eq a => Eq (Enumeration a) # 
Ord a => Ord (Enumeration a) # 
Show a => Show (Enumeration a) # 
Monoid a => Monoid (Enumeration a) # 
NFData a => NFData (Enumeration a) # 

Methods

rnf :: Enumeration a -> () #

Enum a => DecodeWire (Maybe (Enumeration a)) # 
Enum a => DecodeWire (PackedList (Enumeration a)) # 
Enum a => DecodeWire (Enumeration a) # 
Enum a => DecodeWire (Always (Enumeration a)) # 
(Foldable f, Enum a) => EncodeWire (f (Enumeration a)) # 

Methods

encodeWire :: Tag -> f (Enumeration a) -> Put #

Enum a => EncodeWire (PackedList (Enumeration a)) # 
HasField (Field n (PackedField (PackedList (Enumeration a)))) #

Iso: FieldType (Packed n (Enumeration a)) = [a]

HasField (Field n (RepeatedField [Enumeration a])) #

Iso: FieldType (Repeated n (Enumeration a)) = [a]

HasField (Field n (OptionalField (Last (Enumeration a)))) #

Iso: FieldType (Optional n (Enumeration a)) = Maybe a

HasField (Field n (RequiredField (Always (Enumeration a)))) #

Iso: FieldType (Required n (Enumeration a)) = a

(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a))))) # 
(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a))))) # 
type Required n (Enumeration a) # 
type Optional n (Enumeration a) # 
type FieldType (Field n (PackedField (PackedList (Enumeration a)))) # 
type FieldType (Field n (RepeatedField [Enumeration a])) # 
type FieldType (Field n (OptionalField (Last (Enumeration a)))) # 
type FieldType (Field n (RequiredField (Always (Enumeration a)))) # 

newtype RequiredField a #

RequiredField is a newtype wrapped used to break overlapping instances for encoding and decoding values

Constructors

Required 

Fields

Instances

Functor RequiredField # 

Methods

fmap :: (a -> b) -> RequiredField a -> RequiredField b #

(<$) :: a -> RequiredField b -> RequiredField a #

Foldable RequiredField # 

Methods

fold :: Monoid m => RequiredField m -> m #

foldMap :: Monoid m => (a -> m) -> RequiredField a -> m #

foldr :: (a -> b -> b) -> b -> RequiredField a -> b #

foldr' :: (a -> b -> b) -> b -> RequiredField a -> b #

foldl :: (b -> a -> b) -> b -> RequiredField a -> b #

foldl' :: (b -> a -> b) -> b -> RequiredField a -> b #

foldr1 :: (a -> a -> a) -> RequiredField a -> a #

foldl1 :: (a -> a -> a) -> RequiredField a -> a #

toList :: RequiredField a -> [a] #

null :: RequiredField a -> Bool #

length :: RequiredField a -> Int #

elem :: Eq a => a -> RequiredField a -> Bool #

maximum :: Ord a => RequiredField a -> a #

minimum :: Ord a => RequiredField a -> a #

sum :: Num a => RequiredField a -> a #

product :: Num a => RequiredField a -> a #

Traversable RequiredField # 

Methods

traverse :: Applicative f => (a -> f b) -> RequiredField a -> f (RequiredField b) #

sequenceA :: Applicative f => RequiredField (f a) -> f (RequiredField a) #

mapM :: Monad m => (a -> m b) -> RequiredField a -> m (RequiredField b) #

sequence :: Monad m => RequiredField (m a) -> m (RequiredField a) #

Bounded a => Bounded (RequiredField a) # 
Enum a => Enum (RequiredField a) # 
Eq a => Eq (RequiredField a) # 
Ord a => Ord (RequiredField a) # 
Show a => Show (RequiredField a) # 
Monoid a => Monoid (RequiredField a) # 
NFData a => NFData (RequiredField a) # 

Methods

rnf :: RequiredField a -> () #

HasField (Field n (RequiredField (Always (Enumeration a)))) #

Iso: FieldType (Required n (Enumeration a)) = a

HasField (Field n (RequiredField (Always (Value a)))) #

Iso: FieldType (Required n (Value a)) = a

HasField (Field n (RequiredField (Always (Message a)))) #

Iso: FieldType (Required n (Message a)) = a

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Value a)))) a)

(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a))))) # 
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Message a)))) a)

type FieldType (Field n (RequiredField (Always (Enumeration a)))) # 
type FieldType (Field n (RequiredField (Always (Value a)))) # 
type FieldType (Field n (RequiredField (Always (Message a)))) # 

newtype OptionalField a #

OptionalField is a newtype wrapped used to break overlapping instances for encoding and decoding values

Constructors

Optional 

Fields

Instances

Functor OptionalField # 

Methods

fmap :: (a -> b) -> OptionalField a -> OptionalField b #

(<$) :: a -> OptionalField b -> OptionalField a #

Foldable OptionalField # 

Methods

fold :: Monoid m => OptionalField m -> m #

foldMap :: Monoid m => (a -> m) -> OptionalField a -> m #

foldr :: (a -> b -> b) -> b -> OptionalField a -> b #

foldr' :: (a -> b -> b) -> b -> OptionalField a -> b #

foldl :: (b -> a -> b) -> b -> OptionalField a -> b #

foldl' :: (b -> a -> b) -> b -> OptionalField a -> b #

foldr1 :: (a -> a -> a) -> OptionalField a -> a #

foldl1 :: (a -> a -> a) -> OptionalField a -> a #

toList :: OptionalField a -> [a] #

null :: OptionalField a -> Bool #

length :: OptionalField a -> Int #

elem :: Eq a => a -> OptionalField a -> Bool #

maximum :: Ord a => OptionalField a -> a #

minimum :: Ord a => OptionalField a -> a #

sum :: Num a => OptionalField a -> a #

product :: Num a => OptionalField a -> a #

Traversable OptionalField # 

Methods

traverse :: Applicative f => (a -> f b) -> OptionalField a -> f (OptionalField b) #

sequenceA :: Applicative f => OptionalField (f a) -> f (OptionalField a) #

mapM :: Monad m => (a -> m b) -> OptionalField a -> m (OptionalField b) #

sequence :: Monad m => OptionalField (m a) -> m (OptionalField a) #

Bounded a => Bounded (OptionalField a) # 
Enum a => Enum (OptionalField a) # 
Eq a => Eq (OptionalField a) # 
Ord a => Ord (OptionalField a) # 
Show a => Show (OptionalField a) # 
Monoid a => Monoid (OptionalField a) # 
NFData a => NFData (OptionalField a) # 

Methods

rnf :: OptionalField a -> () #

HasField (Field n (OptionalField (Last (Enumeration a)))) #

Iso: FieldType (Optional n (Enumeration a)) = Maybe a

HasField (Field n (OptionalField (Last (Value a)))) #

Iso: FieldType (Optional n (Value a)) = Maybe a

Associated Types

type FieldType (Field n (OptionalField (Last (Value a)))) :: * #

HasField (Field n (OptionalField (Maybe (Message a)))) #

Iso: FieldType (Optional n (Message a)) = Maybe a

(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a))))) # 
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Value a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Maybe (Message a)))) a)

type FieldType (Field n (OptionalField (Last (Enumeration a)))) # 
type FieldType (Field n (OptionalField (Last (Value a)))) # 
type FieldType (Field n (OptionalField (Maybe (Message a)))) # 

newtype RepeatedField a #

RepeatedField is a newtype wrapped used to break overlapping instances for encoding and decoding values

Constructors

Repeated 

Fields

Instances

Functor RepeatedField # 

Methods

fmap :: (a -> b) -> RepeatedField a -> RepeatedField b #

(<$) :: a -> RepeatedField b -> RepeatedField a #

Foldable RepeatedField # 

Methods

fold :: Monoid m => RepeatedField m -> m #

foldMap :: Monoid m => (a -> m) -> RepeatedField a -> m #

foldr :: (a -> b -> b) -> b -> RepeatedField a -> b #

foldr' :: (a -> b -> b) -> b -> RepeatedField a -> b #

foldl :: (b -> a -> b) -> b -> RepeatedField a -> b #

foldl' :: (b -> a -> b) -> b -> RepeatedField a -> b #

foldr1 :: (a -> a -> a) -> RepeatedField a -> a #

foldl1 :: (a -> a -> a) -> RepeatedField a -> a #

toList :: RepeatedField a -> [a] #

null :: RepeatedField a -> Bool #

length :: RepeatedField a -> Int #

elem :: Eq a => a -> RepeatedField a -> Bool #

maximum :: Ord a => RepeatedField a -> a #

minimum :: Ord a => RepeatedField a -> a #

sum :: Num a => RepeatedField a -> a #

product :: Num a => RepeatedField a -> a #

Traversable RepeatedField # 

Methods

traverse :: Applicative f => (a -> f b) -> RepeatedField a -> f (RepeatedField b) #

sequenceA :: Applicative f => RepeatedField (f a) -> f (RepeatedField a) #

mapM :: Monad m => (a -> m b) -> RepeatedField a -> m (RepeatedField b) #

sequence :: Monad m => RepeatedField (m a) -> m (RepeatedField a) #

Bounded a => Bounded (RepeatedField a) # 
Enum a => Enum (RepeatedField a) # 
Eq a => Eq (RepeatedField a) # 
Ord a => Ord (RepeatedField a) # 
Show a => Show (RepeatedField a) # 
Monoid a => Monoid (RepeatedField a) # 
NFData a => NFData (RepeatedField a) # 

Methods

rnf :: RepeatedField a -> () #

HasField (Field n (RepeatedField [Enumeration a])) #

Iso: FieldType (Repeated n (Enumeration a)) = [a]

HasField (Field n (RepeatedField [Value a])) #

Iso: FieldType (Repeated n (Value a)) = [a]

Associated Types

type FieldType (Field n (RepeatedField [Value a])) :: * #

HasField (Field n (RepeatedField [Message a])) #

Iso: FieldType (Repeated n (Message a)) = [a]

(DecodeWire a, KnownNat n) => GDecode (K1 i (Repeated n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Repeated n a) a)

type FieldType (Field n (RepeatedField [Enumeration a])) # 
type FieldType (Field n (RepeatedField [Value a])) # 
type FieldType (Field n (RepeatedField [Value a])) = [a]
type FieldType (Field n (RepeatedField [Message a])) # 
type FieldType (Field n (RepeatedField [Message a])) = [a]

newtype PackedField a #

A Traversable Functor used to select packed sequence encoding/decoding.

Constructors

PackedField 

Fields

Instances

Functor PackedField # 

Methods

fmap :: (a -> b) -> PackedField a -> PackedField b #

(<$) :: a -> PackedField b -> PackedField a #

Foldable PackedField # 

Methods

fold :: Monoid m => PackedField m -> m #

foldMap :: Monoid m => (a -> m) -> PackedField a -> m #

foldr :: (a -> b -> b) -> b -> PackedField a -> b #

foldr' :: (a -> b -> b) -> b -> PackedField a -> b #

foldl :: (b -> a -> b) -> b -> PackedField a -> b #

foldl' :: (b -> a -> b) -> b -> PackedField a -> b #

foldr1 :: (a -> a -> a) -> PackedField a -> a #

foldl1 :: (a -> a -> a) -> PackedField a -> a #

toList :: PackedField a -> [a] #

null :: PackedField a -> Bool #

length :: PackedField a -> Int #

elem :: Eq a => a -> PackedField a -> Bool #

maximum :: Ord a => PackedField a -> a #

minimum :: Ord a => PackedField a -> a #

sum :: Num a => PackedField a -> a #

product :: Num a => PackedField a -> a #

Traversable PackedField # 

Methods

traverse :: Applicative f => (a -> f b) -> PackedField a -> f (PackedField b) #

sequenceA :: Applicative f => PackedField (f a) -> f (PackedField a) #

mapM :: Monad m => (a -> m b) -> PackedField a -> m (PackedField b) #

sequence :: Monad m => PackedField (m a) -> m (PackedField a) #

Eq a => Eq (PackedField a) # 
Ord a => Ord (PackedField a) # 
Show a => Show (PackedField a) # 
Monoid a => Monoid (PackedField a) # 
NFData a => NFData (PackedField a) # 

Methods

rnf :: PackedField a -> () #

HasField (Field n (PackedField (PackedList (Enumeration a)))) #

Iso: FieldType (Packed n (Enumeration a)) = [a]

HasField (Field n (PackedField (PackedList (Value a)))) #

Iso: FieldType (Packed n (Value a)) = [a]

(DecodeWire (PackedList a), KnownNat n) => GDecode (K1 i (Packed n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Packed n a) a)

type FieldType (Field n (PackedField (PackedList (Enumeration a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) = [a]

newtype PackedList a #

A list that is stored in a packed format.

Constructors

PackedList 

Fields

Instances

Functor PackedList # 

Methods

fmap :: (a -> b) -> PackedList a -> PackedList b #

(<$) :: a -> PackedList b -> PackedList a #

Foldable PackedList # 

Methods

fold :: Monoid m => PackedList m -> m #

foldMap :: Monoid m => (a -> m) -> PackedList a -> m #

foldr :: (a -> b -> b) -> b -> PackedList a -> b #

foldr' :: (a -> b -> b) -> b -> PackedList a -> b #

foldl :: (b -> a -> b) -> b -> PackedList a -> b #

foldl' :: (b -> a -> b) -> b -> PackedList a -> b #

foldr1 :: (a -> a -> a) -> PackedList a -> a #

foldl1 :: (a -> a -> a) -> PackedList a -> a #

toList :: PackedList a -> [a] #

null :: PackedList a -> Bool #

length :: PackedList a -> Int #

elem :: Eq a => a -> PackedList a -> Bool #

maximum :: Ord a => PackedList a -> a #

minimum :: Ord a => PackedList a -> a #

sum :: Num a => PackedList a -> a #

product :: Num a => PackedList a -> a #

Traversable PackedList # 

Methods

traverse :: Applicative f => (a -> f b) -> PackedList a -> f (PackedList b) #

sequenceA :: Applicative f => PackedList (f a) -> f (PackedList a) #

mapM :: Monad m => (a -> m b) -> PackedList a -> m (PackedList b) #

sequence :: Monad m => PackedList (m a) -> m (PackedList a) #

Eq a => Eq (PackedList a) # 

Methods

(==) :: PackedList a -> PackedList a -> Bool #

(/=) :: PackedList a -> PackedList a -> Bool #

Ord a => Ord (PackedList a) # 
Show a => Show (PackedList a) # 
Monoid (PackedList a) # 
NFData a => NFData (PackedList a) # 

Methods

rnf :: PackedList a -> () #

Enum a => DecodeWire (PackedList (Enumeration a)) # 
DecodeWire (PackedList (Value Bool)) # 
DecodeWire (PackedList (Value Double)) # 
DecodeWire (PackedList (Value Float)) # 
DecodeWire (PackedList (Value Int32)) # 
DecodeWire (PackedList (Value Int64)) # 
DecodeWire (PackedList (Value Word32)) # 
DecodeWire (PackedList (Value Word64)) # 
DecodeWire (PackedList (Value (Fixed Int32))) # 
DecodeWire (PackedList (Value (Fixed Int64))) # 
DecodeWire (PackedList (Value (Fixed Word32))) # 
DecodeWire (PackedList (Value (Fixed Word64))) # 
DecodeWire (PackedList (Value (Signed Int32))) # 
DecodeWire (PackedList (Value (Signed Int64))) # 
Enum a => EncodeWire (PackedList (Enumeration a)) # 
EncodeWire (PackedList (Value Bool)) # 

Methods

encodeWire :: Tag -> PackedList (Value Bool) -> Put #

EncodeWire (PackedList (Value Double)) # 
EncodeWire (PackedList (Value Float)) # 
EncodeWire (PackedList (Value Int32)) # 
EncodeWire (PackedList (Value Int64)) # 
EncodeWire (PackedList (Value Word32)) # 
EncodeWire (PackedList (Value Word64)) # 
EncodeWire (PackedList (Value (Fixed Int32))) # 
EncodeWire (PackedList (Value (Fixed Int64))) # 
EncodeWire (PackedList (Value (Fixed Word32))) # 
EncodeWire (PackedList (Value (Fixed Word64))) # 
EncodeWire (PackedList (Value (Signed Int32))) # 
EncodeWire (PackedList (Value (Signed Int64))) # 
HasField (Field n (PackedField (PackedList (Enumeration a)))) #

Iso: FieldType (Packed n (Enumeration a)) = [a]

HasField (Field n (PackedField (PackedList (Value a)))) #

Iso: FieldType (Packed n (Value a)) = [a]

(DecodeWire (PackedList a), KnownNat n) => GDecode (K1 i (Packed n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Packed n a) a)

type FieldType (Field n (PackedField (PackedList (Enumeration a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) # 
type FieldType (Field n (PackedField (PackedList (Value a)))) = [a]

newtype Message m #

The way to embed a message within another message. These embedded messages are stored as length-delimited fields.

For example:

data Inner = Inner
   { innerField :: Required '1' (Value Int64)
   } deriving (Generic, Show)

 instance Encode Inner
instance Decode Inner

 data Outer = Outer
   { outerField :: Required '1' (Message Inner)
   } deriving (Generic, Show)

 instance Encode Outer
instance Decode Outer
 

It's worth noting that Message a is a Monoid and NFData instance. The Monoid behavior models that of the Protocol Buffers documentation, effectively Last. It's done with a fairly big hammer and it isn't possible to override this behavior. This can cause some less-obvious compile errors for paramterized Message types:

data Inner = Inner{inner :: Required '2' (Value Float)} deriving (Generic, Show)
instance Encode Inner
instance Decode Inner

data Outer a = Outer{outer :: Required '3' (Message a)} deriving (Generic, Show)
instance Encode a => Encode (Outer a)
instance Decode a => Decode (Outer a)
 

This fails because Decode needs to know that the message can be merged. The resulting error implies that you may want to add a constraint to the internal GMessageMonoid class:

/tmp/tst.hs:18:10:
  Could not deduce (protobuf-0.1:GMessageMonoid (Rep a))
    arising from a use of `protobuf-0.1: Decode .$gdmdecode'
  from the context (Decode a)
    bound by the instance declaration at /tmp/tst.hs:18:10-39
  Possible fix:
    add an instance declaration for
    (protobuf-0.1:GMessageMonoid (Rep a))
  In the expression:
    (protobuf-0.1:Decode.$gdmdecode)
  In an equation for decode:
      decode = (protobuf-0.1:Decode .$gdmdecode)
  In the instance declaration for `Decode (Outer a)'

The correct fix is to add the Monoid constraint for the message:

- instance (Encode a) => Decode (Outer a)
+ instance (Monoid (Message a), Decode a) => Decode (Outer a)

Constructors

Message 

Fields

Instances

Functor Message # 

Methods

fmap :: (a -> b) -> Message a -> Message b #

(<$) :: a -> Message b -> Message a #

Foldable Message # 

Methods

fold :: Monoid m => Message m -> m #

foldMap :: Monoid m => (a -> m) -> Message a -> m #

foldr :: (a -> b -> b) -> b -> Message a -> b #

foldr' :: (a -> b -> b) -> b -> Message a -> b #

foldl :: (b -> a -> b) -> b -> Message a -> b #

foldl' :: (b -> a -> b) -> b -> Message a -> b #

foldr1 :: (a -> a -> a) -> Message a -> a #

foldl1 :: (a -> a -> a) -> Message a -> a #

toList :: Message a -> [a] #

null :: Message a -> Bool #

length :: Message a -> Int #

elem :: Eq a => a -> Message a -> Bool #

maximum :: Ord a => Message a -> a #

minimum :: Ord a => Message a -> a #

sum :: Num a => Message a -> a #

product :: Num a => Message a -> a #

Traversable Message # 

Methods

traverse :: Applicative f => (a -> f b) -> Message a -> f (Message b) #

sequenceA :: Applicative f => Message (f a) -> f (Message a) #

mapM :: Monad m => (a -> m b) -> Message a -> m (Message b) #

sequence :: Monad m => Message (m a) -> m (Message a) #

Eq m => Eq (Message m) # 

Methods

(==) :: Message m -> Message m -> Bool #

(/=) :: Message m -> Message m -> Bool #

Ord m => Ord (Message m) # 

Methods

compare :: Message m -> Message m -> Ordering #

(<) :: Message m -> Message m -> Bool #

(<=) :: Message m -> Message m -> Bool #

(>) :: Message m -> Message m -> Bool #

(>=) :: Message m -> Message m -> Bool #

max :: Message m -> Message m -> Message m #

min :: Message m -> Message m -> Message m #

Show m => Show (Message m) # 

Methods

showsPrec :: Int -> Message m -> ShowS #

show :: Message m -> String #

showList :: [Message m] -> ShowS #

(Generic m, GMessageMonoid (Rep m)) => Monoid (Message m) # 

Methods

mempty :: Message m #

mappend :: Message m -> Message m -> Message m #

mconcat :: [Message m] -> Message m #

(Generic m, GMessageNFData (Rep m)) => NFData (Message m) # 

Methods

rnf :: Message m -> () #

Decode m => DecodeWire (Message m) # 

Methods

decodeWire :: WireField -> Get (Message m) #

(Foldable f, Encode m) => EncodeWire (f (Message m)) # 

Methods

encodeWire :: Tag -> f (Message m) -> Put #

HasField (Field n (RepeatedField [Message a])) #

Iso: FieldType (Repeated n (Message a)) = [a]

HasField (Field n (OptionalField (Maybe (Message a)))) #

Iso: FieldType (Optional n (Message a)) = Maybe a

HasField (Field n (RequiredField (Always (Message a)))) #

Iso: FieldType (Required n (Message a)) = a

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Maybe (Message a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Message a)))) a)

type Required n (Message a) # 
type Optional n (Message a) # 
type FieldType (Field n (RepeatedField [Message a])) # 
type FieldType (Field n (RepeatedField [Message a])) = [a]
type FieldType (Field n (OptionalField (Maybe (Message a)))) # 
type FieldType (Field n (RequiredField (Always (Message a)))) # 

class GDecode f #

Minimal complete definition

gdecode

Instances

GDecode U1 # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (U1 a)

(DecodeWire (PackedList a), KnownNat n) => GDecode (K1 i (Packed n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Packed n a) a)

(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Value a)))) a)

(DecodeWire a, KnownNat n) => GDecode (K1 i (Repeated n a)) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Repeated n a) a)

(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a))))) # 
(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a))))) # 
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Value a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Maybe (Message a)))) a)

(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a))))) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Message a)))) a)

(GDecode x, GDecode y) => GDecode ((:+:) x y) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get ((x :+: y) a)

(GDecode a, GDecode b) => GDecode ((:*:) a b) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get ((a :*: b) a)

GDecode a => GDecode (M1 i c a) # 

Methods

gdecode :: HashMap Tag [WireField] -> Get (M1 i c a a)

class GEncode f #

Minimal complete definition

gencode

Instances

GEncode U1 # 

Methods

gencode :: U1 a -> Put

(EncodeWire a, KnownNat n, Foldable f) => GEncode (K1 i (Field n (f a))) # 

Methods

gencode :: K1 i (Field n (f a)) a -> Put

(GEncode a, GEncode b) => GEncode ((:+:) a b) # 

Methods

gencode :: (a :+: b) a -> Put

(GEncode a, GEncode b) => GEncode ((:*:) a b) # 

Methods

gencode :: (a :*: b) a -> Put

GEncode a => GEncode (M1 i c a) # 

Methods

gencode :: M1 i c a a -> Put

class GMessageMonoid f #

Minimal complete definition

gmempty, gmappend

Instances

GMessageMonoid U1 # 

Methods

gmempty :: U1 a

gmappend :: U1 a -> U1 a -> U1 a

Monoid c => GMessageMonoid (K1 i c) # 

Methods

gmempty :: K1 i c a

gmappend :: K1 i c a -> K1 i c a -> K1 i c a

(GMessageMonoid x, GMessageMonoid y) => GMessageMonoid ((:+:) x y) # 

Methods

gmempty :: (x :+: y) a

gmappend :: (x :+: y) a -> (x :+: y) a -> (x :+: y) a

(GMessageMonoid x, GMessageMonoid y) => GMessageMonoid ((:*:) x y) # 

Methods

gmempty :: (x :*: y) a

gmappend :: (x :*: y) a -> (x :*: y) a -> (x :*: y) a

GMessageMonoid f => GMessageMonoid (M1 i c f) # 

Methods

gmempty :: M1 i c f a

gmappend :: M1 i c f a -> M1 i c f a -> M1 i c f a