#define FC_BANK_FIRST 1
#define FC_BANK_LANGS 0xfcfcfcfc
+#define FC_MIN(a,b) ((a) < (b) ? (a) : (b))
+#define FC_MAX(a,b) ((a) > (b) ? (a) : (b))
+#define FC_ABS(a) ((a) < 0 ? -(a) : (a))
+
/* slim_internal.h */
#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__) && !defined(__sun)
#define FcPrivate __attribute__((__visibility__("hidden")))
#define FC_SERIALIZE_HASH_SIZE 8191
+typedef union _FcAlign {
+ double d;
+ int i;
+ intptr_t ip;
+ FcBool b;
+ void *p;
+} FcAlign;
+
typedef struct _FcSerializeBucket {
struct _FcSerializeBucket *next;
const void *object;
#define fc_value_langset(v) FcValueLangSet(v)
#define fc_storage_type(v) ((v)->type)
-#define fc_alignof(type) offsetof (struct { char c; type member; }, member)
-
#define FC_CACHE_MAGIC_MMAP 0xFC02FC04
#define FC_CACHE_MAGIC_ALLOC 0xFC02FC05
-#define FC_CACHE_CONTENT_VERSION 2
+#define FC_CACHE_CONTENT_VERSION 3 /* also check FC_CACHE_VERSION */
struct _FcAtomic {
FcChar8 *file; /* original file name */
typedef struct _FcCharMap FcCharMap;
-/* watch out; assumes that v is void * -PL */
-#define ALIGN(v,type) ((void *)(((uintptr_t)(v) + fc_alignof(type) - 1) & ~(fc_alignof(type) - 1)))
-
/* fcblanks.c */
/* fccache.c */
#ifdef _WIN32
FcPrivate int
-FcStat (const char *file, struct stat *statb)
+FcStat (const char *file, struct stat *statb);
#else
#define FcStat stat
#endif