/* * Andrew Haynes * dmm.dev@icloud.com * No LICENSE * Vector Library For C */ #ifndef CHAR_H #define CHAR_H #include #include #include #include #include #include typedef struct { char* arr; size_t size; size_t capacity; size_t max_size; } Vec8_t; int is_valid(const Vec8_t* vec); Vec8_t create(const char* buf, const size_t len); Vec8_t push_back(Vec8_t* vec, const char val); Vec8_t pop_back(Vec8_t* ptr); Vec8_t reserve(const Vec8_t* ptr, const size_t max_size); Vec8_t shrink_to_fit(Vec8_t* ptr); int swap(Vec8_t* ptr, Vec8_t* ptr_other); char* data(const Vec8_t* ptr); size_t capacity(const Vec8_t* ptr); size_t max_size(const Vec8_t* ptr); void delete (const Vec8_t* vec); Vec8_t clear(const Vec8_t* vec); char at(const Vec8_t* vec, const size_t idx); void print_vec(const Vec8_t* vec); int begin(const Vec8_t* vec); int end(const Vec8_t* vec); char front(const Vec8_t* vec); char back(const Vec8_t* vec); int empty(const Vec8_t* vec); __attribute__((overloadable)) Vec8_t erase(const Vec8_t* vec, const size_t iter); __attribute__((overloadable)) Vec8_t erase(const Vec8_t* vec, const size_t iter_start, const size_t iter_end); __attribute__((overloadable)) Vec8_t resize(const Vec8_t* vec, const size_t size); __attribute__((overloadable)) Vec8_t resize(Vec8_t* vec, const size_t size, const char val); __attribute__((overloadable)) Vec8_t assign(const Vec8_t* vec, const Vec8_t* iterator, const size_t iter_start, const size_t iter_end); __attribute__((overloadable)) Vec8_t assign(const Vec8_t* vec, const size_t amount, const char val); __attribute__((overloadable)) Vec8_t insert(const Vec8_t* vec, const size_t iter, const char val); __attribute__((overloadable)) Vec8_t insert(const Vec8_t* vec, const size_t iter, const size_t amount, const char val); __attribute__((overloadable)) Vec8_t insert(const Vec8_t* dst_vec, const Vec8_t* src_vec, const size_t iter, const size_t iter_start, const size_t iter_end); #endif