#pragma once #include #include #include typedef struct CharArray { size_t size; size_t capacity; char *data; } char_array_t; typedef struct ByteArray { size_t size; size_t capacity; uint8_t *data; } byte_array_t; char_array_t *char_array_create(int size); void char_array_destroy(char_array_t *array); void char_array_append(char_array_t *array, char *value, size_t length); void char_array_print(const char_array_t *array); void char_array_print_hex(const char_array_t *array); void char_array_wipe(char_array_t *array); bool char_array_has_char(char_array_t *array, char c); char *char_array_get_until_char(char_array_t *array, char c); void char_array_put_until_char(char *arr, char_array_t *array, char c); char *char_array_get_bytes(char_array_t *array, size_t length); void char_array_shift_bytes(char_array_t *array, size_t length); byte_array_t *byte_array_create(int size); void byte_array_destroy(byte_array_t *array); void byte_array_append(byte_array_t *array, uint8_t *value, size_t length); void byte_array_print(const byte_array_t *array); uint8_t *byte_array_get_until_byte(byte_array_t *array, uint8_t b); uint8_t *byte_array_get_bytes(byte_array_t *array, size_t length); void byte_array_shift_bytes(byte_array_t *array, size_t length); SOCKET get_listen_socket(); SOCKET get_listen_socket_udp();