1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include "fitz.h"
#include "mupdf.h"
static int
pdf_make_hash_key(fz_store_hash *hash, void *key_)
{
fz_obj *key = (fz_obj *)key_;
if (!fz_is_indirect(key))
return 0;
hash->u.i.i0 = fz_to_num(key);
hash->u.i.i1 = fz_to_gen(key);
return 1;
}
static void *
pdf_keep_key(fz_context *ctx, void *key)
{
return (void *)fz_keep_obj((fz_obj *)key);
}
static void
pdf_drop_key(fz_context *ctx, void *key)
{
fz_drop_obj((fz_obj *)key);
}
static int
pdf_cmp_key(void *k0, void *k1)
{
return fz_objcmp((fz_obj *)k0, (fz_obj *)k1);
}
static fz_store_type pdf_obj_store_type =
{
pdf_make_hash_key,
pdf_keep_key,
pdf_drop_key,
pdf_cmp_key
};
void
pdf_store_item(fz_context *ctx, fz_obj *key, void *val, unsigned int itemsize)
{
fz_store_item(ctx, key, val, itemsize, &pdf_obj_store_type);
}
void *
pdf_find_item(fz_context *ctx, fz_store_free_fn *free, fz_obj *key)
{
return fz_find_item(ctx, free, key, &pdf_obj_store_type);
}
void
pdf_remove_item(fz_context *ctx, fz_store_free_fn *free, fz_obj *key)
{
fz_remove_item(ctx, free, key, &pdf_obj_store_type);
}
|