Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides support for parsing and serializing capnproto pointers. This is a low-level module; most users will not need to call it directly.
Synopsis
- data Ptr
- data ElementSize
- data EltSpec
- parsePtr :: Word64 -> Maybe Ptr
- parsePtr' :: Word64 -> Ptr
- serializePtr :: Maybe Ptr -> Word64
- serializePtr' :: Ptr -> Word64
- parseEltSpec :: Word64 -> EltSpec
- serializeEltSpec :: EltSpec -> Word64
Documentation
A Ptr
represents the information in a capnproto pointer.
StructPtr !Int32 !Word16 !Word16 |
Note that the value |
ListPtr !Int32 !EltSpec |
|
FarPtr !Bool !Word32 !Word32 |
|
CapPtr !Word32 |
|
data ElementSize Source #
The element size field in a list pointer.
Instances
Enum ElementSize Source # | |
Defined in Capnp.Pointer succ :: ElementSize -> ElementSize # pred :: ElementSize -> ElementSize # toEnum :: Int -> ElementSize # fromEnum :: ElementSize -> Int # enumFrom :: ElementSize -> [ElementSize] # enumFromThen :: ElementSize -> ElementSize -> [ElementSize] # enumFromTo :: ElementSize -> ElementSize -> [ElementSize] # enumFromThenTo :: ElementSize -> ElementSize -> ElementSize -> [ElementSize] # | |
Eq ElementSize Source # | |
Defined in Capnp.Pointer (==) :: ElementSize -> ElementSize -> Bool # (/=) :: ElementSize -> ElementSize -> Bool # | |
Show ElementSize Source # | |
Defined in Capnp.Pointer showsPrec :: Int -> ElementSize -> ShowS # show :: ElementSize -> String # showList :: [ElementSize] -> ShowS # |
A combination of the C and D fields in a list pointer, i.e. the element size, and either the number of elements in the list, or the total number of words in the list (if size is composite).
EltNormal !ElementSize !Word32 |
|
EltComposite !Int32 |
|
parsePtr' :: Word64 -> Ptr Source #
parses parsePtr'
wordword
as a capnproto pointer. It ignores
nulls, returning them the same as (StructPtr 0 0 0)
.
serializePtr :: Maybe Ptr -> Word64 Source #
serializes the pointer as a serializePtr
ptrWord64
, translating
Nothing
to a null pointer.
This also changes the offset of zero-sized struct pointers to -1, to avoid them being interpreted as null.
serializePtr' :: Ptr -> Word64 Source #
serializes the pointer as a Word64.serializePtr'
ptr
Unlike serializePtr
, this results in a null pointer on the input
(StructPtr 0 0 0)
, rather than adjusting the offset.
parseEltSpec :: Word64 -> EltSpec Source #
reads the parseEltSpec
wordEltSpec
from word
, which must be the
encoding of a list pointer (this is not verified).
serializeEltSpec :: EltSpec -> Word64 Source #
serializes serializeEltSpec
eltSpeceltSpec
as a Word64
. all bits
which are not determined by the EltSpec
are zero.