void pdf_debugstore(pdf_store *store) { pdf_item *item; pdf_item *next; struct refkey *key; int i; printf("-- resource store contents --\n"); for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); item = fz_hashgetval(store->hash, i); if (key && item) { printf("store[%d] (%d %d R) = %p\n", i, key->oid, key->gen, item->val); } } for (item = store->root; item; item = next) { next = item->next; printf("store[*] "); fz_debugobj(item->key); printf(" = %p\n", item->val); } store->root = nil; }
void pdf_emptystore(pdf_store *store) { pdf_item *item; pdf_item *next; struct refkey *key; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); item = fz_hashgetval(store->hash, i); if (item) { fz_dropobj(item->key); dropitem(key->kind, item->val); fz_free(item); } } fz_emptyhash(store->hash); for (item = store->root; item; item = next) { next = item->next; fz_dropobj(item->key); dropitem(item->kind, item->val); fz_free(item); } store->root = nil; }
void pdf_emptystore(pdf_store *store) { pdf_item *item; pdf_item *next; struct refkey *key; void *val; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); val = fz_hashgetval(store->hash, i); if (val) { #ifdef PSP if (key->kind == PDF_KIMAGE) printf("es 1.2 - I %p\n", val); #endif dropitem(key->kind, val); } } fz_emptyhash(store->hash); for (item = store->root; item; item = next) { next = item->next; fz_dropobj(item->key); dropitem(item->kind, item->val); fz_free(item); } store->root = nil; }
void pdf_agestoreditems(pdf_store *store) { pdf_item *item; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { item = fz_hashgetval(store->hash, i); if (item) item->age++; } for (item = store->root; item; item = item->next) item->age++; }
void pdf_evictageditems(pdf_store *store) { pdf_item *item; pdf_item *next; pdf_item *prev; struct refkey *key; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); item = fz_hashfind(store->hash, key); if (item && item->age > itemmaxage(item->kind)) { fz_hashremove(store->hash, key); evictitem(item); } } prev = nil; for (item = store->root; item; item = next) { next = item->next; if (item->age > itemmaxage(item->kind)) { if (!prev) store->root = next; else prev->next = next; evictitem(item); } else prev = item; } }