blob: 58badc780904211506c0847bbe4f2fd8269a826c [file] [log] [blame]
/* Copyright (c) 2016 Google Inc
* Barret Rhoden <brho@cs.berkeley.edu>
* See LICENSE for details.
*
* Various iovec utility functions. */
#pragma once
#include <sys/uio.h>
#include <stdint.h>
#include <ros/common.h>
void iov_strip_bytes(struct iovec *iov, int iovcnt, size_t amt);
void iov_drop_trailing_bytes(struct iovec *iov, int iovcnt, size_t amt);
void iov_trim_len_to(struct iovec *iov, int iovcnt, size_t new_len);
bool iov_has_bytes(struct iovec *iov, int iovcnt, size_t amt);
size_t iov_get_len(struct iovec *iov, int iovcnt);
void iov_linearize(struct iovec *iov, int iovcnt, uint8_t *buf, size_t len);
void iov_set_byte(struct iovec *iov, int iovcnt, size_t idx, uint8_t val);
uint8_t iov_get_byte(struct iovec *iov, int iovcnt, size_t idx);
void iov_memcpy_from(struct iovec *iov, int iovcnt, size_t idx,
void *to, size_t amt);
void iov_memcpy_to(struct iovec *iov, int iovcnt, size_t to,
void *from, size_t amt);
uint16_t iov_get_be16(struct iovec *iov, int iovcnt, size_t idx);
uint16_t iov_get_be32(struct iovec *iov, int iovcnt, size_t idx);
void iov_put_be16(struct iovec *iov, int iovcnt, size_t idx, uint16_t val);
void iov_put_be32(struct iovec *iov, int iovcnt, size_t idx, uint32_t val);