capnp

OCaml code generation plugin for the Cap'n Proto serialization framework
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library capnp
Module Capnp . Message . Make . Slice
include MessageSig.SLICE with type 'a segment_t := 'a Segment.t and type 'a message_t := 'a Message.t
type 'cap t = {
msg : 'cap Message.t;(*

Identifies the message of interest

*)
segment : 'cap Segment.t;(*

Segment within message housing these bytes

*)
segment_id : int;(*

Index of the segment

*)
start : int;(*

Starting byte of the slice

*)
len : int;(*

Length of the slice, in bytes

*)
}

Type t represents a contiguous range of bytes associated with a single segment of a message.

val alloc : MessageSig.rw Message.t -> int -> MessageSig.rw t

alloc m size reserves size bytes of space within message m. This may result in extending the message with an additional segment; if storage cannot be allocated for a new segment, an exception is raised. Note that the allocated slices always begin on an eight-byte boundary.

val alloc_in_segment : MessageSig.rw Message.t -> int -> int -> MessageSig.rw t option

alloc_in_segment m seg_id size attempts to reserve size bytes of space within segment seg_id of message m. Allocation will fail if the segment is full.

val get_segment : 'cap t -> 'cap Segment.t

get_segment slice gets the message segment associated with the slice.

val get_end : 'cap t -> int

get_end slice computes slice.start + slice.len.

val readonly : 'cap t -> MessageSig.ro t

readonly s obtains a view of slice s which is read-only qualified.

get_uintXX s ofs reads an unsigned integer of the specified width, starting at byte offset ofs within the slice.

val get_uint8 : 'cap t -> int -> int
val get_uint16 : 'cap t -> int -> int
val get_uint32 : 'cap t -> int -> MessageSig.Uint32.t
val get_uint64 : 'cap t -> int -> MessageSig.Uint64.t

get_intXX s ofs reads a signed integer of the specified width, starting at byte offset ofs within the slice.

val get_int8 : 'cap t -> int -> int
val get_int16 : 'cap t -> int -> int
val get_int32 : 'cap t -> int -> Int32.t
val get_int64 : 'cap t -> int -> Int64.t

set_uintXX s ofs val writes the value of the width-restricted unsigned integer val into the read/write-qualified slice, starting at byte offset ofs.

val set_uint8 : MessageSig.rw t -> int -> int -> unit
val set_uint16 : MessageSig.rw t -> int -> int -> unit
val set_uint32 : MessageSig.rw t -> int -> MessageSig.Uint32.t -> unit
val set_uint64 : MessageSig.rw t -> int -> MessageSig.Uint64.t -> unit

set_intXX s ofs val writes the value of the width-restricted signed integer val into the read/write-qualified slice, starting at byte offset ofs.

val set_int8 : MessageSig.rw t -> int -> int -> unit
val set_int16 : MessageSig.rw t -> int -> int -> unit
val set_int32 : MessageSig.rw t -> int -> Int32.t -> unit
val set_int64 : MessageSig.rw t -> int -> Int64.t -> unit
val blit : src:'cap t -> src_pos:int -> dst:MessageSig.rw t -> dst_pos:int -> len:int -> unit

blit ~src ~src_pos ~dst ~dst_pos ~len copies len bytes from the source slice (beginning at src_pos) to the destination slice (beginning at dst_pos).

val blit_to_bytes : src:'cap t -> src_pos:int -> dst:Bytes.t -> dst_pos:int -> len:int -> unit

As blit, but the destination is a bytes buffer.

val blit_from_string : src:string -> src_pos:int -> dst:MessageSig.rw t -> dst_pos:int -> len:int -> unit

As blit, but the source is a string buffer.

val zero_out : MessageSig.rw t -> pos:int -> len:int -> unit

zero_out ~pos ~len slice sets len bytes of the slice to zero, beginning at byte offset pos.