master uint/magnolia / include / net / packet.h
 1#ifndef PACKET_H
 2#define PACKET_H
 3
 4#include <stddef.h>
 5
 6#include "types.h"
 7
 8typedef struct {
 9	const u8* data;
10	size_t    size;
11	size_t    cursor;
12} PacketReader;
13
14/* initialize a packet reader */
15PacketReader packet_reader_init(const void* data, size_t size);
16
17/* read an unsigned 8bit integer from the packet.
18   returns 1 on success, 0 on failure */
19i8 packet_read_u8(PacketReader* reader, u8* value);
20
21/* read an unsigned 16bit integer from the packet.
22   returns 1 on success, 0 on failure */
23i8 packet_read_u16(PacketReader* reader, u16* value);
24
25/* read a signed 32bit integer from the packet.
26   returns 1 on success, 0 on failure */
27i8 packet_read_i32(PacketReader* reader, i32* value);
28
29/* read an unsigned 64bit integer from the packet.
30   returns 1 on success, 0 on failure */
31i8 packet_read_u64(PacketReader* reader, u64* value);
32
33/* read a single precision float from the packet.
34   returns 1 on success, 0 on failure */
35i8 packet_read_f32(PacketReader* reader, float* value);
36
37/* read a double precision float from the packet.
38   returns 1 on success, 0 on failure */
39i8 packet_read_f64(PacketReader* reader, double* value);
40
41/* read a variable length integer from the packet.
42   returns 1 on success, 0 on failure */
43i8 packet_read_varint(PacketReader* reader, i32* value);
44
45#endif /* PACKET_H */