Minishell 1.0
42 School Minishell Project - A simple shell implementation
Yüklüyor...
Arıyor...
Eşleşme Yok
garbage_collector.h Dosya Referansı

Arena-based garbage collector header. Ayrıntılar...

#include <stddef.h>
garbage_collector.h için içerme bağımlılık grafiği:
Bu şekil hangi dosyaların doğrudan ya da dolaylı olarak bu dosyayı içerdiğini gösterir:

Bu dosyanın kaynak koduna git.

Veri Yapıları

struct  s_gc_node
 GC düğüm yapısı — tek bir allocation'ı temsil eder. Ayrıntılar...
struct  s_gc
 GC ana yapısı — allocation listesinin başını tutar. Ayrıntılar...

Typedef'ler

typedef struct s_gc_node t_gc_node
 GC düğüm yapısı — tek bir allocation'ı temsil eder.
typedef struct s_gc t_gc
 GC ana yapısı — allocation listesinin başını tutar.

Fonksiyonlar

void gc_init (t_gc *gc)
 GC yapısını ilk duruma getirir.
void * gc_alloc (t_gc *gc, size_t size)
 malloc + GC'ye kayıt — free gerekmez
void * gc_calloc (t_gc *gc, size_t nmemb, size_t size)
 ft_calloc + GC'ye kayıt — sıfırlanmış bellek, free gerekmez
void * gc_register (t_gc *gc, void *ptr)
 Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).
void gc_free_all (t_gc *gc)
 GC'deki tüm kayıtlı pointer'ları serbest bırakır.
char * gc_strdup (t_gc *gc, const char *s)
 ft_strdup + 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_itoa (t_gc *gc, int n)
 ft_itoa + 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)

Ayrıntılı tanımlama

Arena-based garbage collector header.

Malloc edilen tüm pointer'ları bir linked-list'te tutar. gc_free_all() çağrıldığında hepsini toplu serbest bırakır.

garbage_collector.h dosyasında tanımlanmıştır.

Typedef Dokümantasyonu

◆ t_gc_node

typedef struct s_gc_node t_gc_node

GC düğüm yapısı — tek bir allocation'ı temsil eder.

◆ t_gc

typedef struct s_gc t_gc

GC ana yapısı — allocation listesinin başını tutar.

Fonksiyon Dokümantasyonu

◆ gc_init()

void gc_init ( t_gc * gc)

GC yapısını ilk duruma getirir.

Parametreler
gcGC yapısı pointer'ı

garbage_collector.c dosyasının 30 numaralı satırında tanımlanmıştır.

Referanslar s_gc::head.

◆ gc_alloc()

void * gc_alloc ( t_gc * gc,
size_t size )

malloc + GC'ye kayıt — free gerekmez

Parametreler
gcGC yapısı pointer'ı
sizeAyrılacak byte sayısı
Döndürdüğü değer
malloc'lanmış ve GC'ye kaydedilmiş pointer, başarısızsa NULL

garbage_collector.c dosyasının 65 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Bu fonksiyon için çağırılma şeması:

◆ gc_calloc()

void * gc_calloc ( t_gc * gc,
size_t nmemb,
size_t size )

ft_calloc + GC'ye kayıt — sıfırlanmış bellek, free gerekmez

Parametreler
gcGC yapısı pointer'ı
nmembEleman sayısı
sizeHer elemanın byte boyutu
Döndürdüğü değer
calloc'lanmış ve GC'ye kaydedilmiş pointer, başarısızsa NULL
Not
Örn: gc_calloc(&shell->gc, 100, sizeof(char)) → 100 char'lık buffer

garbage_collector.c dosyasının 86 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Bu fonksiyon için çağırılma şeması:

◆ gc_register()

void * gc_register ( t_gc * gc,
void * ptr )

Mevcut bir pointer'ı GC'ye kaydeder (dışarıda malloc edilmiş).

Parametreler
gcGC yapısı pointer'ı
ptrKaydedilecek pointer
Döndürdüğü değer
Kaydedilen pointer, başarısızsa NULL (ptr de free'lenir)

garbage_collector.c dosyasının 104 numaralı satırında tanımlanmıştır.

Referanslar gc_add_node().

Referans veren gc_itoa(), gc_split(), gc_strdup(), gc_strjoin() ve gc_substr().

Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ gc_free_all()

void gc_free_all ( t_gc * gc)

GC'deki tüm kayıtlı pointer'ları serbest bırakır.

Parametreler
gcGC yapısı pointer'ı

Tüm node'ları ve içlerindeki ptr'leri free'ler. Çağrıdan sonra gc tekrar kullanılabilir (head = NULL).

garbage_collector.c dosyasının 120 numaralı satırında tanımlanmıştır.

Referanslar s_gc::head, s_gc_node::next ve s_gc_node::ptr.

◆ gc_strdup()

char * gc_strdup ( t_gc * gc,
const char * s )

ft_strdup + GC kayıt

Parametreler
gcGC yapısı
sKopyalanacak string
Döndürdüğü değer
GC'ye kaydedilmiş kopya, başarısızsa NULL

garbage_collector_wrappers.c dosyasının 31 numaralı satırında tanımlanmıştır.

Referanslar gc_register().

Bu fonksiyon için çağırılma şeması:

◆ gc_strjoin()

char * gc_strjoin ( t_gc * gc,
const char * s1,
const char * s2 )

ft_strjoin + GC kayıt

Parametreler
gcGC yapısı
s1Birinci string
s2İkinci string
Döndürdüğü değer
GC'ye kaydedilmiş birleştirilmiş string, başarısızsa NULL

garbage_collector_wrappers.c dosyasının 46 numaralı satırında tanımlanmıştır.

Referanslar gc_register().

Bu fonksiyon için çağırılma şeması:

◆ gc_substr()

char * gc_substr ( t_gc * gc,
const char * s,
unsigned int start,
size_t len )

ft_substr + GC kayıt

Parametreler
gcGC yapısı
sKaynak string
startBaşlangıç indeksi
lenUzunluk
Döndürdüğü değer
GC'ye kaydedilmiş alt string, başarısızsa NULL

garbage_collector_wrappers.c dosyasının 62 numaralı satırında tanımlanmıştır.

Referanslar gc_register().

Bu fonksiyon için çağırılma şeması:

◆ gc_itoa()

char * gc_itoa ( t_gc * gc,
int n )

ft_itoa + GC kayıt

Parametreler
gcGC yapısı
nDönüştürülecek sayı
Döndürdüğü değer
GC'ye kaydedilmiş string, başarısızsa NULL

garbage_collector_wrappers.c dosyasının 76 numaralı satırında tanımlanmıştır.

Referanslar gc_register().

Bu fonksiyon için çağırılma şeması:

◆ gc_split()

char ** gc_split ( t_gc * gc,
const char * s,
char c )

ft_split + GC kayıt (dizi ve tüm elemanları kaydedilir)

Parametreler
gcGC yapısı
sBölünecek string
cAyırıcı karakter
Döndürdüğü değer
GC'ye kaydedilmiş string dizisi, başarısızsa NULL

garbage_collector_wrappers.c dosyasının 91 numaralı satırında tanımlanmıştır.

Referanslar gc_register().

Bu fonksiyon için çağırılma şeması: