Compare commits

..

No commits in common. "3557cca19cea16f77a6386f968c8b5c1e8348e37" and "93da2c9ca6943ca0321c73047e752283081dbe1a" have entirely different histories.

18 changed files with 58 additions and 109 deletions

1
.gitignore vendored
View file

@ -1,3 +1,2 @@
build build
obj obj
.config

View file

@ -17,11 +17,6 @@ TESTS_SRCS = $(wildcard $(TESTS_DIR)/*.c)
TESTS_OBJS = $(patsubst $(TESTS_DIR)/%.c,$(OBJ_DIR)/%.test.o,$(TESTS_SRCS)) TESTS_OBJS = $(patsubst $(TESTS_DIR)/%.c,$(OBJ_DIR)/%.test.o,$(TESTS_SRCS))
TESTS_BINS = $(patsubst $(TESTS_DIR)/%.c,$(BUILD_DIR)/%_test,$(TESTS_SRCS)) TESTS_BINS = $(patsubst $(TESTS_DIR)/%.c,$(BUILD_DIR)/%_test,$(TESTS_SRCS))
# Flags for configuration
CONFIG_FLAGS := $(shell grep -E '^[a-zA-Z0-9_]+=' .config | sed 's/\([A-Za-z0-9_]*\)=y/-D\1=1/;s/\([A-Za-z0-9_]*\)=n/-D\1=0/')
CFLAGS += $(CONFIG_FLAGS)
all: $(LIBRARY) all: $(LIBRARY)
$(OBJ_DIR) $(BUILD_DIR): $(OBJ_DIR) $(BUILD_DIR):
@ -64,12 +59,3 @@ fclean: clean
re: fclean all re: fclean all
.PHONY: all clean fclean re tests .PHONY: all clean fclean re tests
CONFIG_FILE := .config
genconfig:
@echo -e " C\t${CONFIG_FILE}"
@echo "USE_SLIST=y" > $(CONFIG_FILE)
@echo "USE_DLIST=y" >> $(CONFIG_FILE)
@echo "USE_STACK=y" >> $(CONFIG_FILE)

View file

@ -1,14 +1,7 @@
#ifndef LIBFT_H #ifndef LIBFT_H
#define LIBFT_H # define LIBFT_H
#include <stdlib.h>
#if DEBUG # include <stdlib.h>
#include <stdio.h>
#define DEBUG_PRINT(fmt, ...) \
fprintf(stderr, "[DEBUG] %s:%d:%s(): " fmt "\n", \
__FILE__, __LINE__, __func__, ##__VA_ARGS__)
#else
#define DEBUG_PRINT(fmt, ...) ((void)0)
#endif
void *ft_realloc(void *ptr, size_t old_size, size_t new_size); void *ft_realloc(void *ptr, size_t old_size, size_t new_size);
@ -56,30 +49,29 @@ typedef struct s_string
char *data; char *data;
} t_string; } t_string;
/* Single Linked List */ /* List */
#if USE_SLIST typedef struct s_list
typedef struct s_slist
{ {
void *data; void *data;
struct s_slist *next; struct s_list *next;
} t_slist; } t_list;
t_slist *ft_slist_new(void *data); /* List functions */
void ft_slist_push(t_slist **lst, t_slist *node); t_list *ft_lstnew(void *data);
void ft_slist_unshift(t_slist **lst, t_slist *node); void ft_lstpush(t_list **lst, t_list *node);
t_slist *ft_slist_pop(t_slist **lst); void ft_lstunshift(t_list **lst, t_list *node);
t_slist *ft_slist_shift(t_slist **lst); t_list *ft_lstpop(t_list **lst);
int ft_slist_size(t_slist *lst); t_list *ft_lstshift(t_list **lst);
void ft_slist_clear(t_slist **lst); int ft_lstsize(t_list *lst);
void ft_slist_reverse(t_slist **lst); void ft_lstclear(t_list **lst);
int ft_slist_empty(t_slist *lst); void ft_lstreverse(t_list **lst);
void ft_slist_iter(t_slist *lst, void (*f)(void *)); int ft_lstempty(t_list *lst);
void ft_slist_rm(t_slist **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *)); void ft_lstiter(t_list *lst, void (*f)(void *));
t_slist *ft_slist_find(t_slist *lst, void *data, int (*cmp)(void *, void *)); void ft_lstrm(t_list **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *));
int ft_slist_insert(t_slist **lst, t_slist *node, int index); t_list *ft_lstfind(t_list *lst, void *data, int (*cmp)(void *, void *));
t_slist *ft_slist_get(t_slist *lst, int index); int ft_lstinsert(t_list **lst, t_list *node, int index);
t_list *ft_lstget(t_list *lst, int index);
#endif
/* Vector */ /* Vector */
typedef struct s_vec typedef struct s_vec
{ {

View file

@ -1,15 +1,13 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
#include <stdlib.h> #include <stdlib.h>
void ft_slist_clear(t_slist **lst) void ft_lstclear(t_list **lst)
{ {
t_slist *tmp; t_list *tmp;
while (lst && *lst) while (lst && *lst)
{ {
tmp = (*lst)->next; tmp = (*lst)->next;
free(*lst); free(*lst);
*lst = tmp; *lst = tmp;
} }
} }
#endif

6
srcs/lst/ft_lstempty.c Normal file
View file

@ -0,0 +1,6 @@
#include "libft.h"
int ft_lstempty(t_list *lst)
{
return (lst == NULL);
}

View file

@ -1,7 +1,6 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
t_slist *ft_slist_find(t_slist *lst, void *data, int (*cmp)(void *, void *)) t_list *ft_lstfind(t_list *lst, void *data, int (*cmp)(void *, void *))
{ {
while (lst) while (lst)
{ {
@ -10,5 +9,4 @@ t_slist *ft_slist_find(t_slist *lst, void *data, int (*cmp)(void *, void *))
lst = lst->next; lst = lst->next;
} }
return (NULL); return (NULL);
} }
#endif

View file

@ -1,7 +1,6 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
t_slist *ft_slist_get(t_slist *lst, int index) t_list *ft_lstget(t_list *lst, int index)
{ {
int i = 0; int i = 0;
while (lst && i < index) while (lst && i < index)
@ -11,4 +10,3 @@ t_slist *ft_slist_get(t_slist *lst, int index)
} }
return ((i == index) ? lst : NULL); return ((i == index) ? lst : NULL);
} }
#endif

