rename shift to unshift and add real shift

This commit is contained in:
sam 2024-07-22 08:03:40 +12:00
parent ce1c05c6e6
commit 1de5b35258

42
slibs.h
View file

@ -45,7 +45,8 @@
// Vector
#define sl_vec(type) \
struct { \
struct \
{ \
type *data; \
size_t size; \
size_t capacity; \
@ -66,7 +67,7 @@
(vec).data[(vec).size++] = (element); \
}
#define sl_vec_shift(vec, element) \
#define sl_vec_unshift(vec, element) \
{ \
if ((vec).size >= (vec).capacity) \
sl_vec_grow(vec); \
@ -75,9 +76,16 @@
(vec).size++; \
}
#define sl_vec_shift(vec) \
{ \
memmove((vec).data, (vec).data + 1, (vec).size * sizeof(*(vec).data)); \
(vec).size--; \
}
#define sl_vec_pop(vec) \
{ \
if ((vec).size > 0) { \
if ((vec).size > 0) \
{ \
(vec).size--; \
} \
}
@ -130,11 +138,13 @@ typedef sl_vec(char) sl_string;
(str).data; \
})
void sl_append_c_str(sl_string* sl_str, const char* c_str);
void sl_append_c_str(sl_string *sl_str, const char *c_str);
#ifdef SL_IMPLEMENTATION
void sl_append_c_str(sl_string* sl_str, const char* c_str) {
for(int i = 0; i < strlen(c_str); i++) {
void sl_append_c_str(sl_string *sl_str, const char *c_str)
{
for (int i = 0; i < strlen(c_str); i++)
{
sl_vec_push(*sl_str, c_str[i]);
}
}
@ -143,18 +153,22 @@ void sl_append_c_str(sl_string* sl_str, const char* c_str) {
// Pointers
#define sl_ptr(type) \
struct { \
struct \
{ \
type *ptr; \
int ref_count; \
}
#define sl_ptr_make(raw_ptr) \
{ raw_ptr, 1 }
{ \
raw_ptr, 1 \
}
#define sl_ptr_release(smart_ptr) \
({ \
smart_ptr.ref_count--; \
if (smart_ptr.ref_count <= 0) { \
if (smart_ptr.ref_count <= 0) \
{ \
free(smart_ptr.ptr); \
} \
})
@ -177,9 +191,11 @@ void sl_append_c_str(sl_string* sl_str, const char* c_str) {
void sl_read_file(const char *filename, sl_string *buffer);
#ifdef SL_IMPLEMENTATION
void sl_read_file(const char *filename, sl_string *buffer) {
void sl_read_file(const char *filename, sl_string *buffer)
{
FILE *file = fopen(filename, "r");
if (!file) {
if (!file)
{
fprintf(stderr, "Error: could not open file %s\n", filename);
exit(1);
}
@ -188,7 +204,8 @@ void sl_read_file(const char *filename, sl_string *buffer) {
size_t file_size = ftell(file);
fseek(file, 0, SEEK_SET);
for (size_t i = 0; i < file_size; i++) {
for (size_t i = 0; i < file_size; i++)
{
sl_vec_push(*buffer, fgetc(file));
}
@ -197,3 +214,4 @@ void sl_read_file(const char *filename, sl_string *buffer) {
#endif
#endif // SLIBS_H