| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Capnp.Pointer
Description
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.
Constructors
| 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 Methods 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] # | |
| Show ElementSize Source # | |
| Defined in Capnp.Pointer Methods showsPrec :: Int -> ElementSize -> ShowS # show :: ElementSize -> String # showList :: [ElementSize] -> ShowS # | |
| Eq ElementSize Source # | |
| Defined in Capnp.Pointer | |
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).
Constructors
| EltNormal !ElementSize !Word32 | 
 | 
| EltComposite !Int32 | 
 | 
parsePtr' :: Word64 -> Ptr Source #
parsePtr' wordword as a capnproto pointer. It ignores
 nulls, returning them the same as (StructPtr 0 0 0).
serializePtr :: Maybe Ptr -> Word64 Source #
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 #
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 #
parseEltSpec wordEltSpec from word, which must be the
 encoding of a list pointer (this is not verified).
serializeEltSpec :: EltSpec -> Word64 Source #
serializeEltSpec eltSpeceltSpec as a Word64. all bits
 which are not determined by the EltSpec are zero.