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;
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.
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.
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.
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 -> 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
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 -> Stdlib .Int32.t
val get_int64 : 'cap t -> int -> Stdlib .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 : rw t -> int -> int -> unit
val set_uint16 : rw t -> int -> int -> 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 : rw t -> int -> int -> unit
val set_int16 : rw t -> int -> int -> unit
val set_int32 : rw t -> int -> Stdlib .Int32.t -> unit
val set_int64 : rw t -> int -> Stdlib .Int64.t -> unit
val blit :
src :'cap t ->
src_pos :int ->
dst :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 :Stdlib .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 :rw t ->
dst_pos :int ->
len :int ->
unit
As blit
, but the source is a string
buffer.
val zero_out : 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
.