bool f_string_insert(t_string *v_this, const char *insert, ui at) { ui size; if (at >= v_this->v_size) return (D_STRING(add_str)(v_this, insert)); size = uf_str_len(insert); if (size == 0) return (true); if (v_this->v_size + size + 1 > v_this->v_capacity && uf_string_realloc(v_this, size + 1) == false) return (false); uf_memcpy(v_this->v_str + at + size, v_this->v_str + at, v_this->v_size - at); uf_memcpy(v_this->v_str + at, insert, size); v_this->v_size = v_this->v_size + size; return (true); }
void f_string_erase(t_string *v_this, ui from, ui to) { ui size; if (from >= to || to >= v_this->v_size) return ; size = v_this->v_size - to; uf_memcpy(v_this->v_str + from, v_this->v_str + to, size); uf_memset(v_this->v_str + from + size, '\0', to - from); v_this->v_size = v_this->v_size - (to - from); }
int main(int argc, char const** argv) { char data[256]; int i; i = 0; while (i < 256) { data[i] = i; i = i + 1; } uf_print_memory(data, sizeof(data)); uf_memset(data, 0, sizeof(data)); uf_memcpy(data, "AAAAAAAA", 8); uf_print_char('\n'); uf_memcpy(data + 50, "AAAAAAAA", 8); uf_print_memory(data, sizeof(data)); (void)argc; (void)argv; return (0); }
bool f_arqueue_push(t_arqueue *v_this, void *push) { if (v_this->v_size >= v_this->v_capacity) return (M_ERROR(false, "Couldn't push element")); uf_memcpy(&((char *)v_this->v_array)[v_this->v_end * v_this->v_sizeof], push, v_this->v_sizeof); v_this->v_end = v_this->v_end + 1; if (v_this->v_end >= v_this->v_capacity) v_this->v_end = 0; v_this->v_size = v_this->v_size + 1; return (true); }
static bool uf_string_dump_word(const char *str, char **tab, size_t size, size_t *word) { if ((tab[*word] = uf_malloc_s(size + 1, sizeof(*tab[*word]))) == NULL) { uf_free_tab_fail((void **)tab, *word); return (false); } uf_memcpy(tab[*word], str, size * sizeof(*tab[*word])); tab[*word][size] = '\0'; *word = *word + 1; tab[*word] = NULL; return (true); }
bool f_array_push_back(t_array *v_this, void *data) { char *to; size_t new_size; new_size = v_this->f_realloc(v_this->v_capacity); if (v_this->v_size + 1 > v_this->v_capacity && D_ARRAY(realloc)(v_this, new_size) == false) return (false); to = (char *)v_this->v_data; to = to + v_this->v_size * v_this->v_type_size; uf_memcpy(to, data, v_this->v_type_size); v_this->v_size = v_this->v_size + 1; return (true); }
bool f_threadpool_add_task(t_threadpool *v_this, t_threadpool_task *task) { t_threadpool_task *add; t_threadpool_data *data; if ((add = uf_malloc_s(1, sizeof(*add))) == NULL) return (M_ERROR(false, "Bad alloc")); uf_memcpy(add, task, sizeof(*add)); if (D_LOCK(lock)(&v_this->v_data, (void **)&data) == true) { if (D_QUEUE(push)(&data->v_tasks, add) == false) { uf_free_s((void **)&add); D_LOCK(release)(&v_this->v_data, (void **)&data); return (M_ERROR(false, "Couldn't add tasks")); } D_LOCK(release)(&v_this->v_data, (void **)&data); return (true); } uf_free_s((void **)&add); return (false); }
void f_array_delete_if(t_array *v_this, bool (*ft_cmp)(void *d1, void *d2), void *data) { size_t i; size_t size; char *ptr; i = 0; ptr = (char *)v_this->v_data; size = v_this->v_size * v_this->v_type_size; while (i < size) { if (ft_cmp((void *)(ptr + i), data) == true) { uf_memcpy(ptr + i, ptr + i + v_this->v_type_size, size - i - v_this->v_type_size); uf_memset(ptr + size - v_this->v_type_size, 0, v_this->v_type_size); v_this->v_size = v_this->v_size - 1; size = v_this->v_size * v_this->v_type_size; } else i = i + v_this->v_type_size; } }