View file

@ -1,10 +1,9 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
int ft_slist_insert(t_slist **lst, t_slist *node, int index) int ft_lstinsert(t_list **lst, t_list *node, int index)
{ {
t_slist *curr = *lst; t_list *curr = *lst;
t_slist *prev = NULL; t_list *prev = NULL;
int i = 0; int i = 0;
if (index < 0 || !node) if (index < 0 || !node)
@ -29,4 +28,3 @@ int ft_slist_insert(t_slist **lst, t_slist *node, int index)
} }
return (-1); return (-1);
} }
#endif

View file

@ -1,7 +1,6 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
void ft_slist_iter(t_slist *lst, void (*f)(void *)) void ft_lstiter(t_list *lst, void (*f)(void *))
{ {
while (lst) while (lst)
{ {
@ -9,4 +8,3 @@ void ft_slist_iter(t_slist *lst, void (*f)(void *))
lst = lst->next; lst = lst->next;
} }
} }
#endif

View file

@ -1,9 +1,8 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
t_slist *ft_slist_new(void *data) t_list *ft_lstnew(void *data)
{ {
t_slist *node = (t_slist *)malloc(sizeof(t_slist)); t_list *node = (t_list *)malloc(sizeof(t_list));
if (!node) if (!node)
return (NULL); return (NULL);
@ -12,5 +11,4 @@ t_slist *ft_slist_new(void *data)
node->next = NULL; node->next = NULL;
return node; return node;
} }
#endif

View file

@ -1,10 +1,9 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
t_slist *ft_list_pop(t_slist **lst) t_list *ft_lstpop(t_list **lst)
{ {
t_slist *current; t_list *current;
t_slist *prev; t_list *prev;
if (!lst || !*lst) if (!lst || !*lst)
return NULL; return NULL;
@ -22,4 +21,3 @@ t_slist *ft_list_pop(t_slist **lst)
prev->next = NULL; prev->next = NULL;
return current; return current;
} }
#endif

View file

@ -1,9 +1,8 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
void ft_slist_push(t_slist **lst, t_slist *node) void ft_lstpush(t_list **lst, t_list *node)
{ {
t_slist *current; t_list *current;
if (!lst || !node) if (!lst || !node)
return; return;
@ -21,4 +20,3 @@ void ft_slist_push(t_slist **lst, t_slist *node)
current = current->next; current = current->next;
current->next = node; current->next = node;
} }
#endif

View file

@ -1,11 +1,10 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
void ft_slist_reverse(t_slist **lst) void ft_lstreverse(t_list **lst)
{ {
t_slist *prev = NULL; t_list *prev = NULL;
t_slist *curr = *lst; t_list *curr = *lst;
t_slist *next; t_list *next;
while (curr) while (curr)
{ {
@ -16,4 +15,3 @@ void ft_slist_reverse(t_slist **lst)
} }
*lst = prev; *lst = prev;
} }
#endif

View file

@ -1,10 +1,9 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
void ft_slist_rm(t_slist **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *)) void ft_lstrm(t_list **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *))
{ {
t_slist *curr = *lst; t_list *curr = *lst;
t_slist *prev = NULL; t_list *prev = NULL;
while (curr) while (curr)
{ {
@ -22,5 +21,4 @@ void ft_slist_rm(t_slist **lst, void *data, int (*cmp)(void *, void *), void (*d
prev = curr; prev = curr;
curr = curr->next; curr = curr->next;
} }
} }
#endif

View file

@ -1,9 +1,8 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
t_slist *ft_slist_shift(t_slist **lst) t_list *ft_lstshift(t_list **lst)
{ {
t_slist *first; t_list *first;
if (!lst || !*lst) if (!lst || !*lst)
return NULL; return NULL;
@ -12,4 +11,3 @@ t_slist *ft_slist_shift(t_slist **lst)
first->next = NULL; first->next = NULL;
return first; return first;
} }
#endif

View file

@ -1,7 +1,6 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
int ft_slist_size(t_slist *lst) int ft_lstsize(t_list *lst)
{ {
int size = 0; int size = 0;
while (lst) while (lst)
@ -11,4 +10,3 @@ int ft_slist_size(t_slist *lst)
} }
return size; return size;
} }
#endif

View file

@ -1,11 +1,9 @@
#if USE_SLIST
#include "libft.h" #include "libft.h"
void ft_slist_unshift(t_slist **lst, t_slist *node) void ft_lstunshift(t_list **lst, t_list *node)
{ {
if (!lst || !node) if (!lst || !node)
return; return;
node->next = *lst; node->next = *lst;
*lst = node; *lst = node;
} }
#endif

View file

@ -1,8 +0,0 @@
#if USE_SLIST
#include "libft.h"
int ft_slist_empty(t_slist *lst)
{
return (lst == NULL);
}
#endif