Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.ProtocolBuffers
Description
An implementation of Protocol Buffers in pure Haskell.
Extensive documentation is available at https://developers.google.com/protocol-buffers/docs/overview and Google's reference implementation can be found at http://code.google.com/p/protobuf/.
It is intended to be used via GHC.Generics and does not require .proto
files to function.
Tools are being developed that will convert a Haskell Protobuf definition into a .proto
and vice versa.
Given a message definition:
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DataKinds #-} import Data.Int import Data.ProtocolBuffers import Data.Text import GHC.Generics (Generic
) import GHC.TypeLits import Data.Monoid import Data.Serialize import Data.Hex -- cabal install hex (for testing) data Foo = Foo { field1 ::Required
1 (Value
Int64
) -- ^ The last field with tag = 1 , field2 ::Optional
2 (Value
Text
) -- ^ The last field with tag = 2 , field3 ::Repeated
3 (Value
Bool
) -- ^ All fields with tag = 3, ordering is preserved } deriving (Generic
,Show
) instanceEncode
Foo instanceDecode
Foo
It can then be used for encoding and decoding. The Encode
and Decode
instances are derived automatically
using DeriveGeneric and DefaultSignatures as outlined here: http://www.haskell.org/haskellwiki/GHC.Generics#More_general_default_methods.
To construct a message, use putField
to set each field value. Optional
, Repeated
and Packed
fields can be set to their empty value by using mempty
. An example using record syntax for clarity:
>>>
let msg = Foo{field1 = putField 42, field2 = mempty, field3 = putField [True, False]}
To serialize a message first convert it into a Put
by way of encodeMessage
and then to a ByteString
by using runPut
. Lazy
ByteString
serialization is done with runPutLazy
.
>>>
fmap hex runPut $ encodeMessage msg
"082A18011800"
Decoding is done with the inverse functions: decodeMessage
and runGet
, or runGetLazy
.
>>>
runGet decodeMessage =<< unhex "082A18011800" :: Either String Foo
Right (Foo { field1 = Field {runField = Required {runRequired = Always {runAlways = Value {runValue = 42}}}} , field2 = Field {runField = Optional {runOptional = Last {getLast = Nothing}}} , field3 = Field {runField = Repeated {runRepeated = [Value {runValue = True},Value {runValue = False}]}} } )
Use getField
to read fields from a message:
>>>
let Right msg = runGet decodeMessage =<< unhex "082A18011800" :: Either String Foo
>>>
getField $ field1 msg
42>>>
getField $ field2 msg
Nothing>>>
getField $ field3 msg
[True,False]
Some Protocol Buffers features are not currently implemented:
Synopsis
- class Encode a where
- encodeMessage :: Encode a => a -> Put
- encodeLengthPrefixedMessage :: Encode a => a -> Put
- class Decode a where
- decodeMessage :: Decode a => Get a
- decodeLengthPrefixedMessage :: Decode a => Get a
- type family Required (n :: Nat) a
- type family Optional (n :: Nat) a
- type Repeated (n :: Nat) a = Field n (RepeatedField [a])
- type Packed (n :: Nat) a = Field n (PackedField (PackedList a))
- class HasField a where
- data Field (n :: Nat) a
- data Value a
- data Enumeration a
- data Message m
- newtype Signed a = Signed a
- newtype Fixed a = Fixed a
Message Serialization
Encoding
Minimal complete definition
Nothing
Methods
encodeMessage :: Encode a => a -> Put Source #
Encode a Protocol Buffers message.
encodeLengthPrefixedMessage :: Encode a => a -> Put Source #
Encode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing its length.
Decoding
Minimal complete definition
Nothing
Methods
decodeMessage :: Decode a => Get a Source #
Decode a Protocol Buffers message.
decodeLengthPrefixedMessage :: Decode a => Get a Source #
Decode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing its length.
Fields
Tags
Restricted type aliases of Field
. These are used to attach a field tag (a numeric id) to a field.
Each tag must be unique within a given message, though this is not currently checked or enforced.
type family Required (n :: Nat) a Source #
Instances
type Required n (Message a) Source # | |
Defined in Data.ProtocolBuffers.Message | |
type Required n (Enumeration a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
type Required n (Value a) Source # | |
Defined in Data.ProtocolBuffers.Types |
type family Optional (n :: Nat) a Source #
Optional fields. Values that are not found will return Nothing
.
Instances
type Optional n (Message a) Source # | |
Defined in Data.ProtocolBuffers.Message | |
type Optional n (Enumeration a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
type Optional n (Value a) Source # | |
Defined in Data.ProtocolBuffers.Types |
type Packed (n :: Nat) a = Field n (PackedField (PackedList a)) Source #
Packed values.
Accessors
Fields tend to have rather complex types that are unpleasant to interact with.
HasField
was designed to hide this complexity and provide a consistent way of
getting and setting fields.
class HasField a where Source #
Functions for wrapping and unwrapping record fields. When applied they will have types similar to these:
getField
::Required
'1' (Value
Text
) ->Text
putField
::Text
->Required
'1' (Value
Text
)getField
::Optional
'2' (Value
Int32
) ->Maybe
Int32
putField
::Maybe
Int32
->Optional
'2' (Value
Int32
)getField
::Repeated
'3' (Value
Double
) -> [Double
]putField
:: [Double
] ->Repeated
'3' (Value
Double
)getField
::Packed
'4' (Value
Word64
) -> [Word64
]putField
:: [Word64
] ->Packed
'4' (Value
Word64
)
Methods
getField :: a -> FieldType a Source #
Extract a value from it's Field
representation.
putField :: FieldType a -> a Source #
Wrap it back up again.
field :: Functor f => (FieldType a -> f (FieldType a)) -> a -> f a Source #
An isomorphism lens compatible with the lens package
Instances
Selectors
Follow these rules to define fields supported by the generic encoder/decoder:
data Field (n :: Nat) a Source #
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
Instances
Foldable (Field n) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods fold :: Monoid m => Field n m -> m # foldMap :: Monoid m => (a -> m) -> Field n a -> 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 # elem :: Eq a => a -> Field n a -> Bool # maximum :: Ord a => Field n a -> a # minimum :: Ord a => Field n a -> a # | |||||
Traversable (Field n) Source # | |||||
Functor (Field n) Source # | |||||
Monoid a => Monoid (Field n a) Source # | |||||
Semigroup a => Semigroup (Field n a) Source # | |||||
Bounded a => Bounded (Field n a) Source # | |||||
Enum a => Enum (Field n a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods succ :: Field n a -> Field n a # pred :: Field n a -> 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] # | |||||
Show a => Show (Field n a) Source # | |||||
NFData a => NFData (Field n a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
Eq a => Eq (Field n a) Source # | |||||
Ord a => Ord (Field n a) Source # | |||||
HasField (Field n (OptionalField (Last (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (OptionalField (Last (Enumeration a))) -> FieldType (Field n (OptionalField (Last (Enumeration a)))) Source # putField :: FieldType (Field n (OptionalField (Last (Enumeration a)))) -> Field n (OptionalField (Last (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Last (Enumeration a)))) -> f (FieldType (Field n (OptionalField (Last (Enumeration a)))))) -> Field n (OptionalField (Last (Enumeration a))) -> f (Field n (OptionalField (Last (Enumeration a)))) Source # | |||||
HasField (Field n (OptionalField (Last (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (OptionalField (Last (Value a))) -> FieldType (Field n (OptionalField (Last (Value a)))) Source # putField :: FieldType (Field n (OptionalField (Last (Value a)))) -> Field n (OptionalField (Last (Value a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Last (Value a)))) -> f (FieldType (Field n (OptionalField (Last (Value a)))))) -> Field n (OptionalField (Last (Value a))) -> f (Field n (OptionalField (Last (Value a)))) Source # | |||||
HasField (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (OptionalField (Maybe (Message a))) -> FieldType (Field n (OptionalField (Maybe (Message a)))) Source # putField :: FieldType (Field n (OptionalField (Maybe (Message a)))) -> Field n (OptionalField (Maybe (Message a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Maybe (Message a)))) -> f (FieldType (Field n (OptionalField (Maybe (Message a)))))) -> Field n (OptionalField (Maybe (Message a))) -> f (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
HasField (Field n (PackedField (PackedList (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (PackedField (PackedList (Enumeration a))) -> FieldType (Field n (PackedField (PackedList (Enumeration a)))) Source # putField :: FieldType (Field n (PackedField (PackedList (Enumeration a)))) -> Field n (PackedField (PackedList (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (PackedField (PackedList (Enumeration a)))) -> f (FieldType (Field n (PackedField (PackedList (Enumeration a)))))) -> Field n (PackedField (PackedList (Enumeration a))) -> f (Field n (PackedField (PackedList (Enumeration a)))) Source # | |||||
HasField (Field n (PackedField (PackedList (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (PackedField (PackedList (Value a))) -> FieldType (Field n (PackedField (PackedList (Value a)))) Source # putField :: FieldType (Field n (PackedField (PackedList (Value a)))) -> Field n (PackedField (PackedList (Value a))) Source # field :: Functor f => (FieldType (Field n (PackedField (PackedList (Value a)))) -> f (FieldType (Field n (PackedField (PackedList (Value a)))))) -> Field n (PackedField (PackedList (Value a))) -> f (Field n (PackedField (PackedList (Value a)))) Source # | |||||
HasField (Field n (RepeatedField [Message a])) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (RepeatedField [Message a]) -> FieldType (Field n (RepeatedField [Message a])) Source # putField :: FieldType (Field n (RepeatedField [Message a])) -> Field n (RepeatedField [Message a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Message a])) -> f (FieldType (Field n (RepeatedField [Message a])))) -> Field n (RepeatedField [Message a]) -> f (Field n (RepeatedField [Message a])) Source # | |||||
HasField (Field n (RepeatedField [Enumeration a])) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RepeatedField [Enumeration a]) -> FieldType (Field n (RepeatedField [Enumeration a])) Source # putField :: FieldType (Field n (RepeatedField [Enumeration a])) -> Field n (RepeatedField [Enumeration a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Enumeration a])) -> f (FieldType (Field n (RepeatedField [Enumeration a])))) -> Field n (RepeatedField [Enumeration a]) -> f (Field n (RepeatedField [Enumeration a])) Source # | |||||
HasField (Field n (RepeatedField [Value a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RepeatedField [Value a]) -> FieldType (Field n (RepeatedField [Value a])) Source # putField :: FieldType (Field n (RepeatedField [Value a])) -> Field n (RepeatedField [Value a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Value a])) -> f (FieldType (Field n (RepeatedField [Value a])))) -> Field n (RepeatedField [Value a]) -> f (Field n (RepeatedField [Value a])) Source # | |||||
HasField (Field n (RequiredField (Always (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (RequiredField (Always (Message a))) -> FieldType (Field n (RequiredField (Always (Message a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Message a)))) -> Field n (RequiredField (Always (Message a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Message a)))) -> f (FieldType (Field n (RequiredField (Always (Message a)))))) -> Field n (RequiredField (Always (Message a))) -> f (Field n (RequiredField (Always (Message a)))) Source # | |||||
HasField (Field n (RequiredField (Always (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RequiredField (Always (Enumeration a))) -> FieldType (Field n (RequiredField (Always (Enumeration a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Enumeration a)))) -> Field n (RequiredField (Always (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Enumeration a)))) -> f (FieldType (Field n (RequiredField (Always (Enumeration a)))))) -> Field n (RequiredField (Always (Enumeration a))) -> f (Field n (RequiredField (Always (Enumeration a)))) Source # | |||||
HasField (Field n (RequiredField (Always (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RequiredField (Always (Value a))) -> FieldType (Field n (RequiredField (Always (Value a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Value a)))) -> Field n (RequiredField (Always (Value a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Value a)))) -> f (FieldType (Field n (RequiredField (Always (Value a)))))) -> Field n (RequiredField (Always (Value a))) -> f (Field n (RequiredField (Always (Value a)))) Source # | |||||
(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a)))) :: Type -> Type) Source # | |||||
Defined in Data.ProtocolBuffers.Decode Methods gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Enumeration a)))) a0) | |||||
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a)))) :: Type -> Type) Source # | |||||
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a)))) :: Type -> Type) Source # | |||||
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a)))) :: Type -> Type) Source # | |||||
(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a)))) :: Type -> Type) Source # | |||||
Defined in Data.ProtocolBuffers.Decode Methods gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Enumeration a)))) a0) | |||||
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a)))) :: Type -> Type) Source # | |||||
(DecodeWire (PackedList a), KnownNat n) => GDecode (K1 i (Packed n a) :: Type -> Type) Source # | |||||
(DecodeWire a, KnownNat n) => GDecode (K1 i (Repeated n a) :: Type -> Type) Source # | |||||
(EncodeWire a, KnownNat n, Foldable f) => GEncode (K1 i (Field n (f a)) :: Type -> Type) Source # | |||||
Defined in Data.ProtocolBuffers.Encode | |||||
type FieldType (Field n (OptionalField (Last (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (OptionalField (Last (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (PackedField (PackedList (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (PackedField (PackedList (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RepeatedField [Message a])) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (RepeatedField [Enumeration a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RepeatedField [Value a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RequiredField (Always (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (RequiredField (Always (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RequiredField (Always (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types |
Values
Selectors
Each field value needs to specify the way it should be encoded.
There are three built-in value selectors: Value
, Enumeration
and Message
.
If you're unsure what value selector to use, Value
is probably the correct one.
Value
selects the normal/typical way for encoding scalar (primitive) values.
Instances
Foldable Value Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods fold :: Monoid m => Value m -> m # foldMap :: Monoid m => (a -> m) -> Value a -> 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 # elem :: Eq a => a -> Value a -> Bool # maximum :: Ord a => Value a -> a # minimum :: Ord a => Value a -> a # | |||||
Traversable Value Source # | |||||
Functor Value Source # | |||||
Monoid a => Monoid (Value a) Source # | |||||
Semigroup a => Semigroup (Value a) Source # | |||||
Bounded a => Bounded (Value a) Source # | |||||
Enum a => Enum (Value a) Source # | |||||
Show a => Show (Value a) Source # | |||||
NFData a => NFData (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
Eq a => Eq (Value a) Source # | |||||
Ord a => Ord (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
DecodeWire a => DecodeWire (Last (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
DecodeWire a => DecodeWire (Always (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
DecodeWire (PackedList (Value Int32)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Int32)) Source # | |||||
DecodeWire (PackedList (Value Int64)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Int64)) Source # | |||||
DecodeWire (PackedList (Value Word32)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Word32)) Source # | |||||
DecodeWire (PackedList (Value Word64)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Word64)) Source # | |||||
DecodeWire (PackedList (Value (Fixed Int32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Int32))) Source # | |||||
DecodeWire (PackedList (Value (Fixed Int64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Int64))) Source # | |||||
DecodeWire (PackedList (Value (Fixed Word32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Word32))) Source # | |||||
DecodeWire (PackedList (Value (Fixed Word64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Word64))) Source # | |||||
DecodeWire (PackedList (Value (Signed Int32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Signed Int32))) Source # | |||||
DecodeWire (PackedList (Value (Signed Int64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Signed Int64))) Source # | |||||
DecodeWire (PackedList (Value Bool)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Bool)) Source # | |||||
DecodeWire (PackedList (Value Double)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Double)) Source # | |||||
DecodeWire (PackedList (Value Float)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value Float)) Source # | |||||
DecodeWire a => DecodeWire (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
DecodeWire a => DecodeWire (Maybe (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
EncodeWire a => EncodeWire (Last (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
EncodeWire a => EncodeWire (Always (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
EncodeWire (PackedList (Value Int32)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Int32) -> Put Source # | |||||
EncodeWire (PackedList (Value Int64)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Int64) -> Put Source # | |||||
EncodeWire (PackedList (Value Word32)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Word32) -> Put Source # | |||||
EncodeWire (PackedList (Value Word64)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Word64) -> Put Source # | |||||
EncodeWire (PackedList (Value (Fixed Int32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Int32)) -> Put Source # | |||||
EncodeWire (PackedList (Value (Fixed Int64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Int64)) -> Put Source # | |||||
EncodeWire (PackedList (Value (Fixed Word32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Word32)) -> Put Source # | |||||
EncodeWire (PackedList (Value (Fixed Word64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Word64)) -> Put Source # | |||||
EncodeWire (PackedList (Value (Signed Int32))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Signed Int32)) -> Put Source # | |||||
EncodeWire (PackedList (Value (Signed Int64))) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Signed Int64)) -> Put Source # | |||||
EncodeWire (PackedList (Value Bool)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Bool) -> Put Source # | |||||
EncodeWire (PackedList (Value Double)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Double) -> Put Source # | |||||
EncodeWire (PackedList (Value Float)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value Float) -> Put Source # | |||||
EncodeWire a => EncodeWire (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
EncodeWire a => EncodeWire (Maybe (Value a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
EncodeWire a => EncodeWire [Value a] Source # | |||||
Defined in Data.ProtocolBuffers.Wire | |||||
HasField (Field n (OptionalField (Last (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (OptionalField (Last (Value a))) -> FieldType (Field n (OptionalField (Last (Value a)))) Source # putField :: FieldType (Field n (OptionalField (Last (Value a)))) -> Field n (OptionalField (Last (Value a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Last (Value a)))) -> f (FieldType (Field n (OptionalField (Last (Value a)))))) -> Field n (OptionalField (Last (Value a))) -> f (Field n (OptionalField (Last (Value a)))) Source # | |||||
HasField (Field n (PackedField (PackedList (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (PackedField (PackedList (Value a))) -> FieldType (Field n (PackedField (PackedList (Value a)))) Source # putField :: FieldType (Field n (PackedField (PackedList (Value a)))) -> Field n (PackedField (PackedList (Value a))) Source # field :: Functor f => (FieldType (Field n (PackedField (PackedList (Value a)))) -> f (FieldType (Field n (PackedField (PackedList (Value a)))))) -> Field n (PackedField (PackedList (Value a))) -> f (Field n (PackedField (PackedList (Value a)))) Source # | |||||
HasField (Field n (RepeatedField [Value a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RepeatedField [Value a]) -> FieldType (Field n (RepeatedField [Value a])) Source # putField :: FieldType (Field n (RepeatedField [Value a])) -> Field n (RepeatedField [Value a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Value a])) -> f (FieldType (Field n (RepeatedField [Value a])))) -> Field n (RepeatedField [Value a]) -> f (Field n (RepeatedField [Value a])) Source # | |||||
HasField (Field n (RequiredField (Always (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RequiredField (Always (Value a))) -> FieldType (Field n (RequiredField (Always (Value a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Value a)))) -> Field n (RequiredField (Always (Value a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Value a)))) -> f (FieldType (Field n (RequiredField (Always (Value a)))))) -> Field n (RequiredField (Always (Value a))) -> f (Field n (RequiredField (Always (Value a)))) Source # | |||||
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Value a)))) :: Type -> Type) Source # | |||||
(DecodeWire a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Value a)))) :: Type -> Type) Source # | |||||
type Optional n (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type Required n (Value a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (OptionalField (Last (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (PackedField (PackedList (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RepeatedField [Value a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RequiredField (Always (Value a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types |
data Enumeration a Source #
Enumeration
fields use fromEnum
and toEnum
when encoding and decoding messages.
Instances
Foldable Enumeration Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods fold :: Monoid m => Enumeration m -> m # foldMap :: Monoid m => (a -> m) -> Enumeration a -> 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 Source # | |||||
Defined in Data.ProtocolBuffers.Types 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) # | |||||
Functor Enumeration Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods fmap :: (a -> b) -> Enumeration a -> Enumeration b # (<$) :: a -> Enumeration b -> Enumeration a # | |||||
Monoid a => Monoid (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods mempty :: Enumeration a # mappend :: Enumeration a -> Enumeration a -> Enumeration a # mconcat :: [Enumeration a] -> Enumeration a # | |||||
Semigroup a => Semigroup (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods (<>) :: Enumeration a -> Enumeration a -> Enumeration a # sconcat :: NonEmpty (Enumeration a) -> Enumeration a # stimes :: Integral b => b -> Enumeration a -> Enumeration a # | |||||
Bounded a => Bounded (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
Enum a => Enum (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods succ :: Enumeration a -> Enumeration a # pred :: Enumeration a -> Enumeration a # toEnum :: Int -> Enumeration a # fromEnum :: Enumeration a -> Int # enumFrom :: Enumeration a -> [Enumeration a] # enumFromThen :: Enumeration a -> Enumeration a -> [Enumeration a] # enumFromTo :: Enumeration a -> Enumeration a -> [Enumeration a] # enumFromThenTo :: Enumeration a -> Enumeration a -> Enumeration a -> [Enumeration a] # | |||||
Show a => Show (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods showsPrec :: Int -> Enumeration a -> ShowS # show :: Enumeration a -> String # showList :: [Enumeration a] -> ShowS # | |||||
NFData a => NFData (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods rnf :: Enumeration a -> () # | |||||
Eq a => Eq (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods (==) :: Enumeration a -> Enumeration a -> Bool # (/=) :: Enumeration a -> Enumeration a -> Bool # | |||||
Ord a => Ord (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types Methods compare :: Enumeration a -> Enumeration a -> Ordering # (<) :: Enumeration a -> Enumeration a -> Bool # (<=) :: Enumeration a -> Enumeration a -> Bool # (>) :: Enumeration a -> Enumeration a -> Bool # (>=) :: Enumeration a -> Enumeration a -> Bool # max :: Enumeration a -> Enumeration a -> Enumeration a # min :: Enumeration a -> Enumeration a -> Enumeration a # | |||||
Enum a => DecodeWire (Always (Enumeration a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (Always (Enumeration a)) Source # | |||||
Enum a => DecodeWire (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (Enumeration a) Source # | |||||
Enum a => DecodeWire (PackedList (Enumeration a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Enumeration a)) Source # | |||||
Enum a => DecodeWire (Maybe (Enumeration a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (Maybe (Enumeration a)) Source # | |||||
Enum a => EncodeWire (PackedList (Enumeration a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Enumeration a) -> Put Source # | |||||
(Foldable f, Enum a) => EncodeWire (f (Enumeration a)) Source # | |||||
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> f (Enumeration a) -> Put Source # | |||||
HasField (Field n (OptionalField (Last (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (OptionalField (Last (Enumeration a))) -> FieldType (Field n (OptionalField (Last (Enumeration a)))) Source # putField :: FieldType (Field n (OptionalField (Last (Enumeration a)))) -> Field n (OptionalField (Last (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Last (Enumeration a)))) -> f (FieldType (Field n (OptionalField (Last (Enumeration a)))))) -> Field n (OptionalField (Last (Enumeration a))) -> f (Field n (OptionalField (Last (Enumeration a)))) Source # | |||||
HasField (Field n (PackedField (PackedList (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (PackedField (PackedList (Enumeration a))) -> FieldType (Field n (PackedField (PackedList (Enumeration a)))) Source # putField :: FieldType (Field n (PackedField (PackedList (Enumeration a)))) -> Field n (PackedField (PackedList (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (PackedField (PackedList (Enumeration a)))) -> f (FieldType (Field n (PackedField (PackedList (Enumeration a)))))) -> Field n (PackedField (PackedList (Enumeration a))) -> f (Field n (PackedField (PackedList (Enumeration a)))) Source # | |||||
HasField (Field n (RepeatedField [Enumeration a])) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RepeatedField [Enumeration a]) -> FieldType (Field n (RepeatedField [Enumeration a])) Source # putField :: FieldType (Field n (RepeatedField [Enumeration a])) -> Field n (RepeatedField [Enumeration a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Enumeration a])) -> f (FieldType (Field n (RepeatedField [Enumeration a])))) -> Field n (RepeatedField [Enumeration a]) -> f (Field n (RepeatedField [Enumeration a])) Source # | |||||
HasField (Field n (RequiredField (Always (Enumeration a)))) Source # | Iso: | ||||
Defined in Data.ProtocolBuffers.Types Associated Types
Methods getField :: Field n (RequiredField (Always (Enumeration a))) -> FieldType (Field n (RequiredField (Always (Enumeration a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Enumeration a)))) -> Field n (RequiredField (Always (Enumeration a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Enumeration a)))) -> f (FieldType (Field n (RequiredField (Always (Enumeration a)))))) -> Field n (RequiredField (Always (Enumeration a))) -> f (Field n (RequiredField (Always (Enumeration a)))) Source # | |||||
(Enum a, KnownNat n) => GDecode (K1 i (Field n (OptionalField (Last (Enumeration a)))) :: Type -> Type) Source # | |||||
Defined in Data.ProtocolBuffers.Decode Methods gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (OptionalField (Last (Enumeration a)))) a0) | |||||
(Enum a, KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Enumeration a)))) :: Type -> Type) Source # | |||||
Defined in Data.ProtocolBuffers.Decode Methods gdecode :: HashMap Tag [WireField] -> Get (K1 i (Field n (RequiredField (Always (Enumeration a)))) a0) | |||||
type Optional n (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type Required n (Enumeration a) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (OptionalField (Last (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (PackedField (PackedList (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RepeatedField [Enumeration a])) Source # | |||||
Defined in Data.ProtocolBuffers.Types | |||||
type FieldType (Field n (RequiredField (Always (Enumeration a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Types |
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
) instanceEncode
Inner instanceDecode
Inner data Outer = Outer { outerField ::Required
'1' (Message
Inner) } deriving (Generic
,Show
) instanceEncode
Outer instanceDecode
Outer
It's worth noting that
is a Message
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
) instanceEncode
Inner instanceDecode
Inner data Outer a = Outer{outer ::Required
'3' (Message
a)} deriving (Generic
,Show
) instanceEncode
a =>Encode
(Outer a) instanceDecode
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 fordecode
: 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)
Instances
Foldable Message Source # | |||||
Defined in Data.ProtocolBuffers.Message Methods fold :: Monoid m => Message m -> m # foldMap :: Monoid m => (a -> m) -> Message a -> 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 # elem :: Eq a => a -> Message a -> Bool # maximum :: Ord a => Message a -> a # minimum :: Ord a => Message a -> a # | |||||
Traversable Message Source # | |||||
Functor Message Source # | |||||
(Generic m, GMessageMonoid (Rep m)) => Monoid (Message m) Source # | |||||
(Generic m, GMessageMonoid (Rep m)) => Semigroup (Message m) Source # | |||||
Show m => Show (Message m) Source # | |||||
(Generic m, GMessageNFData (Rep m)) => NFData (Message m) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
Eq m => Eq (Message m) Source # | |||||
Ord m => Ord (Message m) Source # | |||||
Decode m => DecodeWire (Message m) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
(Foldable f, Encode m) => EncodeWire (f (Message m)) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
HasField (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (OptionalField (Maybe (Message a))) -> FieldType (Field n (OptionalField (Maybe (Message a)))) Source # putField :: FieldType (Field n (OptionalField (Maybe (Message a)))) -> Field n (OptionalField (Maybe (Message a))) Source # field :: Functor f => (FieldType (Field n (OptionalField (Maybe (Message a)))) -> f (FieldType (Field n (OptionalField (Maybe (Message a)))))) -> Field n (OptionalField (Maybe (Message a))) -> f (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
HasField (Field n (RepeatedField [Message a])) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (RepeatedField [Message a]) -> FieldType (Field n (RepeatedField [Message a])) Source # putField :: FieldType (Field n (RepeatedField [Message a])) -> Field n (RepeatedField [Message a]) Source # field :: Functor f => (FieldType (Field n (RepeatedField [Message a])) -> f (FieldType (Field n (RepeatedField [Message a])))) -> Field n (RepeatedField [Message a]) -> f (Field n (RepeatedField [Message a])) Source # | |||||
HasField (Field n (RequiredField (Always (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message Associated Types
Methods getField :: Field n (RequiredField (Always (Message a))) -> FieldType (Field n (RequiredField (Always (Message a)))) Source # putField :: FieldType (Field n (RequiredField (Always (Message a)))) -> Field n (RequiredField (Always (Message a))) Source # field :: Functor f => (FieldType (Field n (RequiredField (Always (Message a)))) -> f (FieldType (Field n (RequiredField (Always (Message a)))))) -> Field n (RequiredField (Always (Message a))) -> f (Field n (RequiredField (Always (Message a)))) Source # | |||||
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (OptionalField (Maybe (Message a)))) :: Type -> Type) Source # | |||||
(Decode a, Monoid (Message a), KnownNat n) => GDecode (K1 i (Field n (RequiredField (Always (Message a)))) :: Type -> Type) Source # | |||||
type Optional n (Message a) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type Required n (Message a) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (OptionalField (Maybe (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (RepeatedField [Message a])) Source # | |||||
Defined in Data.ProtocolBuffers.Message | |||||
type FieldType (Field n (RequiredField (Always (Message a)))) Source # | |||||
Defined in Data.ProtocolBuffers.Message |
Wire Coding
Some primitive values can be more compactly represented. Fields that typically contain
negative or very large numbers should use the Signed
or Fixed
wrappers to select
their respective (efficient) formats.
Signed integers are stored in a zz-encoded form.
Constructors
Signed a |
Instances
Foldable Signed Source # | |
Defined in Data.ProtocolBuffers.Types Methods fold :: Monoid m => Signed m -> m # foldMap :: Monoid m => (a -> m) -> Signed a -> m # foldMap' :: Monoid m => (a -> m) -> Signed a -> m # foldr :: (a -> b -> b) -> b -> Signed a -> b # foldr' :: (a -> b -> b) -> b -> Signed a -> b # foldl :: (b -> a -> b) -> b -> Signed a -> b # foldl' :: (b -> a -> b) -> b -> Signed a -> b # foldr1 :: (a -> a -> a) -> Signed a -> a # foldl1 :: (a -> a -> a) -> Signed a -> a # elem :: Eq a => a -> Signed a -> Bool # maximum :: Ord a => Signed a -> a # minimum :: Ord a => Signed a -> a # | |
Traversable Signed Source # | |
Functor Signed Source # | |
Monoid a => Monoid (Signed a) Source # | |
Semigroup a => Semigroup (Signed a) Source # | |
Bits a => Bits (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods (.&.) :: Signed a -> Signed a -> Signed a # (.|.) :: Signed a -> Signed a -> Signed a # xor :: Signed a -> Signed a -> Signed a # complement :: Signed a -> Signed a # shift :: Signed a -> Int -> Signed a # rotate :: Signed a -> Int -> Signed a # setBit :: Signed a -> Int -> Signed a # clearBit :: Signed a -> Int -> Signed a # complementBit :: Signed a -> Int -> Signed a # testBit :: Signed a -> Int -> Bool # bitSizeMaybe :: Signed a -> Maybe Int # isSigned :: Signed a -> Bool # shiftL :: Signed a -> Int -> Signed a # unsafeShiftL :: Signed a -> Int -> Signed a # shiftR :: Signed a -> Int -> Signed a # unsafeShiftR :: Signed a -> Int -> Signed a # rotateL :: Signed a -> Int -> Signed a # | |
Bounded a => Bounded (Signed a) Source # | |
Enum a => Enum (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
Floating a => Floating (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods sqrt :: Signed a -> Signed a # (**) :: Signed a -> Signed a -> Signed a # logBase :: Signed a -> Signed a -> Signed a # asin :: Signed a -> Signed a # acos :: Signed a -> Signed a # atan :: Signed a -> Signed a # sinh :: Signed a -> Signed a # cosh :: Signed a -> Signed a # tanh :: Signed a -> Signed a # asinh :: Signed a -> Signed a # acosh :: Signed a -> Signed a # atanh :: Signed a -> Signed a # log1p :: Signed a -> Signed a # expm1 :: Signed a -> Signed a # | |
RealFloat a => RealFloat (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods floatRadix :: Signed a -> Integer # floatDigits :: Signed a -> Int # floatRange :: Signed a -> (Int, Int) # decodeFloat :: Signed a -> (Integer, Int) # encodeFloat :: Integer -> Int -> Signed a # significand :: Signed a -> Signed a # scaleFloat :: Int -> Signed a -> Signed a # isInfinite :: Signed a -> Bool # isDenormalized :: Signed a -> Bool # isNegativeZero :: Signed a -> Bool # | |
Num a => Num (Signed a) Source # | |
Fractional a => Fractional (Signed a) Source # | |
Integral a => Integral (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
Real a => Real (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods toRational :: Signed a -> Rational # | |
RealFrac a => RealFrac (Signed a) Source # | |
Show a => Show (Signed a) Source # | |
NFData a => NFData (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
Eq a => Eq (Signed a) Source # | |
Ord a => Ord (Signed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
DecodeWire (PackedList (Value (Signed Int32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Signed Int32))) Source # | |
DecodeWire (PackedList (Value (Signed Int64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Signed Int64))) Source # | |
DecodeWire (Signed Int32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
DecodeWire (Signed Int64) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (PackedList (Value (Signed Int32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Signed Int32)) -> Put Source # | |
EncodeWire (PackedList (Value (Signed Int64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Signed Int64)) -> Put Source # | |
EncodeWire (Signed Int32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (Signed Int64) Source # | |
Defined in Data.ProtocolBuffers.Wire |
Fixed integers are stored in little-endian form without additional encoding.
Constructors
Fixed a |
Instances
Foldable Fixed Source # | |
Defined in Data.ProtocolBuffers.Types Methods fold :: Monoid m => Fixed m -> m # foldMap :: Monoid m => (a -> m) -> Fixed a -> m # foldMap' :: Monoid m => (a -> m) -> Fixed a -> m # foldr :: (a -> b -> b) -> b -> Fixed a -> b # foldr' :: (a -> b -> b) -> b -> Fixed a -> b # foldl :: (b -> a -> b) -> b -> Fixed a -> b # foldl' :: (b -> a -> b) -> b -> Fixed a -> b # foldr1 :: (a -> a -> a) -> Fixed a -> a # foldl1 :: (a -> a -> a) -> Fixed a -> a # elem :: Eq a => a -> Fixed a -> Bool # maximum :: Ord a => Fixed a -> a # minimum :: Ord a => Fixed a -> a # | |
Traversable Fixed Source # | |
Functor Fixed Source # | |
Monoid a => Monoid (Fixed a) Source # | |
Semigroup a => Semigroup (Fixed a) Source # | |
Bits a => Bits (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods (.&.) :: Fixed a -> Fixed a -> Fixed a # (.|.) :: Fixed a -> Fixed a -> Fixed a # xor :: Fixed a -> Fixed a -> Fixed a # complement :: Fixed a -> Fixed a # shift :: Fixed a -> Int -> Fixed a # rotate :: Fixed a -> Int -> Fixed a # setBit :: Fixed a -> Int -> Fixed a # clearBit :: Fixed a -> Int -> Fixed a # complementBit :: Fixed a -> Int -> Fixed a # testBit :: Fixed a -> Int -> Bool # bitSizeMaybe :: Fixed a -> Maybe Int # shiftL :: Fixed a -> Int -> Fixed a # unsafeShiftL :: Fixed a -> Int -> Fixed a # shiftR :: Fixed a -> Int -> Fixed a # unsafeShiftR :: Fixed a -> Int -> Fixed a # rotateL :: Fixed a -> Int -> Fixed a # | |
Bounded a => Bounded (Fixed a) Source # | |
Enum a => Enum (Fixed a) Source # | |
Floating a => Floating (Fixed a) Source # | |
RealFloat a => RealFloat (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods floatRadix :: Fixed a -> Integer # floatDigits :: Fixed a -> Int # floatRange :: Fixed a -> (Int, Int) # decodeFloat :: Fixed a -> (Integer, Int) # encodeFloat :: Integer -> Int -> Fixed a # significand :: Fixed a -> Fixed a # scaleFloat :: Int -> Fixed a -> Fixed a # isInfinite :: Fixed a -> Bool # isDenormalized :: Fixed a -> Bool # isNegativeZero :: Fixed a -> Bool # | |
Num a => Num (Fixed a) Source # | |
Fractional a => Fractional (Fixed a) Source # | |
Integral a => Integral (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
Real a => Real (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types Methods toRational :: Fixed a -> Rational # | |
RealFrac a => RealFrac (Fixed a) Source # | |
Show a => Show (Fixed a) Source # | |
NFData a => NFData (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
Eq a => Eq (Fixed a) Source # | |
Ord a => Ord (Fixed a) Source # | |
Defined in Data.ProtocolBuffers.Types | |
DecodeWire (Fixed Int32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
DecodeWire (Fixed Int64) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
DecodeWire (Fixed Word32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
DecodeWire (Fixed Word64) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
DecodeWire (PackedList (Value (Fixed Int32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Int32))) Source # | |
DecodeWire (PackedList (Value (Fixed Int64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Int64))) Source # | |
DecodeWire (PackedList (Value (Fixed Word32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Word32))) Source # | |
DecodeWire (PackedList (Value (Fixed Word64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods decodeWire :: WireField -> Get (PackedList (Value (Fixed Word64))) Source # | |
EncodeWire (Fixed Int32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (Fixed Int64) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (Fixed Word32) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (Fixed Word64) Source # | |
Defined in Data.ProtocolBuffers.Wire | |
EncodeWire (PackedList (Value (Fixed Int32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Int32)) -> Put Source # | |
EncodeWire (PackedList (Value (Fixed Int64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Int64)) -> Put Source # | |
EncodeWire (PackedList (Value (Fixed Word32))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Word32)) -> Put Source # | |
EncodeWire (PackedList (Value (Fixed Word64))) Source # | |
Defined in Data.ProtocolBuffers.Wire Methods encodeWire :: Tag -> PackedList (Value (Fixed Word64)) -> Put Source # |