#pragma once #include #include struct nn_buffer { size_t size; size_t alloc; u8 *data; }; // A pun+dereference breaks on 32bit Android but isn't warned about by -Wstrict-aliasing=3. #define NNWT_BUFFER_READ_TYPE(buffer, index, type, r) \ al_memcpy((void *)&(r), (void *)nn_buffer_get_ptr(buffer, index), sizeof(type)) void nn_buffer_init(struct nn_buffer *buffer); void nn_buffer_ensure_space(struct nn_buffer *buffer, size_t size); void nn_buffer_shrink_to_size(struct nn_buffer *buffer); void nn_buffer_write(struct nn_buffer *buffer, void *data, size_t index, size_t size); void nn_buffer_append(struct nn_buffer *buffer, void *data, size_t size); u8 *nn_buffer_get_ptr(struct nn_buffer *buffer, size_t index); void nn_buffer_read(struct nn_buffer *buffer, void *ptr, size_t index, size_t size); void nn_buffer_free(struct nn_buffer *buffer);