diff options
Diffstat (limited to 'libass/ass_cache_template.h')
-rw-r--r-- | libass/ass_cache_template.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libass/ass_cache_template.h b/libass/ass_cache_template.h index c91c897..29b534c 100644 --- a/libass/ass_cache_template.h +++ b/libass/ass_cache_template.h @@ -6,6 +6,8 @@ type member; #define STRING(member) \ char *member; +#define BINSTRING(member) \ + struct { size_t size; void *data; } member; #define FTVECTOR(member) \ FT_Vector member; #define BITMAPHASHKEY(member) \ @@ -25,6 +27,9 @@ a->member == b->member && #define STRING(member) \ strcmp(a->member, b->member) == 0 && +#define BINSTRING(member) \ + a->member.size == b->member.size && \ + memcmp(a->member.data, b->member.data, a->member.size) == 0 && #define FTVECTOR(member) \ a->member.x == b->member.x && a->member.y == b->member.y && #define BITMAPHASHKEY(member) \ @@ -44,6 +49,9 @@ hval = fnv_32a_buf(&p->member, sizeof(p->member), hval); #define STRING(member) \ hval = fnv_32a_str(p->member, hval); +#define BINSTRING(member) \ + hval = fnv_32a_buf(&p->member.size, sizeof(p->member.size), hval); \ + hval = fnv_32a_buf(p->member.data, p->member.size, hval); #define FTVECTOR(member) GENERIC(, member.x); GENERIC(, member.y); #define BITMAPHASHKEY(member) { \ unsigned temp = bitmap_hash(&p->member, sizeof(p->member)); \ @@ -152,7 +160,7 @@ START(composite, composite_hash_key) GENERIC(int, shift_x) GENERIC(int, shift_y) FTVECTOR(advance) - STRING(str) + BINSTRING(str) END(CompositeHashKey) #undef START |