[Libreoffice-commits] core.git: external/libetonyek RepositoryExternal.mk

David Tardon dtardon at redhat.com
Wed May 20 00:43:28 PDT 2015


 RepositoryExternal.mk                             |   30 
 external/libetonyek/ExternalPackage_libetonyek.mk |   22 
 external/libetonyek/ExternalProject_libetonyek.mk |    5 
 external/libetonyek/Library_etonyek.mk            |  111 +++
 external/libetonyek/Module_libetonyek.mk          |   16 
 external/libetonyek/generated/IWORKToken.inc      |  721 ++++++++++++++++++++++
 external/libetonyek/generated/KEY1Token.inc       |  540 ++++++++++++++++
 external/libetonyek/generated/KEY2Token.inc       |  216 ++++++
 external/libetonyek/generated/NUM1Token.inc       |  147 ++++
 external/libetonyek/generated/NUMToken.inc        |  146 ++++
 external/libetonyek/generated/PAG1Token.inc       |  158 ++++
 external/libetonyek/generated/PAGToken.inc        |  158 ++++
 12 files changed, 2266 insertions(+), 4 deletions(-)

New commits:
commit 78deb81c55266d37e35ff97fbb5b4086245d8ff2
Author: David Tardon <dtardon at redhat.com>
Date:   Tue May 19 16:12:08 2015 +0200

    build libetonyek as shared lib
    
    Change-Id: Id98bc62bd41846550dc9149d462a3b85bb2538c5

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index a114e13..47e4d17 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -1700,13 +1700,39 @@ gb_ExternalProject__use_etonyek :=
 
 else # !SYSTEM_ETONYEK
 
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\
+	etonyek \
+))
+
+define gb_LinkTarget__use_etonyek
+$(call gb_LinkTarget_set_include,$(1),\
+	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/inc \
+	$$(INCLUDE) \
+)
+$(call gb_LinkTarget_use_libraries,$(1),\
+	etonyek \
+)
+
+endef
+
+else # !MSC
+
+$(eval $(call gb_Helper_register_packages_for_install,ooo, \
+	libetonyek \
+))
+
 define gb_LinkTarget__use_etonyek
+$(call gb_LinkTarget_use_package,$(1),libetonyek)
+
 $(call gb_LinkTarget_set_include,$(1),\
 	-I${WORKDIR}/UnpackedTarball/libetonyek/inc \
+	-DLIBETONYEK_VISIBILITY \
 	$$(INCLUDE) \
 )
 $(call gb_LinkTarget_add_libs,$(1),\
-	$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib/.libs/libetonyek-0.1$(gb_StaticLibrary_PLAINEXT) \
+	-L$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib/.libs -letonyek-0.1 \
 )
 $(call gb_LinkTarget_use_external_project,$(1),libetonyek)
 
@@ -1717,6 +1743,8 @@ $(call gb_ExternalProject_use_external_project,$(1),libetonyek)
 
 endef
 
+endif
+
 endif # SYSTEM_ETONYEK
 
 
diff --git a/external/libetonyek/ExternalPackage_libetonyek.mk b/external/libetonyek/ExternalPackage_libetonyek.mk
new file mode 100644
index 0000000..08f0a63b
--- /dev/null
+++ b/external/libetonyek/ExternalPackage_libetonyek.mk
@@ -0,0 +1,22 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libetonyek,libetonyek))
+
+$(eval $(call gb_ExternalPackage_use_external_project,libetonyek,libetonyek))
+
+ifeq ($(OS),MACOSX)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1.1.dylib,src/lib/.libs/libetonyek-0.1.1.dylib))
+else ifeq ($(OS),WNT)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1.dll,src/lib/.libs/libetonyek-0.1.dll))
+else ifeq ($(filter IOS ANDROID,$(OS)),)
+$(eval $(call gb_ExternalPackage_add_file,libetonyek,$(LIBO_LIB_FOLDER)/libetonyek-0.1.so.1,src/lib/.libs/libetonyek-0.1.so.1.0.$(ETONYEK_VERSION_MICRO)))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/ExternalProject_libetonyek.mk b/external/libetonyek/ExternalProject_libetonyek.mk
index 4fd48b1..acfc76d 100644
--- a/external/libetonyek/ExternalProject_libetonyek.mk
+++ b/external/libetonyek/ExternalProject_libetonyek.mk
@@ -28,8 +28,8 @@ $(call gb_ExternalProject_get_state_target,libetonyek,build) :
 		export PKG_CONFIG="" \
 		&& MAKE=$(MAKE) ./configure \
 			--with-pic \
-			--enable-static \
-			--disable-shared \
+			--enable-shared \
+			--disable-static \
 			--without-docs \
 			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
 			--disable-werror \
@@ -41,6 +41,7 @@ $(call gb_ExternalProject_get_state_target,libetonyek,build) :
 			XML_CFLAGS="$(LIBXML_CFLAGS)" \
 			XML_LIBS="$(LIBXML_LIBS)" \
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
+			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 		&& $(MAKE) \
 	)
 
