capnp- Cap'n Proto for Haskell

Safe HaskellNone



This module provides various helpers used by generated code; developers are not expected to invoke them directly.

These helpers are used by the low-level api. Capnp.GenHelpers.Pure defines helpers used by high-level api.



getWordField :: (ReadCtx m msg, IsWord a) => Struct msg -> Int -> Int -> Word64 -> m a Source #

getWordField struct index offset def fetches a field from the struct's data section. index is the index of the 64-bit word in the data section in which the field resides. offset is the offset in bits from the start of that word to the field. def is the default value for this field.

setWordField :: (RWCtx m s, Bounded a, Integral a, IsWord a, Bits a) => Struct (MutMsg s) -> a -> Int -> Int -> Word64 -> m () Source #

setWordField struct value index offset def sets a field in the struct's data section. The meaning of the parameters are as in getWordField, with value being the value to set. The width of the value is inferred from its type.

embedCapPtr :: WriteCtx m s => MutMsg s -> Client -> m (Maybe (Ptr (MutMsg s))) Source #

getPtrConst :: FromPtr ConstMsg a => ByteString -> a Source #

Get a pointer from a ByteString, where the root object is a struct with one pointer, which is the pointer we will retrieve. This is only safe for trusted inputs; it reads the message with a traversal limit of maxBound (and so is suseptable to denial of service attacks), and it calls error if decoding is not successful.

The purpose of this is for defining constants of pointer type from a schema.

getTag :: ReadCtx m msg => Struct msg -> Int -> m Word16 Source #