]> git.dkaiser.de - 42/Philosophers.git/commitdiff
Outsource init func to seperate file
authorDominik Kaiser <dkaiser@3-F-5.42heilbronn.de>
Tue, 28 Jan 2025 12:21:34 +0000 (13:21 +0100)
committerDominik Kaiser <dkaiser@3-F-5.42heilbronn.de>
Tue, 28 Jan 2025 12:21:34 +0000 (13:21 +0100)
philo/Makefile
philo/include/philo.h
philo/src/init.c [new file with mode: 0644]
philo/src/main.c

index 0d557265762d00209860c90851da1c04210ad8b2..9cd7e26da4dcc9aeb657ea337790b3b5f942499e 100644 (file)
@@ -9,7 +9,7 @@ CFLAGS  =  -Wall -Wextra -Werror
 HEADERS =  -Iinclude
 
 VPATH   := src
-SRC     := main.c ft_utils.c simulation.c philo_eat.c
+SRC     := main.c init.c ft_utils.c simulation.c philo_eat.c
 
 OBJ_DIR := _obj
 OBJ     := $(addprefix $(OBJ_DIR)/, $(SRC:%.c=%.o))
index df1b451b36b34731b7f91c6f2721deb66d6ba647..07e4e960b5f9131add46046dd27ec05877b00380 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/01/17 10:23:19 by dkaiser           #+#    #+#             */
-/*   Updated: 2025/01/28 13:07:28 by dkaiser          ###   ########.fr       */
+/*   Updated: 2025/01/28 13:16:12 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -51,6 +51,7 @@ typedef struct s_philo
        t_phdata                *data;
 }                                      t_philo;
 
+int                                    init(t_philo **philos, t_phdata *data);
 int                                    run_simulation(int nbr_of_philos, t_philo *philos,
                                                t_phdata *data);
 int                                    philo_die(t_philo *philo);
diff --git a/philo/src/init.c b/philo/src/init.c
new file mode 100644 (file)
index 0000000..6f91f7e
--- /dev/null
@@ -0,0 +1,71 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   init.c                                             :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2025/01/28 13:12:57 by dkaiser           #+#    #+#             */
+/*   Updated: 2025/01/28 13:15:30 by dkaiser          ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "philo.h"
+
+static void    init_philo(t_philo *philo, t_phdata *data, int id);
+static int     init_philos(t_philo **philos, t_phdata *data);
+
+int    init(t_philo **philos, t_phdata *data)
+{
+       int     result;
+
+       *philos = (t_philo *)malloc(sizeof(t_philo) * data->nbr_of_philos);
+       if (*philos == NULL)
+               return (ft_err(ERR_MALLOC));
+       data->forks = (t_fork *)malloc(sizeof(t_fork) * data->nbr_of_philos);
+       if (data->forks == NULL)
+       {
+               free(*philos);
+               return (ft_err(ERR_MALLOC));
+       }
+       result = pthread_mutex_init(&(data->pme_mutex), NULL);
+       if (result != 0)
+       {
+               free(*philos);
+               free(data->forks);
+               return (result);
+       }
+       result = init_philos(philos, data);
+       return (result);
+}
+
+static int     init_philos(t_philo **philos, t_phdata *data)
+{
+       int     i;
+       int     result;
+
+       i = 0;
+       while (i < data->nbr_of_philos)
+       {
+               init_philo(&(*philos)[i], data, i + 1);
+               data->forks[i].owner = 0;
+               result = pthread_mutex_init(&(data->forks[i].mutex), NULL);
+               if (result != 0)
+               {
+                       free(*philos);
+                       free(data->forks);
+                       return (result);
+               }
+               i++;
+       }
+       return (EXIT_SUCCESS);
+}
+
+static void    init_philo(t_philo *philo, t_phdata *data, int id)
+{
+       philo->id = id;
+       philo->is_alive = 1;
+       philo->times_must_eat = data->times_must_eat;
+       philo->data = data;
+       philo->last_time_eaten = ft_cur_time_in_ms();
+}
index a43fe8d1cb0a7744387da49cb0efe3d8ff61ae33..ae0e54be5f73ebaff495fba8c9402ce910ebdf6f 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2025/01/14 17:13:30 by dkaiser           #+#    #+#             */
-/*   Updated: 2025/01/27 12:07:13 by dkaiser          ###   ########.fr       */
+/*   Updated: 2025/01/28 13:20:47 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -38,61 +38,6 @@ int  load_data(t_phdata *data, int argc, char *argv[])
        return (EXIT_SUCCESS);
 }
 
-void   init_philo(t_philo *philo, t_phdata *data, int id)
-{
-       philo->id = id;
-       philo->is_alive = 1;
-       philo->times_must_eat = data->times_must_eat;
-       philo->data = data;
-       philo->last_time_eaten = ft_cur_time_in_ms();
-}
-
-int    init_philos(t_philo **philos, t_phdata *data)
-{
-       int     i;
-       int     result;
-
-       i = 0;
-       while (i < data->nbr_of_philos)
-       {
-               init_philo(&(*philos)[i], data, i + 1);
-               data->forks[i].owner = 0;
-               result = pthread_mutex_init(&(data->forks[i].mutex), NULL);
-               if (result != 0)
-               {
-                       free(*philos);
-                       free(data->forks);
-                       return (result);
-               }
-               i++;
-       }
-       return (EXIT_SUCCESS);
-}
-
-int    init(t_philo **philos, t_phdata *data)
-{
-       int     result;
-
-       *philos = (t_philo *)malloc(sizeof(t_philo) * data->nbr_of_philos);
-       if (*philos == NULL)
-               return (ft_err(ERR_MALLOC));
-       data->forks = (t_fork *)malloc(sizeof(t_fork) * data->nbr_of_philos);
-       if (data->forks == NULL)
-       {
-               free(*philos);
-               return (ft_err(ERR_MALLOC));
-       }
-       result = pthread_mutex_init(&(data->pme_mutex), NULL);
-       if (result != 0)
-       {
-               free(*philos);
-               free(data->forks);
-               return (result);
-       }
-       result = init_philos(philos, data);
-       return (result);
-}
-
 int    main(int argc, char *argv[])
 {
        t_phdata        data;