Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
garbage_collector_wrappers.c
Bu dosyanın dokümantasyonuna git.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* garbage_collector_wrappers.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: hgenc <hgenc@student.42kocaeli.com.tr> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2026/03/04 16:00:00 by hgenc #+# #+# */
9/* Updated: 2026/03/04 16:00:00 by hgenc ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13/**
14 * @file garbage_collector_wrappers.c
15 * @brief Libft fonksiyonlarının GC-aware wrapper'ları
16 *
17 * ft_strdup, ft_strjoin, ft_substr, ft_itoa ve ft_split
18 * fonksiyonlarını çağırır ve sonucu otomatik GC'ye kaydeder.
19 */
20
22#include "../../libft/libft.h"
23#include <stdlib.h>
24
25/**
26 * @brief ft_strdup + GC kayıt
27 * @param gc GC yapısı
28 * @param s Kopyalanacak string
29 * @return GC'ye kaydedilmiş kopya, başarısızsa NULL
30 */
31char *gc_strdup(t_gc *gc, const char *s)
32{
33 char *dup;
34
35 dup = ft_strdup(s);
36 return (gc_register(gc, dup));
37}
38
39/**
40 * @brief ft_strjoin + GC kayıt
41 * @param gc GC yapısı
42 * @param s1 Birinci string
43 * @param s2 İkinci string
44 * @return GC'ye kaydedilmiş birleştirilmiş string, başarısızsa NULL
45 */
46char *gc_strjoin(t_gc *gc, const char *s1, const char *s2)
47{
48 char *joined;
49
50 joined = ft_strjoin(s1, s2);
51 return (gc_register(gc, joined));
52}
53
54/**
55 * @brief ft_substr + GC kayıt
56 * @param gc GC yapısı
57 * @param s Kaynak string
58 * @param start Başlangıç indeksi
59 * @param len Uzunluk
60 * @return GC'ye kaydedilmiş alt string, başarısızsa NULL
61 */
62char *gc_substr(t_gc *gc, const char *s, unsigned int start, size_t len)
63{
64 char *sub;
65
66 sub = ft_substr(s, start, len);
67 return (gc_register(gc, sub));
68}
69
70/**
71 * @brief ft_itoa + GC kayıt
72 * @param gc GC yapısı
73 * @param n Dönüştürülecek sayı
74 * @return GC'ye kaydedilmiş string, başarısızsa NULL
75 */
76char *gc_itoa(t_gc *gc, int n)
77{
78 char *str;
79
80 str = ft_itoa(n);
81 return (gc_register(gc, str));
82}
83
84/**
85 * @brief ft_split + GC kayıt (dizi ve tüm elemanları kaydedilir)
86 * @param gc GC yapısı
87 * @param s Bölünecek string
88 * @param c Ayırıcı karakter
89 * @return GC'ye kaydedilmiş string dizisi, başarısızsa NULL
90 */
91char **gc_split(t_gc *gc, const char *s, char c)
92{
93 char **result;
94 int i;
95
96 result = ft_split(s, c);
97 if (!result)
98 return (NULL);
99 i = 0;
100 while (result[i])
101 {
102 gc_register(gc, result[i]);
103 i++;
104 }
105 gc_register(gc, result);
106 return (result);
107}
void * gc_register(t_gc *gc, void *ptr)
Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).
Arena-based garbage collector header.
struct s_gc t_gc
GC ana yapısı — allocation listesinin başını tutar.
char * gc_itoa(t_gc *gc, int n)
ft_itoa + GC kayıt
char * gc_strjoin(t_gc *gc, const char *s1, const char *s2)
ft_strjoin + GC kayıt
char * gc_substr(t_gc *gc, const char *s, unsigned int start, size_t len)
ft_substr + GC kayıt
char * gc_strdup(t_gc *gc, const char *s)
ft_strdup + GC kayıt
char ** gc_split(t_gc *gc, const char *s, char c)
ft_split + GC kayıt (dizi ve tüm elemanları kaydedilir)