Lines Matching refs:head
64 gdCache_head_t *head; in gdCacheCreate() local
66 head = (gdCache_head_t *)pemalloc(sizeof(gdCache_head_t), 1); in gdCacheCreate()
67 head->mru = NULL; in gdCacheCreate()
68 head->size = size; in gdCacheCreate()
69 head->gdCacheTest = gdCacheTest; in gdCacheCreate()
70 head->gdCacheFetch = gdCacheFetch; in gdCacheCreate()
71 head->gdCacheRelease = gdCacheRelease; in gdCacheCreate()
72 return head; in gdCacheCreate()
76 gdCacheDelete( gdCache_head_t *head ) in gdCacheDelete() argument
80 elem = head->mru; in gdCacheDelete()
82 (*(head->gdCacheRelease))(elem->userdata); in gdCacheDelete()
87 pefree((char *)head, 1); in gdCacheDelete()
91 gdCacheGet( gdCache_head_t *head, void *keydata ) in gdCacheGet() argument
97 elem = head->mru; in gdCacheGet()
99 if ((*(head->gdCacheTest))(elem->userdata, keydata)) { in gdCacheGet()
103 elem->next = head->mru; in gdCacheGet()
104 head->mru = elem; in gdCacheGet()
113 userdata = (*(head->gdCacheFetch))(&(head->error), keydata); in gdCacheGet()
118 if (i < head->size) { /* cache still growing - add new elem */ in gdCacheGet()
125 (*(head->gdCacheRelease))(elem->userdata); in gdCacheGet()
128 elem->next = head->mru; in gdCacheGet()
129 head->mru = elem; in gdCacheGet()