diff --git a/external/libetonyek/Library_etonyek.mk b/external/libetonyek/Library_etonyek.mk
new file mode 100644
index 0000000..db8feca
--- /dev/null
+++ b/external/libetonyek/Library_etonyek.mk
@@ -0,0 +1,111 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Library_Library,etonyek))
+
+$(eval $(call gb_Library_use_unpacked,etonyek,libetonyek))
+
+$(eval $(call gb_Library_use_externals,etonyek,\
+    boost_headers \
+    glm_headers \
+	libxml2 \
+	revenge \
+	zlib \
+))
+
+$(eval $(call gb_Library_set_warnings_not_errors,etonyek))
+
+$(eval $(call gb_Library_set_include,etonyek,\
+	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/inc \
+	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib \
+	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib/contexts \
+	-I$(SRCDIR)/external/libetonyek/generated \
+	$$(INCLUDE) \
+))
+
+$(eval $(call gb_Library_add_defs,etonyek,\
+	-DBOOST_ALL_NO_LIB \
+	-DDLL_EXPORT \
+	-DLIBETONYEK_BUILD \
+	-DNDEBUG \
+))
+
+$(eval $(call gb_Library_set_generated_cxx_suffix,etonyek,cpp))
+
+$(eval $(call gb_Library_add_generated_exception_objects,etonyek,\
+	UnpackedTarball/libetonyek/src/lib/EtonyekDocument \
+	UnpackedTarball/libetonyek/src/lib/IWORKChainedTokenizer \
+	UnpackedTarball/libetonyek/src/lib/IWORKCollector \
+	UnpackedTarball/libetonyek/src/lib/IWORKDictionary \
+	UnpackedTarball/libetonyek/src/lib/IWORKDocumentInterface \
+	UnpackedTarball/libetonyek/src/lib/IWORKMemoryStream \
+	UnpackedTarball/libetonyek/src/lib/IWORKOutputElements \
+	UnpackedTarball/libetonyek/src/lib/IWORKParser \
+	UnpackedTarball/libetonyek/src/lib/IWORKPath \
+	UnpackedTarball/libetonyek/src/lib/IWORKPresentationRedirector \
+	UnpackedTarball/libetonyek/src/lib/IWORKProperties \
+	UnpackedTarball/libetonyek/src/lib/IWORKPropertyMap \
+	UnpackedTarball/libetonyek/src/lib/IWORKShape \
+	UnpackedTarball/libetonyek/src/lib/IWORKSpreadsheetRedirector \
+	UnpackedTarball/libetonyek/src/lib/IWORKStyle \
+	UnpackedTarball/libetonyek/src/lib/IWORKStyleStack \
+	UnpackedTarball/libetonyek/src/lib/IWORKStylesheet \
+	UnpackedTarball/libetonyek/src/lib/IWORKTable \
+	UnpackedTarball/libetonyek/src/lib/IWORKText \
+	UnpackedTarball/libetonyek/src/lib/IWORKTextRedirector \
+	UnpackedTarball/libetonyek/src/lib/IWORKToken \
+	UnpackedTarball/libetonyek/src/lib/IWORKTokenizer \
+	UnpackedTarball/libetonyek/src/lib/IWORKTokenizerBase \
+	UnpackedTarball/libetonyek/src/lib/IWORKTransformation \
+	UnpackedTarball/libetonyek/src/lib/IWORKTypes \
+	UnpackedTarball/libetonyek/src/lib/IWORKXMLContext \
+	UnpackedTarball/libetonyek/src/lib/IWORKXMLContextBase \
+	UnpackedTarball/libetonyek/src/lib/IWORKXMLParserState \
+	UnpackedTarball/libetonyek/src/lib/IWORKZlibStream \
+	UnpackedTarball/libetonyek/src/lib/IWORKZoneManager \
+	UnpackedTarball/libetonyek/src/lib/KEY1Parser \
+	UnpackedTarball/libetonyek/src/lib/KEY1Token \
+	UnpackedTarball/libetonyek/src/lib/KEY2Parser \
+	UnpackedTarball/libetonyek/src/lib/KEY2ParserState \
+	UnpackedTarball/libetonyek/src/lib/KEY2Token \
+	UnpackedTarball/libetonyek/src/lib/KEYCollector \
+	UnpackedTarball/libetonyek/src/lib/KEYDictionary \
+	UnpackedTarball/libetonyek/src/lib/KEYTypes \
+	UnpackedTarball/libetonyek/src/lib/NUM1Parser \
+	UnpackedTarball/libetonyek/src/lib/NUM1ParserState \
+	UnpackedTarball/libetonyek/src/lib/NUM1Token \
+	UnpackedTarball/libetonyek/src/lib/NUMCollector \
+	UnpackedTarball/libetonyek/src/lib/NUMDictionary \
+	UnpackedTarball/libetonyek/src/lib/PAG1Parser \
+	UnpackedTarball/libetonyek/src/lib/PAG1ParserState \
+	UnpackedTarball/libetonyek/src/lib/PAG1Token \
+	UnpackedTarball/libetonyek/src/lib/PAGCollector \
+	UnpackedTarball/libetonyek/src/lib/PAGDictionary \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKColorElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKGeometryElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKLayoutElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKMediaElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKPElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKPositionElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKPropertyMapElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKRefContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKSizeElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKStyleContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKStyleRefContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKStylesContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKTabularInfoElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextBodyElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKTextStorageElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/KEY2StyleContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/KEY2StyleRefContext \
+	UnpackedTarball/libetonyek/src/lib/libetonyek_utils \
+	UnpackedTarball/libetonyek/src/lib/libetonyek_xml \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/Module_libetonyek.mk b/external/libetonyek/Module_libetonyek.mk
index eacb258..94fd6ca 100644
--- a/external/libetonyek/Module_libetonyek.mk
+++ b/external/libetonyek/Module_libetonyek.mk
@@ -10,8 +10,22 @@
 $(eval $(call gb_Module_Module,libetonyek))
 
 $(eval $(call gb_Module_add_targets,libetonyek,\
-	ExternalProject_libetonyek \
 	UnpackedTarball_libetonyek \
 ))
 
+ifeq ($(COM),MSC)
+
+$(eval $(call gb_Module_add_targets,libetonyek,\
+	Library_etonyek \
+))
+
+else
+
+$(eval $(call gb_Module_add_targets,libetonyek,\
+	ExternalPackage_libetonyek \
+	ExternalProject_libetonyek \
+))
+
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/external/libetonyek/generated/IWORKToken.inc b/external/libetonyek/generated/IWORKToken.inc
new file mode 100644
index 0000000..3e1b679
--- /dev/null
+++ b/external/libetonyek/generated/IWORKToken.inc
@@ -0,0 +1,721 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ IWORKToken.gperf  */
+/* Computed positions: -k'1-2,5-7,21,27,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "IWORKToken.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace IWORKToken;
+#line 18 "IWORKToken.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 480, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned short asso_values[] =
+    {
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481,  75, 481,   5, 105,  60,
+      481, 481, 481, 481, 481, 481, 481, 481,   5, 481,
+      481, 481, 481, 481, 481,  10,  30,   0,   5, 481,
+        0, 481,   5,   0, 481, 481, 110, 481,   0, 481,
+       15, 481,  55,  10,  15, 481,   0,  10,  10,   0,
+      481, 481, 481, 481, 481,   5, 481,  20, 235,  40,
+      150,   5,  70, 200,  30,  75, 481,  40,  10, 140,
+       25,   0,  15, 481,  10,   0,   5, 105, 100, 115,
+       45, 145,  20, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+      481, 481, 481, 481, 481, 481
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[26]];
+      /*FALLTHROUGH*/
+      case 26:
+      case 25:
+      case 24:
+      case 23:
+      case 22:
+      case 21:
+        hval += asso_values[(unsigned char)str[20]];
+      /*FALLTHROUGH*/
+      case 20:
+      case 19:
+      case 18:
+      case 17:
+      case 16:
+      case 15:
+      case 14:
+      case 13:
+      case 12:
+      case 11:
+      case 10:
+      case 9:
+      case 8:
+      case 7:
+        hval += asso_values[(unsigned char)str[6]];
+      /*FALLTHROUGH*/
+      case 6:
+        hval += asso_values[(unsigned char)str[5]];
+      /*FALLTHROUGH*/
+      case 5:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+      case 3:
+      case 2:
+        hval += asso_values[(unsigned char)str[1]];
+      /*FALLTHROUGH*/
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval + asso_values[(unsigned char)str[len - 1]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 212,
+      MIN_WORD_LENGTH = 1,
+      MAX_WORD_LENGTH = 50,
+      MIN_HASH_VALUE = 1,
+      MAX_HASH_VALUE = 480
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0},
+#line 180 "IWORKToken.gperf"
+      {"s",s},
+#line 193 "IWORKToken.gperf"
+      {"so",so},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 28 "IWORKToken.gperf"
+      {"IDREF",IDREF},
+#line 203 "IWORKToken.gperf"
+      {"t",t},
+#line 27 "IWORKToken.gperf"
+      {"ID",ID},
+      {(char*)0},
+#line 179 "IWORKToken.gperf"
+      {"rows",rows},
+      {(char*)0},
+#line 201 "IWORKToken.gperf"
+      {"styles",styles},
+      {(char*)0},
+#line 171 "IWORKToken.gperf"
+      {"pos",pos},
+#line 216 "IWORKToken.gperf"
+      {"text",text},
+#line 200 "IWORKToken.gperf"
+      {"style",style},
+#line 175 "IWORKToken.gperf"
+      {"r",r},
+      {(char*)0}, {(char*)0},
+#line 222 "IWORKToken.gperf"
+      {"true",true_},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 205 "IWORKToken.gperf"
+      {"tabs",tabs},
+#line 169 "IWORKToken.gperf"
+      {"point",point},
+#line 159 "IWORKToken.gperf"
+      {"p",p},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 211 "IWORKToken.gperf"
+      {"tail",tail},
+      {(char*)0},
+#line 46 "IWORKToken.gperf"
+      {"a",a},
+      {(char*)0}, {(char*)0},
+#line 196 "IWORKToken.gperf"
+      {"span",span},
+#line 187 "IWORKToken.gperf"
+      {"shape",shape},
+#line 133 "IWORKToken.gperf"
+      {"layers",layers},
+      {(char*)0}, {(char*)0},
+#line 148 "IWORKToken.gperf"
+      {"lnbr",lnbr},
+      {(char*)0},
+#line 154 "IWORKToken.gperf"
+      {"n",n},
+#line 81 "IWORKToken.gperf"
+      {"ct",ct},
+#line 214 "IWORKToken.gperf"
+      {"tailPositionY",tailPositionY},
+      {(char*)0},
+#line 131 "IWORKToken.gperf"
+      {"layer",layer},
+      {(char*)0},
+#line 114 "IWORKToken.gperf"
+      {"headers",headers},
+      {(char*)0}, {(char*)0},
+#line 50 "IWORKToken.gperf"
+      {"angle",angle},
+#line 112 "IWORKToken.gperf"
+      {"h",h},
+#line 212 "IWORKToken.gperf"
+      {"tailAtCenter",tailAtCenter},
+#line 213 "IWORKToken.gperf"
+      {"tailPositionX",tailPositionX},
+#line 80 "IWORKToken.gperf"
+      {"crbr",crbr},
+#line 72 "IWORKToken.gperf"
+      {"color",color},
+#line 189 "IWORKToken.gperf"
+      {"shearYAngle",shearYAngle},
+#line 207 "IWORKToken.gperf"
+      {"tabstop",tabstop},
+      {(char*)0},
+#line 166 "IWORKToken.gperf"
+      {"path",path},
+      {(char*)0},
+#line 195 "IWORKToken.gperf"
+      {"spaceBefore",spaceBefore},
+#line 173 "IWORKToken.gperf"
+      {"property-map",property_map},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 188 "IWORKToken.gperf"
+      {"shearXAngle",shearXAngle},
+#line 208 "IWORKToken.gperf"
+      {"tabular-info",tabular_info},
+#line 178 "IWORKToken.gperf"
+      {"row-span",row_span},
+      {(char*)0}, {(char*)0},
+#line 116 "IWORKToken.gperf"
+      {"height",height},
+#line 167 "IWORKToken.gperf"
+      {"placeholder-style",placeholder_style},
+#line 210 "IWORKToken.gperf"
+      {"tabular-style",tabular_style},
+#line 190 "IWORKToken.gperf"
+      {"size",size},
+#line 47 "IWORKToken.gperf"
+      {"align",align},
+#line 181 "IWORKToken.gperf"
+      {"scalar",scalar},
+#line 78 "IWORKToken.gperf"
+      {"content",content},
+#line 209 "IWORKToken.gperf"
+      {"tabular-model",tabular_model},
+      {(char*)0}, {(char*)0},
+#line 234 "IWORKToken.gperf"
+      {"x",x},
+#line 100 "IWORKToken.gperf"
+      {"footers",footers},
+#line 186 "IWORKToken.gperf"
+      {"sfa",sfa},
+#line 141 "IWORKToken.gperf"
+      {"line",line},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 97 "IWORKToken.gperf"
+      {"fontColor",fontColor},
+      {(char*)0},
+#line 155 "IWORKToken.gperf"
+      {"naturalSize",naturalSize},
+      {(char*)0}, {(char*)0},
+#line 118 "IWORKToken.gperf"
+      {"horizontalFlip",horizontalFlip},
+#line 91 "IWORKToken.gperf"
+      {"false",false_},
+#line 192 "IWORKToken.gperf"
+      {"slide-style",slide_style},
+#line 219 "IWORKToken.gperf"
+      {"text-storage",text_storage},
+#line 71 "IWORKToken.gperf"
+      {"col-span",col_span},
+#line 30 "IWORKToken.gperf"
+      {"SFTCellStylePropertyParagraphStyle",SFTCellStylePropertyParagraphStyle},
+#line 74 "IWORKToken.gperf"
+      {"connection-line",connection_line},
+#line 76 "IWORKToken.gperf"
+      {"connection-style",connection_style},
+      {(char*)0}, {(char*)0},
+#line 119 "IWORKToken.gperf"
+      {"href",href},
+      {(char*)0},
+#line 45 "IWORKToken.gperf"
+      {"TableCellStylePropertyFormatNegativeStyle",TableCellStylePropertyFormatNegativeStyle},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 194 "IWORKToken.gperf"
+      {"spaceAfter",spaceAfter},
+#line 26 "IWORKToken.gperf"
+      {"1",_1},
+#line 79 "IWORKToken.gperf"
+      {"cornerRadius",cornerRadius},
+      {(char*)0},
+#line 24 "IWORKToken.gperf"
+      {"__multilingual",__multilingual},
+      {(char*)0},
+#line 121 "IWORKToken.gperf"
+      {"http://developer.apple.com/namespaces/sfa",NS_URI_SFA},
+      {(char*)0},
+#line 172 "IWORKToken.gperf"
+      {"position",position},
+#line 144 "IWORKToken.gperf"
+      {"link",link},
+      {(char*)0},
+#line 177 "IWORKToken.gperf"
+      {"rightIndent",rightIndent},
+      {(char*)0}, {(char*)0},
+#line 66 "IWORKToken.gperf"
+      {"capitalization",capitalization},
+#line 75 "IWORKToken.gperf"
+      {"connection-path",connection_path},
+#line 51 "IWORKToken.gperf"
+      {"anon-styles",anon_styles},
+#line 183 "IWORKToken.gperf"
+      {"section",section},
+      {(char*)0}, {(char*)0},
+#line 67 "IWORKToken.gperf"
+      {"cell-style",cell_style},
+#line 90 "IWORKToken.gperf"
+      {"f",f},
+#line 185 "IWORKToken.gperf"
+      {"sf",sf},
+#line 215 "IWORKToken.gperf"
+      {"tailSize",tailSize},
+      {(char*)0},
+#line 184 "IWORKToken.gperf"
+      {"self-contained-movie",self_contained_movie},
+      {(char*)0},
+#line 125 "IWORKToken.gperf"
+      {"intratopicbr",intratopicbr},
+      {(char*)0},
+#line 152 "IWORKToken.gperf"
+      {"mode",mode},
+#line 170 "IWORKToken.gperf"
+      {"point-path",point_path},
+#line 134 "IWORKToken.gperf"
+      {"layout",layout},
+#line 128 "IWORKToken.gperf"
+      {"keepWithNext",keepWithNext},
+      {(char*)0},
+#line 69 "IWORKToken.gperf"
+      {"characterstyle",characterstyle},
+      {(char*)0},
+#line 137 "IWORKToken.gperf"
+      {"layoutstyle",layoutstyle},
+#line 164 "IWORKToken.gperf"
+      {"parent-ident",parent_ident},
+      {(char*)0},
+#line 223 "IWORKToken.gperf"
+      {"type",type},
+      {(char*)0},
+#line 156 "IWORKToken.gperf"
+      {"number",number},
+      {(char*)0}, {(char*)0},
+#line 115 "IWORKToken.gperf"
+      {"headline-style",headline_style},
+      {(char*)0},
+#line 136 "IWORKToken.gperf"
+      {"layoutStyle",layoutStyle},
+      {(char*)0},
+#line 49 "IWORKToken.gperf"
+      {"amt",amt},
+      {(char*)0},
+#line 198 "IWORKToken.gperf"
+      {"strikethru",strikethru},
+#line 202 "IWORKToken.gperf"
+      {"superscript",superscript},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 120 "IWORKToken.gperf"
+      {"http://developer.apple.com/namespaces/sf",NS_URI_SF},
+      {(char*)0}, {(char*)0},
+#line 221 "IWORKToken.gperf"
+      {"tocStyle",tocStyle},
+#line 77 "IWORKToken.gperf"
+      {"container-hint",container_hint},
+#line 135 "IWORKToken.gperf"
+      {"layoutParagraphStyle",layoutParagraphStyle},
+#line 64 "IWORKToken.gperf"
+      {"calc-engine",calc_engine},
+      {(char*)0}, {(char*)0},
+#line 93 "IWORKToken.gperf"
+      {"filtered-image",filtered_image},
+      {(char*)0},
+#line 182 "IWORKToken.gperf"
+      {"scalar-path",scalar_path},
+      {(char*)0},
+#line 99 "IWORKToken.gperf"
+      {"fontSize",fontSize},
+#line 113 "IWORKToken.gperf"
+      {"head",head},
+#line 150 "IWORKToken.gperf"
+      {"media",media},
+#line 29 "IWORKToken.gperf"
+      {"SFTCellStylePropertyLayoutStyle",SFTCellStylePropertyLayoutStyle},
+      {(char*)0},
+#line 206 "IWORKToken.gperf"
+      {"tabs-ref",tabs_ref},
+#line 83 "IWORKToken.gperf"
+      {"data",data},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 227 "IWORKToken.gperf"
+      {"v",v},
+      {(char*)0}, {(char*)0},
+#line 132 "IWORKToken.gperf"
+      {"layer-ref",layer_ref},
+#line 139 "IWORKToken.gperf"
+      {"leftIndent",leftIndent},
+      {(char*)0},
+#line 228 "IWORKToken.gperf"
+      {"vector-style",vector_style},
+#line 176 "IWORKToken.gperf"
+      {"relative",relative},
+#line 68 "IWORKToken.gperf"
+      {"cell-style-ref",cell_style_ref},
+      {(char*)0},
+#line 25 "IWORKToken.gperf"
+      {"0",_0},
+#line 73 "IWORKToken.gperf"
+      {"columns",columns},
+#line 65 "IWORKToken.gperf"
+      {"callout2-path",callout2_path},
+#line 48 "IWORKToken.gperf"
+      {"alignment",alignment},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 165 "IWORKToken.gperf"
+      {"parent-ref",parent_ref},
+#line 168 "IWORKToken.gperf"
+      {"placeholder-style-ref",placeholder_style_ref},
+#line 158 "IWORKToken.gperf"
+      {"outline",outline},
+#line 70 "IWORKToken.gperf"
+      {"characterstyle-ref",characterstyle_ref},
+      {(char*)0},
+#line 138 "IWORKToken.gperf"
+      {"layoutstyle-ref",layoutstyle_ref},
+      {(char*)0},
+#line 101 "IWORKToken.gperf"
+      {"frame-h",frame_h},
+      {(char*)0}, {(char*)0},
+#line 123 "IWORKToken.gperf"
+      {"image",image},
+#line 231 "IWORKToken.gperf"
+      {"w",w},
+      {(char*)0}, {(char*)0},
+#line 226 "IWORKToken.gperf"
+      {"unfiltered-ref",unfiltered_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 224 "IWORKToken.gperf"
+      {"underline",underline},
+#line 122 "IWORKToken.gperf"
+      {"ident",ident},
+#line 126 "IWORKToken.gperf"
+      {"italic",italic},
+      {(char*)0},
+#line 98 "IWORKToken.gperf"
+      {"fontName",fontName},
+      {(char*)0},
+#line 111 "IWORKToken.gperf"
+      {"group",group},
+#line 55 "IWORKToken.gperf"
+      {"attachments",attachments},
+      {(char*)0}, {(char*)0},
+#line 146 "IWORKToken.gperf"
+      {"liststyle",liststyle},
+#line 53 "IWORKToken.gperf"
+      {"attachment",attachment},
+#line 157 "IWORKToken.gperf"
+      {"other-datas",other_datas},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 233 "IWORKToken.gperf"
+      {"width",width},
+      {(char*)0},
+#line 103 "IWORKToken.gperf"
+      {"frame-x",frame_x},
+      {(char*)0},
+#line 145 "IWORKToken.gperf"
+      {"listStyle",listStyle},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 204 "IWORKToken.gperf"
+      {"tab",tab},
+#line 217 "IWORKToken.gperf"
+      {"textBackground",textBackground},
+      {(char*)0}, {(char*)0},
+#line 230 "IWORKToken.gperf"
+      {"verticalFlip",verticalFlip},
+      {(char*)0},
+#line 129 "IWORKToken.gperf"
+      {"kind",kind},
+      {(char*)0},
+#line 58 "IWORKToken.gperf"
+      {"bezier",bezier},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 229 "IWORKToken.gperf"
+      {"vector-style-ref",vector_style_ref},
+      {(char*)0},
+#line 117 "IWORKToken.gperf"
+      {"hfs-type",hfs_type},
+      {(char*)0}, {(char*)0},
+#line 197 "IWORKToken.gperf"
+      {"sticky-note",sticky_note},
+#line 127 "IWORKToken.gperf"
+      {"keepLinesTogether",keepLinesTogether},
+      {(char*)0},
+#line 162 "IWORKToken.gperf"
+      {"paragraphstyle",paragraphstyle},
+#line 95 "IWORKToken.gperf"
+      {"followingLayoutStyle",followingLayoutStyle},
+      {(char*)0},
+#line 52 "IWORKToken.gperf"
+      {"aspectRatioLocked",aspectRatioLocked},
+#line 161 "IWORKToken.gperf"
+      {"paragraphFill",paragraphFill},
+#line 160 "IWORKToken.gperf"
+      {"paragraphBorderType",paragraphBorderType},
+#line 85 "IWORKToken.gperf"
+      {"datasource",datasource},
+#line 235 "IWORKToken.gperf"
+      {"y",y},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 82 "IWORKToken.gperf"
+      {"d",d},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 44 "IWORKToken.gperf"
+      {"SFTableStylePropertyVectorStyle",SFTableStylePropertyVectorStyle},
+#line 43 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderVectorStyle",SFTableStylePropertyHeaderVectorStyle},
+      {(char*)0}, {(char*)0},
+#line 225 "IWORKToken.gperf"
+      {"unfiltered",unfiltered},
+#line 38 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderColumnCellStyle",SFTableStylePropertyHeaderColumnCellStyle},
+      {(char*)0},
+#line 33 "IWORKToken.gperf"
+      {"SFTableStylePropertyCellParagraphStyle",SFTableStylePropertyCellParagraphStyle},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 36 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderColumnCellLayoutStyle",SFTableStylePropertyHeaderColumnCellLayoutStyle},
+#line 147 "IWORKToken.gperf"
+      {"liststyle-ref",liststyle_ref},
+#line 54 "IWORKToken.gperf"
+      {"attachment-ref",attachment_ref},
+#line 37 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderColumnCellParagraphStyle",SFTableStylePropertyHeaderColumnCellParagraphStyle},
+#line 149 "IWORKToken.gperf"
+      {"locked",locked},
+      {(char*)0},
+#line 92 "IWORKToken.gperf"
+      {"filtered",filtered},
+      {(char*)0}, {(char*)0},
+#line 42 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderSeperatorVectorStyle",SFTableStylePropertyHeaderSeperatorVectorStyle},
+#line 232 "IWORKToken.gperf"
+      {"widowControl",widowControl},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 143 "IWORKToken.gperf"
+      {"linespacing",linespacing},
+#line 31 "IWORKToken.gperf"
+      {"SFTableStylePropertyBorderVectorStyle",SFTableStylePropertyBorderVectorStyle},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 220 "IWORKToken.gperf"
+      {"title-placeholder-ref",title_placeholder_ref},
+#line 140 "IWORKToken.gperf"
+      {"leveled",leveled},
+#line 84 "IWORKToken.gperf"
+      {"data-ref",data_ref},
+      {(char*)0}, {(char*)0},
+#line 142 "IWORKToken.gperf"
+      {"lineSpacing",lineSpacing},
+      {(char*)0},
+#line 35 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderBorderVectorStyle",SFTableStylePropertyHeaderBorderVectorStyle},
+      {(char*)0}, {(char*)0},
+#line 191 "IWORKToken.gperf"
+      {"sizesLocked",sizesLocked},
+      {(char*)0},
+#line 151 "IWORKToken.gperf"
+      {"metadata",metadata},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 163 "IWORKToken.gperf"
+      {"paragraphstyle-ref",paragraphstyle_ref},
+      {(char*)0},
+#line 94 "IWORKToken.gperf"
+      {"firstLineIndent",firstLineIndent},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 109 "IWORKToken.gperf"
+      {"grid-column",grid_column},
+#line 88 "IWORKToken.gperf"
+      {"du",du},
+#line 41 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderRowCellStyle",SFTableStylePropertyHeaderRowCellStyle},
+#line 108 "IWORKToken.gperf"
+      {"grid",grid},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 130 "IWORKToken.gperf"
+      {"language",language},
+#line 39 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderRowCellLayoutStyle",SFTableStylePropertyHeaderRowCellLayoutStyle},
+      {(char*)0},
+#line 59 "IWORKToken.gperf"
+      {"bezier-path",bezier_path},
+#line 40 "IWORKToken.gperf"
+      {"SFTableStylePropertyHeaderRowCellParagraphStyle",SFTableStylePropertyHeaderRowCellParagraphStyle},
+#line 107 "IWORKToken.gperf"
+      {"graphic-style",graphic_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 106 "IWORKToken.gperf"
+      {"geometry",geometry},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 57 "IWORKToken.gperf"
+      {"baselineShift",baselineShift},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 62 "IWORKToken.gperf"
+      {"bold",bold},
+      {(char*)0},
+#line 153 "IWORKToken.gperf"
+      {"movie-media",movie_media},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 102 "IWORKToken.gperf"
+      {"frame-w",frame_w},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 105 "IWORKToken.gperf"
+      {"g",g},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 60 "IWORKToken.gperf"
+      {"bezier-ref",bezier_ref},
+      {(char*)0}, {(char*)0},
+#line 174 "IWORKToken.gperf"
+      {"proxy-master-layer",proxy_master_layer},
+      {(char*)0}, {(char*)0},
+#line 86 "IWORKToken.gperf"
+      {"displayname",displayname},
+      {(char*)0},
+#line 110 "IWORKToken.gperf"
+      {"grid-row",grid_row},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 61 "IWORKToken.gperf"
+      {"body-placeholder-ref",body_placeholder_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 96 "IWORKToken.gperf"
+      {"followingParagraphStyle",followingParagraphStyle},
+#line 87 "IWORKToken.gperf"
+      {"drawables",drawables},
+      {(char*)0},
+#line 199 "IWORKToken.gperf"
+      {"string",string},
+      {(char*)0}, {(char*)0},
+#line 34 "IWORKToken.gperf"
+      {"SFTableStylePropertyCellStyle",SFTableStylePropertyCellStyle},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 32 "IWORKToken.gperf"
+      {"SFTableStylePropertyCellLayoutStyle",SFTableStylePropertyCellLayoutStyle},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 104 "IWORKToken.gperf"
+      {"frame-y",frame_y},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 124 "IWORKToken.gperf"
+      {"image-media",image_media},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 89 "IWORKToken.gperf"
+      {"editable-bezier-path",editable_bezier_path},
+#line 56 "IWORKToken.gperf"
+      {"b",b},
+      {(char*)0}, {(char*)0},
+#line 218 "IWORKToken.gperf"
+      {"text-body",text_body},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 63 "IWORKToken.gperf"
+      {"bulletListStyle",bulletListStyle}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 236 "IWORKToken.gperf"
+
diff --git a/external/libetonyek/generated/KEY1Token.inc b/external/libetonyek/generated/KEY1Token.inc
new file mode 100644
index 0000000..84018792
--- /dev/null
+++ b/external/libetonyek/generated/KEY1Token.inc
@@ -0,0 +1,540 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ KEY1Token.gperf  */
+/* Computed positions: -k'1,3,6,9,14' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "KEY1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace KEY1Token;
+#line 18 "KEY1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 368, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned short asso_values[] =
+    {
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371,  85, 115, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371,   0,   0,   5,  15,
+        0,   0,   0, 371, 371, 371, 371, 371,  15,  30,
+       50, 371,   5,   5,   0, 371,  25, 371, 371, 371,
+      371, 371, 371, 371, 371,  10, 371,   0,  25, 110,
+       10,  10,  10,  20,  75,  60, 105,   0,  15,   5,
+        0,  85,  50,  15,  80,   5,  10,  40,  35,  85,
+      371,  65,   0,  40, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[13]];
+      /*FALLTHROUGH*/
+      case 13:
+      case 12:
+      case 11:
+      case 10:
+      case 9:
+        hval += asso_values[(unsigned char)str[8]];
+      /*FALLTHROUGH*/
+      case 8:
+      case 7:
+      case 6:
+        hval += asso_values[(unsigned char)str[5]];
+      /*FALLTHROUGH*/
+      case 5:
+      case 4:
+      case 3:
+        hval += asso_values[(unsigned char)str[2]+1];
+      /*FALLTHROUGH*/
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 149,
+      MIN_WORD_LENGTH = 2,
+      MAX_WORD_LENGTH = 35,
+      MIN_HASH_VALUE = 3,
+      MAX_HASH_VALUE = 370
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 79 "KEY1Token.gperf"
+      {"key",key},
+#line 101 "KEY1Token.gperf"
+      {"name",name},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 103 "KEY1Token.gperf"
+      {"null",null},
+#line 29 "KEY1Token.gperf"
+      {"array",array},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 30 "KEY1Token.gperf"
+      {"axes",axes},
+#line 126 "KEY1Token.gperf"
+      {"serie",serie},
+#line 145 "KEY1Token.gperf"
+      {"styles",styles},
+      {(char*)0}, {(char*)0},
+#line 58 "KEY1Token.gperf"
+      {"file",file},
+#line 140 "KEY1Token.gperf"
+      {"steps",steps},
+#line 127 "KEY1Token.gperf"
+      {"series",series},
+      {(char*)0}, {(char*)0},
+#line 53 "KEY1Token.gperf"
+      {"dict",dict},
+#line 151 "KEY1Token.gperf"
+      {"theme",theme},
+#line 146 "KEY1Token.gperf"
+      {"symbol",symbol},
+      {(char*)0}, {(char*)0},
+#line 162 "KEY1Token.gperf"
+      {"type",type},
+#line 157 "KEY1Token.gperf"
+      {"time-stamp",time_stamp},
+      {(char*)0},
+#line 54 "KEY1Token.gperf"
+      {"display-name",display_name},
+#line 94 "KEY1Token.gperf"
+      {"majorTickPositions",majorTickPositions},
+      {(char*)0},
+#line 130 "KEY1Token.gperf"
+      {"shape",shape},
+#line 141 "KEY1Token.gperf"
+      {"string",string},
+#line 138 "KEY1Token.gperf"
+      {"spacing",spacing},
+      {(char*)0},
+#line 33 "KEY1Token.gperf"
+      {"body",body},
+      {(char*)0},
+#line 93 "KEY1Token.gperf"
+      {"locked",locked},
+#line 143 "KEY1Token.gperf"
+      {"stroke-style",stroke_style},
+      {(char*)0},
+#line 61 "KEY1Token.gperf"
+      {"fill-type",fill_type},
+#line 60 "KEY1Token.gperf"
+      {"fill-style",fill_style},
+#line 35 "KEY1Token.gperf"
+      {"bullet",bullet},
+#line 38 "KEY1Token.gperf"
+      {"bullets",bullets},
+      {(char*)0},
+#line 133 "KEY1Token.gperf"
+      {"size",size},
+#line 45 "KEY1Token.gperf"
+      {"dash-style",dash_style},
+      {(char*)0},
+#line 92 "KEY1Token.gperf"
+      {"lock-aspect-ratio",lock_aspect_ratio},
+#line 99 "KEY1Token.gperf"
+      {"metadata",metadata},
+#line 46 "KEY1Token.gperf"
+      {"data",data},
+#line 158 "KEY1Token.gperf"
+      {"title",title},
+      {(char*)0},
+#line 102 "KEY1Token.gperf"
+      {"natural-size",natural_size},
+#line 37 "KEY1Token.gperf"
+      {"bullet-indentation",bullet_indentation},
+#line 147 "KEY1Token.gperf"
+      {"symbolFillMode",symbolFillMode},
+#line 83 "KEY1Token.gperf"
+      {"layerElementsForShadowing",layerElementsForShadowing},
+      {(char*)0},
+#line 71 "KEY1Token.gperf"
+      {"id",id},
+#line 66 "KEY1Token.gperf"
+      {"gradient",gradient},
+#line 160 "KEY1Token.gperf"
+      {"transformation",transformation},
+#line 154 "KEY1Token.gperf"
+      {"tickLabelsAngle",tickLabelsAngle},
+#line 164 "KEY1Token.gperf"
+      {"userMaximum",userMaximum},
+#line 171 "KEY1Token.gperf"
+      {"visible",visible},
+      {(char*)0},
+#line 152 "KEY1Token.gperf"
+      {"thumbnail",thumbnail},
+#line 153 "KEY1Token.gperf"
+      {"thumbnails",thumbnails},
+      {(char*)0},
+#line 52 "KEY1Token.gperf"
+      {"DefaultLegendSize",DefaultLegendSize},
+#line 132 "KEY1Token.gperf"
+      {"showZero",showZero},
+#line 55 "KEY1Token.gperf"
+      {"drawables",drawables},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 166 "KEY1Token.gperf"
+      {"useUserMaximum",useUserMaximum},
+#line 26 "KEY1Token.gperf"
+      {"angle",angle},
+      {(char*)0},
+#line 117 "KEY1Token.gperf"
+      {"presentation",presentation},
+#line 56 "KEY1Token.gperf"
+      {"duration",duration},
+#line 51 "KEY1Token.gperf"
+      {"DefaultLegendRelativePosition",DefaultLegendRelativePosition},
+      {(char*)0},
+#line 104 "KEY1Token.gperf"
+      {"number",number},
+      {(char*)0}, {(char*)0},
+#line 39 "KEY1Token.gperf"
+      {"byte-size",byte_size},
+#line 73 "KEY1Token.gperf"
+      {"image",image},
+      {(char*)0},
+#line 144 "KEY1Token.gperf"
+      {"stroke-width",stroke_width},
+#line 91 "KEY1Token.gperf"
+      {"location",location},
+#line 124 "KEY1Token.gperf"
+      {"rect",rect},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 63 "KEY1Token.gperf"
+      {"font",font},
+#line 172 "KEY1Token.gperf"
+      {"width",width},
+#line 123 "KEY1Token.gperf"
+      {"radius",radius},
+      {(char*)0}, {(char*)0},
+#line 86 "KEY1Token.gperf"
+      {"line",line},
+#line 85 "KEY1Token.gperf"
+      {"level",level},
+#line 84 "KEY1Token.gperf"
+      {"legend",legend},
+      {(char*)0}, {(char*)0},
+#line 31 "KEY1Token.gperf"
+      {"axis",axis},
+      {(char*)0},
+#line 76 "KEY1Token.gperf"
+      {"interBarGap",interBarGap},
+#line 156 "KEY1Token.gperf"
+      {"tickLabelsVisible",tickLabelsVisible},
+      {(char*)0},
+#line 64 "KEY1Token.gperf"
+      {"font-name",font_name},
+#line 135 "KEY1Token.gperf"
+      {"slide",slide},
+      {(char*)0},
+#line 142 "KEY1Token.gperf"
+      {"stroke-color",stroke_color},
+#line 100 "KEY1Token.gperf"
+      {"minorTickPositions",minorTickPositions},
+#line 65 "KEY1Token.gperf"
+      {"font-size",font_size},
+#line 43 "KEY1Token.gperf"
+      {"color",color},
+#line 106 "KEY1Token.gperf"
+      {"offset",offset},
+#line 96 "KEY1Token.gperf"
+      {"master-slide",master_slide},
+#line 98 "KEY1Token.gperf"
+      {"master-slides",master_slides},
+#line 25 "KEY1Token.gperf"
+      {"altLineVisible",altLineVisible},
+#line 170 "KEY1Token.gperf"
+      {"visibility",visibility},
+#line 165 "KEY1Token.gperf"
+      {"userMinimum",userMinimum},
+#line 107 "KEY1Token.gperf"
+      {"opacity",opacity},
+      {(char*)0},
+#line 125 "KEY1Token.gperf"
+      {"reference",reference},
+#line 69 "KEY1Token.gperf"
+      {"guide",guide},
+      {(char*)0},
+#line 168 "KEY1Token.gperf"
+      {"version",version},
+      {(char*)0},
+#line 119 "KEY1Token.gperf"
+      {"prototype-data",prototype_data},
+      {(char*)0},
+#line 70 "KEY1Token.gperf"
+      {"guides",guides},
+#line 129 "KEY1Token.gperf"
+      {"shadow-style",shadow_style},
+      {(char*)0},
+#line 167 "KEY1Token.gperf"
+      {"useUserMinimum",useUserMinimum},
+      {(char*)0},
+#line 139 "KEY1Token.gperf"
+      {"start-color",start_color},
+#line 36 "KEY1Token.gperf"
+      {"bullet-characters",bullet_characters},
+#line 131 "KEY1Token.gperf"
+      {"showGrid",showGrid},
+#line 148 "KEY1Token.gperf"
+      {"tab-stops",tab_stops},
+      {(char*)0}, {(char*)0},
+#line 159 "KEY1Token.gperf"
+      {"titleVisible",titleVisible},
+      {(char*)0},
+#line 105 "KEY1Token.gperf"
+      {"numberOfPoints",numberOfPoints},
+#line 41 "KEY1Token.gperf"
+      {"chartFrame",chartFrame},
+#line 32 "KEY1Token.gperf"
+      {"background-fill-style",background_fill_style},
+#line 118 "KEY1Token.gperf"
+      {"prototype-bullets",prototype_bullets},
+#line 34 "KEY1Token.gperf"
+      {"buildChunkingStyle",buildChunkingStyle},
+#line 134 "KEY1Token.gperf"
+      {"size-technique",size_technique},
+#line 89 "KEY1Token.gperf"
+      {"line-tail-style",line_tail_style},
+#line 121 "KEY1Token.gperf"
+      {"prototype-plugin",prototype_plugin},
+#line 122 "KEY1Token.gperf"
+      {"prototype-plugins",prototype_plugins},
+      {(char*)0},
+#line 50 "KEY1Token.gperf"
+      {"dataFormatterSuffix",dataFormatterSuffix},
+      {(char*)0},
+#line 109 "KEY1Token.gperf"
+      {"page-number",page_number},
+#line 155 "KEY1Token.gperf"
+      {"tickLabelsOpacity",tickLabelsOpacity},
+#line 163 "KEY1Token.gperf"
+      {"ui-state",ui_state},
+#line 67 "KEY1Token.gperf"
+      {"gradient-angle",gradient_angle},
+      {(char*)0},
+#line 95 "KEY1Token.gperf"
+      {"marker-type",marker_type},
+#line 150 "KEY1Token.gperf"
+      {"textbox",textbox},
+      {(char*)0},
+#line 24 "KEY1Token.gperf"
+      {"altLineOpacity",altLineOpacity},
+#line 47 "KEY1Token.gperf"
+      {"dataFormatterHasThousandsSeparators",dataFormatterHasThousandsSeparators},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 114 "KEY1Token.gperf"
+      {"pieSliceOffset",pieSliceOffset},
+      {(char*)0}, {(char*)0},
+#line 113 "KEY1Token.gperf"
+      {"pattern",pattern},
+      {(char*)0},
+#line 48 "KEY1Token.gperf"
+      {"dataFormatterNumberOfDecimals",dataFormatterNumberOfDecimals},
+#line 149 "KEY1Token.gperf"
+      {"text-attributes",text_attributes},
+#line 75 "KEY1Token.gperf"
+      {"image-scale",image_scale},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 97 "KEY1Token.gperf"
+      {"master-slide-id",master_slide_id},
+      {(char*)0},
+#line 116 "KEY1Token.gperf"
+      {"point_at_top",point_at_top},
+      {(char*)0}, {(char*)0},
+#line 74 "KEY1Token.gperf"
+      {"image-data",image_data},
+#line 72 "KEY1Token.gperf"
+      {"id-ref",id_ref},
+#line 115 "KEY1Token.gperf"
+      {"pieSlicePercentVisible",pieSlicePercentVisible},
+      {(char*)0},
+#line 57 "KEY1Token.gperf"
+      {"end-color",end_color},
+#line 128 "KEY1Token.gperf"
+      {"seriesDirection",seriesDirection},
+#line 90 "KEY1Token.gperf"
+      {"lineVisible",lineVisible},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 27 "KEY1Token.gperf"
+      {"application-name",application_name},
+#line 44 "KEY1Token.gperf"
+      {"content",content},
+      {(char*)0},
+#line 49 "KEY1Token.gperf"
+      {"dataFormatterPrefix",dataFormatterPrefix},
+#line 137 "KEY1Token.gperf"
+      {"slide-size",slide_size},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 78 "KEY1Token.gperf"
+      {"is-filled",is_filled},
+#line 136 "KEY1Token.gperf"
+      {"slide-list",slide_list},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 28 "KEY1Token.gperf"
+      {"application-version",application_version},
+#line 87 "KEY1Token.gperf"
+      {"line-head-style",line_head_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 59 "KEY1Token.gperf"
+      {"fill-color",fill_color},
+#line 88 "KEY1Token.gperf"
+      {"lineOpacity",lineOpacity},
+#line 82 "KEY1Token.gperf"
+      {"labelVisible",labelVisible},
+      {(char*)0},
+#line 120 "KEY1Token.gperf"
+      {"prototype-drawables",prototype_drawables},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 77 "KEY1Token.gperf"
+      {"interSeriesGap",interSeriesGap},
+      {(char*)0},
+#line 62 "KEY1Token.gperf"
+      {"floating-content",floating_content},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 112 "KEY1Token.gperf"
+      {"paragraph-head-indent",paragraph_head_indent},
+#line 111 "KEY1Token.gperf"
+      {"paragraph-first-line-indent",paragraph_first_line_indent},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 68 "KEY1Token.gperf"
+      {"gridOpacity",gridOpacity},
+      {(char*)0},
+#line 81 "KEY1Token.gperf"
+      {"labelPosition",labelPosition},
+#line 110 "KEY1Token.gperf"
+      {"paragraph-alignment",paragraph_alignment},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 169 "KEY1Token.gperf"
+      {"vertical-alignment",vertical_alignment},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 161 "KEY1Token.gperf"
+      {"transition-style",transition_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 108 "KEY1Token.gperf"
+      {"orientation",orientation},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 80 "KEY1Token.gperf"
+      {"labelOpacity",labelOpacity},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 40 "KEY1Token.gperf"
+      {"character-bullet-style",character_bullet_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 42 "KEY1Token.gperf"
+      {"chart-prototype",chart_prototype}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 173 "KEY1Token.gperf"
+
diff --git a/external/libetonyek/generated/KEY2Token.inc b/external/libetonyek/generated/KEY2Token.inc
new file mode 100644
index 0000000..c161f45
--- /dev/null
+++ b/external/libetonyek/generated/KEY2Token.inc
@@ -0,0 +1,216 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ KEY2Token.gperf  */
+/* Computed positions: -k'1,4-5' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "KEY2Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace KEY2Token;
+#line 18 "KEY2Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 66, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67,  5, 67, 67,  5, 10,
+      15, 67, 20, 15, 67, 10,  0,  0,  0, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67,  0,  0,  0,
+      15,  5, 67, 67, 15,  5, 67,  0,  5,  0,
+      30, 67,  5, 67, 15,  0,  0, 67, 20, 67,
+      67,  0, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+      67, 67, 67, 67, 67, 67
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+        hval += asso_values[(unsigned char)str[3]];
+      /*FALLTHROUGH*/
+      case 3:
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 31,
+      MIN_WORD_LENGTH = 1,
+      MAX_WORD_LENGTH = 46,
+      MIN_HASH_VALUE = 1,
+      MAX_HASH_VALUE = 66
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0},
+#line 30 "KEY2Token.gperf"
+      {"c",c},
+      {(char*)0},
+#line 35 "KEY2Token.gperf"
+      {"key",key},
+#line 50 "KEY2Token.gperf"
+      {"text",text},
+      {(char*)0},
+#line 34 "KEY2Token.gperf"
+      {"i",i},
+      {(char*)0}, {(char*)0},
+#line 43 "KEY2Token.gperf"
+      {"size",size},
+#line 51 "KEY2Token.gperf"
+      {"theme",theme},
+#line 47 "KEY2Token.gperf"
+      {"sticky-note",sticky_note},
+#line 48 "KEY2Token.gperf"
+      {"sticky-notes",sticky_notes},
+      {(char*)0},
+#line 40 "KEY2Token.gperf"
+      {"page",page},
+#line 52 "KEY2Token.gperf"
+      {"theme-list",theme_list},
+#line 28 "KEY2Token.gperf"
+      {"92008102400",VERSION_STR_5},
+#line 36 "KEY2Token.gperf"
+      {"master-slide",master_slide},
+#line 37 "KEY2Token.gperf"
+      {"master-slides",master_slides},
+#line 46 "KEY2Token.gperf"
+      {"star",star},
+#line 49 "KEY2Token.gperf"
+      {"stylesheet",stylesheet},
+#line 29 "KEY2Token.gperf"
+      {"body-placeholder",body_placeholder},
+#line 41 "KEY2Token.gperf"
+      {"presentation",presentation},
+#line 38 "KEY2Token.gperf"
+      {"metadata",metadata},
+      {(char*)0},
+#line 44 "KEY2Token.gperf"
+      {"slide",slide},
+#line 31 "KEY2Token.gperf"
+      {"double",double_},
+#line 53 "KEY2Token.gperf"
+      {"title-placeholder",title_placeholder},
+      {(char*)0}, {(char*)0},
+#line 45 "KEY2Token.gperf"
+      {"slide-list",slide_list},
+      {(char*)0},
+#line 54 "KEY2Token.gperf"
+      {"version",version},
+      {(char*)0}, {(char*)0},
+#line 42 "KEY2Token.gperf"
+      {"right",right},
+#line 27 "KEY2Token.gperf"
+      {"72007061400",VERSION_STR_4},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 39 "KEY2Token.gperf"
+      {"notes",notes},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 25 "KEY2Token.gperf"
+      {"2005092101",COMPATIBLE_VERSION_STR_3,},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 26 "KEY2Token.gperf"
+      {"2005112100",VERSION_STR_3},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 24 "KEY2Token.gperf"
+      {"2004102100",VERSION_STR_2},
+      {(char*)0},
+#line 32 "KEY2Token.gperf"
+      {"headlineParagraphStyle",headlineParagraphStyle},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 33 "KEY2Token.gperf"
+      {"http://developer.apple.com/namespaces/keynote2",NS_URI_KEY}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 55 "KEY2Token.gperf"
+
diff --git a/external/libetonyek/generated/NUM1Token.inc b/external/libetonyek/generated/NUM1Token.inc
new file mode 100644
index 0000000..837584a
--- /dev/null
+++ b/external/libetonyek/generated/NUM1Token.inc
@@ -0,0 +1,147 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ NUM1Token.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "NUM1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace NUM1Token;
+#line 18 "NUM1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 34, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41,  0, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+       0, 41, 41, 41,  0, 41, 41, 41, 41, 41,
+      41, 41,  5, 41, 41,  0, 41, 41,  0,  0,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 8,
+      MIN_WORD_LENGTH = 7,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 7,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 31 "NUM1Token.gperf"
+      {"version",version},
+#line 26 "NUM1Token.gperf"
+      {"document",document},
+#line 29 "NUM1Token.gperf"
+      {"workspace",workspace},
+#line 28 "NUM1Token.gperf"
+      {"stylesheet",stylesheet},
+#line 24 "NUM1Token.gperf"
+      {"92008102400",VERSION_STR_2},
+      {(char*)0}, {(char*)0},
+#line 27 "NUM1Token.gperf"
+      {"page-info",page_info},
+#line 30 "NUM1Token.gperf"
+      {"workspace-array",workspace_array},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 25 "NUM1Token.gperf"
+      {"http://developer.apple.com/namespaces/ls",NS_URI_LS}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 32 "NUM1Token.gperf"
+
diff --git a/external/libetonyek/generated/NUMToken.inc b/external/libetonyek/generated/NUMToken.inc
new file mode 100644
index 0000000..d446abd
--- /dev/null
+++ b/external/libetonyek/generated/NUMToken.inc
@@ -0,0 +1,146 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ NUMToken.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "NUMToken.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace NUMToken;
+#line 18 "NUMToken.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 34, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41,  0, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41,  0, 41, 41, 41, 41, 41,
+      41, 41,  5, 41, 41,  0, 41, 41,  0,  0,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 7,
+      MIN_WORD_LENGTH = 7,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 7,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 30 "NUMToken.gperf"
+      {"version",version},
+      {(char*)0},
+#line 28 "NUMToken.gperf"
+      {"workspace",workspace},
+#line 27 "NUMToken.gperf"
+      {"stylesheet",stylesheet},
+#line 24 "NUMToken.gperf"
+      {"92008102400",VERSION_STR_2},
+      {(char*)0}, {(char*)0},
+#line 26 "NUMToken.gperf"
+      {"page-info",page_info},
+#line 29 "NUMToken.gperf"
+      {"workspace-array",workspace_array},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 25 "NUMToken.gperf"
+      {"http://developer.apple.com/namespaces/ls",NS_URI_LS}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 31 "NUMToken.gperf"
+
diff --git a/external/libetonyek/generated/PAG1Token.inc b/external/libetonyek/generated/PAG1Token.inc
new file mode 100644
index 0000000..78ac0de
--- /dev/null
+++ b/external/libetonyek/generated/PAG1Token.inc
@@ -0,0 +1,158 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ PAG1Token.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "PAG1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace PAG1Token;
+#line 18 "PAG1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 37, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41,  5, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 10,  5,
+       5, 41,  0, 41,  0, 41, 41, 41,  5, 41,
+       0, 41, 41, 41, 41,  0,  5, 41,  0, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 13,
+      MIN_WORD_LENGTH = 4,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 4,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 32 "PAG1Token.gperf"
+      {"note",note},
+      {(char*)0},
+#line 29 "PAG1Token.gperf"
+      {"header",header},
+#line 36 "PAG1Token.gperf"
+      {"version",version},
+#line 28 "PAG1Token.gperf"
+      {"footnote",footnote},
+#line 26 "PAG1Token.gperf"
+      {"cell",cell},
+#line 34 "PAG1Token.gperf"
+      {"stylesheet",stylesheet},
+#line 31 "PAG1Token.gperf"
+      {"layout",layout},
+#line 35 "PAG1Token.gperf"
+      {"textbox",textbox},
+#line 27 "PAG1Token.gperf"
+      {"document",document},
+#line 25 "PAG1Token.gperf"
+      {"body",body},
+      {(char*)0},
+#line 24 "PAG1Token.gperf"
+      {"92008102400",VERSION_STR_4},
+      {(char*)0},
+#line 33 "PAG1Token.gperf"
+      {"section-prototypes",section_prototypes},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 30 "PAG1Token.gperf"
+      {"http://developer.apple.com/namespaces/sl",NS_URI_SL}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 37 "PAG1Token.gperf"
+
diff --git a/external/libetonyek/generated/PAGToken.inc b/external/libetonyek/generated/PAGToken.inc
new file mode 100644
index 0000000..0d83a6d
--- /dev/null
+++ b/external/libetonyek/generated/PAGToken.inc
@@ -0,0 +1,158 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: /usr/bin/gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ PAGToken.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "PAGToken.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace PAGToken;
+#line 18 "PAGToken.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 37, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41,  5, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 10,  5,
+       5, 41,  0, 41,  0, 41, 41, 41,  5, 41,
+       0, 41, 41, 41, 41,  0,  5, 41,  0, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 13,
+      MIN_WORD_LENGTH = 4,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 4,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 32 "PAGToken.gperf"
+      {"note",note},
+      {(char*)0},
+#line 29 "PAGToken.gperf"
+      {"header",header},
+#line 36 "PAGToken.gperf"
+      {"version",version},
+#line 28 "PAGToken.gperf"
+      {"footnote",footnote},
+#line 26 "PAGToken.gperf"
+      {"cell",cell},
+#line 34 "PAGToken.gperf"
+      {"stylesheet",stylesheet},
+#line 31 "PAGToken.gperf"
+      {"layout",layout},
+#line 35 "PAGToken.gperf"
+      {"textbox",textbox},
+#line 27 "PAGToken.gperf"
+      {"document",document},
+#line 25 "PAGToken.gperf"
+      {"body",body},
+      {(char*)0},
+#line 24 "PAGToken.gperf"
+      {"92008102400",VERSION_STR_4},
+      {(char*)0},
+#line 33 "PAGToken.gperf"
+      {"section-prototypes",section_prototypes},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 30 "PAGToken.gperf"
+      {"http://developer.apple.com/namespaces/sl",NS_URI_SL}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 37 "PAGToken.gperf"
+


More information about the Libreoffice-commits mailing list