|
Derleyici Tasarımı
|
Basit hashmap. Ayrıntılar...
#include <stddef.h>Bu dosyanın kaynak koduna git.
Sınıflar | |
| struct | map |
| map. Ayrıntılar... | |
| struct | map_it |
map entrylerini tek tek çekebilmek için iteration handle. Ayrıntılar... | |
| struct | map_entry |
map'te tutulan key-value ikilisi, entry. Ayrıntılar... | |
Fonksiyonlar | |
| void | map_init (struct map *map, size_t value_size) |
| Yeni bir map oluşturur. | |
| void | map_destroy (struct map *map) |
| map tarafından ayrılmış belleği temizler. | |
| void * | map_get (struct map *map, const void *key) |
Key ile eşleşen valueyı döner, key bulunamazsa NULL döner. | |
| void * | map_get2 (struct map *map, const void *key, size_t keylen) |
Key ile eşleşen valueyı döner, key bulunamazsa NULL döner. | |
| void | map_insert (struct map *map, const void *key, const void *value) |
map'e key-value ikilisini ekler. | |
| void | map_insert2 (struct map *map, const void *key, size_t keylen, const void *value) |
map'e key-value ikilisini ekler. | |
| void * | map_delete (struct map *map, const void *key) |
Key-value ikilisini map'ten siler, valueyu döner. | |
| void * | map_delete2 (struct map *map, const void *key, size_t keylen) |
Key-value ikilisini map'ten siler, valueyu döner. | |
| void | map_iter (struct map *map, struct map_it *it) |
map'teki entryleri tek tek çekecek iteration handle hazırlar. | |
| struct map_entry * | map_iter_next (struct map_it *it) |
Iteration handledan sıradaki entryyi çeker. | |
Basit hashmap.
map, FNV hash fonksiyonunu ve open addressing yönetmini kullanır. Key-value ikilisi şeklinde verileri tutar, farklı uzunlukta keylere izin verirken sabit uzunlukta value tutabilir.
map.h dosyasında tanımlanmıştır.
| void * map_delete | ( | struct map * | map, |
| const void * | key | ||
| ) |
Key-value ikilisini map'ten siler, valueyu döner.
value, bir sonraki map işlemine kadar hayatta kalır. Kullanıcı, valueyu kullanmaya devam etmek istiyorsa onu kopyalamalıdır.key parametresi null-terminated olmalıdır.
| void * map_delete2 | ( | struct map * | map, |
| const void * | key, | ||
| size_t | keylen | ||
| ) |
Key-value ikilisini map'ten siler, valueyu döner.
value, bir sonraki map işlemine kadar hayatta kalır. Kullanıcı, valueyu kullanmaya devam etmek istiyorsa onu kopyalamalıdır. | void * map_get | ( | struct map * | map, |
| const void * | key | ||
| ) |
Key ile eşleşen valueyı döner, key bulunamazsa NULL döner.
key parametresi null-terminated olmalıdır.
| void map_init | ( | struct map * | map, |
| size_t | value_size | ||
| ) |
Yeni bir map oluşturur.
map için gerekli belleği ayırır. value_size parametresi, kullanıcının ekleyeceği valueların maksimum boyutunu belirtir.
| void map_insert | ( | struct map * | map, |
| const void * | key, | ||
| const void * | value | ||
| ) |
map'e key-value ikilisini ekler.
key bulunmuyor olmalıdır.key parametresi null-terminated olmalıdır.
| void map_insert2 | ( | struct map * | map, |
| const void * | key, | ||
| size_t | keylen, | ||
| const void * | value | ||
| ) |
map'e key-value ikilisini ekler.
key bulunmuyor olmalıdır.