summaryrefslogtreecommitdiff
path: root/src/util/buffer.h
blob: 19bc40039e548d0fc142ce5c09a1d120006fb9de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#include <al/types.h>
#include <al/lib.h>

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);