Compare commits
No commits in common. "3557cca19cea16f77a6386f968c8b5c1e8348e37" and "93da2c9ca6943ca0321c73047e752283081dbe1a" have entirely different histories.
3557cca19c
...
93da2c9ca6
18 changed files with 58 additions and 109 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,2 @@
|
||||||
build
|
build
|
||||||
obj
|
obj
|
||||||
.config
|
|
||||||
14
Makefile
14
Makefile
|
|
@ -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)
|
|
||||||
|
|
||||||
|
|
|
||||||
48
hdrs/libft.h
48
hdrs/libft.h
|
|
@ -1,14 +1,7 @@
|
||||||
#ifndef LIBFT_H
|
#ifndef LIBFT_H
|
||||||
# define LIBFT_H
|
# define LIBFT_H
|
||||||
|
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
#if DEBUG
|
|
||||||
#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
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
#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;
|
||||||
|
|
@ -12,4 +11,3 @@ void ft_slist_clear(t_slist **lst)
|
||||||
*lst = tmp;
|
*lst = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
6
srcs/lst/ft_lstempty.c
Normal file
6
srcs/lst/ft_lstempty.c
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "libft.h"
|
||||||
|
|
||||||
|
int ft_lstempty(t_list *lst)
|
||||||
|
{
|
||||||
|
return (lst == NULL);
|
||||||
|
}
|
||||||
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
@ -11,4 +10,3 @@ t_slist *ft_slist_find(t_slist *lst, void *data, int (*cmp)(void *, void *))
|
||||||
}
|
}
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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);
|
||||||
|
|
@ -13,4 +12,3 @@ t_slist *ft_slist_new(void *data)
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
@ -23,4 +22,3 @@ void ft_slist_rm(t_slist **lst, void *data, int (*cmp)(void *, void *), void (*d
|
||||||
curr = curr->next;
|
curr = curr->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
#if USE_SLIST
|
|
||||||
#include "libft.h"
|
|
||||||
|
|
||||||
int ft_slist_empty(t_slist *lst)
|
|
||||||
{
|
|
||||||
return (lst == NULL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue