summaryrefslogtreecommitdiff
path: root/src/fcobjshash.gperf.h
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2012-09-20 14:42:31 -0400
committerBehdad Esfahbod <behdad@behdad.org>2013-01-02 00:35:39 -0600
commitd58c31e6dcfd8c5e6fe3ead4a69216b059558223 (patch)
treeab6353317504e63eb28ab9030b995b3b576067ae /src/fcobjshash.gperf.h
parent7c0f79c5fe9db50b55112a1048a8f1c6a80e96fa (diff)
downloadfontconfig-d58c31e6dcfd8c5e6fe3ead4a69216b059558223.tar.gz
Use a static perfect hash table for object-name lookup
The hash table is generated by gperf. For runtime element types, we use a append-only linked list. A bit clumsy, but I think I got it right.
Diffstat (limited to 'src/fcobjshash.gperf.h')
-rw-r--r--src/fcobjshash.gperf.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/fcobjshash.gperf.h b/src/fcobjshash.gperf.h
new file mode 100644
index 0000000..94002b1
--- /dev/null
+++ b/src/fcobjshash.gperf.h
@@ -0,0 +1,26 @@
+%{
+CUT_OUT_BEGIN
+#include <fontconfig/fontconfig.h>
+CUT_OUT_END
+%}
+%struct-type
+%language=C
+%includes
+%enum
+%readonly-tables
+%define slot-name name
+%define hash-function-name FcObjectTypeHash
+%define lookup-function-name FcObjectTypeLookup
+
+%pic
+%define string-pool-name FcObjectTypeNamePool
+
+struct FcObjectTypeInfo {
+ int name;
+ int id;
+};
+
+%%
+#define FC_OBJECT(NAME, Type) FC_##NAME, FC_##NAME##_OBJECT
+#include "fcobjs.h"
+#undef FC_OBJECT