Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
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);
}
Пример #5
0
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);
}
Пример #6
0
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);
}
Пример #7
0
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);
}
Пример #8
0
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;
	}
}