15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright © 2007,2008,2009  Red Hat, Inc.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright © 2011,2012  Google, Inc.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  This is part of HarfBuzz, a text shaping library.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Permission is hereby granted, without written agreement and without
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * license or royalty fees, to use, copy, modify, and distribute this
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * software and its documentation for any purpose, provided that the
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * above copyright notice and the following two paragraphs appear in
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * all copies of this software.
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DAMAGE.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Red Hat Author(s): Behdad Esfahbod
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Google Author(s): Behdad Esfahbod
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HB_H_IN
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error "Include <hb.h> instead."
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HB_COMMON_H
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_COMMON_H
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HB_BEGIN_DECLS
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __cplusplus
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HB_BEGIN_DECLS	extern "C" {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HB_END_DECLS		}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# else /* !__cplusplus */
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HB_BEGIN_DECLS
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HB_END_DECLS
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif /* !__cplusplus */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined (HB_DONT_DEFINE_STDINT)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || \
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    defined (_sgi) || defined (__sun) || defined (sun) || \
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    defined (__digital__) || defined (__HP_cc)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <inttypes.h>
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined (_AIX)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <sys/inttypes.h>
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* VS 2010 (_MSC_VER 1600) has stdint.h */
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined (_MSC_VER) && _MSC_VER < 1600
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int8 int8_t;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int8 uint8_t;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int16 int16_t;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int16 uint16_t;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int32 int32_t;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int32 uint32_t;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int64 int64_t;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int64 uint64_t;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <stdint.h>
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)HB_BEGIN_DECLS
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int hb_bool_t;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef uint32_t hb_codepoint_t;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int32_t hb_position_t;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef uint32_t hb_mask_t;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef union _hb_var_int_t {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint32_t u32;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32_t i32;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint16_t u16[2];
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int16_t i16[2];
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint8_t u8[4];
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int8_t i8[4];
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} hb_var_int_t;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* hb_tag_t */
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef uint32_t hb_tag_t;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4))))
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_UNTAG(tag)   ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag))
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_TAG_NONE HB_TAG(0,0,0,0)
9723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* len=-1 means str is NUL-terminated. */
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_tag_t
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_tag_from_string (const char *str, int len);
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* buf should have 4 bytes. */
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_tag_to_string (hb_tag_t tag, char *buf);
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* hb_direction_t */
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HB_DIRECTION_INVALID = 0,
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HB_DIRECTION_LTR = 4,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HB_DIRECTION_RTL,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HB_DIRECTION_TTB,
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HB_DIRECTION_BTT
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} hb_direction_t;
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* len=-1 means str is NUL-terminated */
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_direction_t
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_direction_from_string (const char *str, int len);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_direction_to_string (hb_direction_t direction);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define HB_DIRECTION_IS_VALID(dir)	((((unsigned int) (dir)) & ~3U) == 4)
12703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)/* Direction must be valid for the following */
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_DIRECTION_IS_HORIZONTAL(dir)	((((unsigned int) (dir)) & ~1U) == 4)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_DIRECTION_IS_VERTICAL(dir)	((((unsigned int) (dir)) & ~1U) == 6)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_DIRECTION_IS_FORWARD(dir)	((((unsigned int) (dir)) & ~2U) == 4)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_DIRECTION_IS_BACKWARD(dir)	((((unsigned int) (dir)) & ~2U) == 5)
13203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define HB_DIRECTION_REVERSE(dir)	((hb_direction_t) (((unsigned int) (dir)) ^ 1))
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* hb_language_t */
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef const struct hb_language_impl_t *hb_language_t;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* len=-1 means str is NUL-terminated */
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_language_t
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_language_from_string (const char *str, int len);
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_language_to_string (hb_language_t language);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HB_LANGUAGE_INVALID ((hb_language_t) NULL)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_language_t
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_language_get_default (void);
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* hb_script_t */
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* http://unicode.org/iso15924/ */
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* http://goo.gl/x9ilM */
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Unicode Character Database property: Script (sc) */
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_COMMON			= HB_TAG ('Z','y','y','y'),
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_INHERITED			= HB_TAG ('Z','i','n','h'),
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_UNKNOWN			= HB_TAG ('Z','z','z','z'),
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_ARABIC			= HB_TAG ('A','r','a','b'),
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_ARMENIAN			= HB_TAG ('A','r','m','n'),
165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_BENGALI			= HB_TAG ('B','e','n','g'),
166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_CYRILLIC			= HB_TAG ('C','y','r','l'),
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_DEVANAGARI			= HB_TAG ('D','e','v','a'),
168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_GEORGIAN			= HB_TAG ('G','e','o','r'),
169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_GREEK			= HB_TAG ('G','r','e','k'),
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_GUJARATI			= HB_TAG ('G','u','j','r'),
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_GURMUKHI			= HB_TAG ('G','u','r','u'),
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_HANGUL			= HB_TAG ('H','a','n','g'),
173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_HAN				= HB_TAG ('H','a','n','i'),
174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_HEBREW			= HB_TAG ('H','e','b','r'),
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_HIRAGANA			= HB_TAG ('H','i','r','a'),
176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_KANNADA			= HB_TAG ('K','n','d','a'),
177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_KATAKANA			= HB_TAG ('K','a','n','a'),
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_LAO				= HB_TAG ('L','a','o','o'),
179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_LATIN			= HB_TAG ('L','a','t','n'),
180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_MALAYALAM			= HB_TAG ('M','l','y','m'),
181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_ORIYA			= HB_TAG ('O','r','y','a'),
182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_TAMIL			= HB_TAG ('T','a','m','l'),
183f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_TELUGU			= HB_TAG ('T','e','l','u'),
184f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*1.1*/ HB_SCRIPT_THAI			= HB_TAG ('T','h','a','i'),
185f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*2.0*/ HB_SCRIPT_TIBETAN			= HB_TAG ('T','i','b','t'),
187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
188f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_BOPOMOFO			= HB_TAG ('B','o','p','o'),
189f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_BRAILLE			= HB_TAG ('B','r','a','i'),
190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_CANADIAN_SYLLABICS		= HB_TAG ('C','a','n','s'),
191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_CHEROKEE			= HB_TAG ('C','h','e','r'),
192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_ETHIOPIC			= HB_TAG ('E','t','h','i'),
193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_KHMER			= HB_TAG ('K','h','m','r'),
194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_MONGOLIAN			= HB_TAG ('M','o','n','g'),
195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_MYANMAR			= HB_TAG ('M','y','m','r'),
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_OGHAM			= HB_TAG ('O','g','a','m'),
197f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_RUNIC			= HB_TAG ('R','u','n','r'),
198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_SINHALA			= HB_TAG ('S','i','n','h'),
199f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_SYRIAC			= HB_TAG ('S','y','r','c'),
200f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_THAANA			= HB_TAG ('T','h','a','a'),
201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.0*/ HB_SCRIPT_YI				= HB_TAG ('Y','i','i','i'),
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.1*/ HB_SCRIPT_DESERET			= HB_TAG ('D','s','r','t'),
204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.1*/ HB_SCRIPT_GOTHIC			= HB_TAG ('G','o','t','h'),
205f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.1*/ HB_SCRIPT_OLD_ITALIC			= HB_TAG ('I','t','a','l'),
206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
207f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.2*/ HB_SCRIPT_BUHID			= HB_TAG ('B','u','h','d'),
208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.2*/ HB_SCRIPT_HANUNOO			= HB_TAG ('H','a','n','o'),
209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.2*/ HB_SCRIPT_TAGALOG			= HB_TAG ('T','g','l','g'),
210f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*3.2*/ HB_SCRIPT_TAGBANWA			= HB_TAG ('T','a','g','b'),
211f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
212f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_CYPRIOT			= HB_TAG ('C','p','r','t'),
213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_LIMBU			= HB_TAG ('L','i','m','b'),
214f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_LINEAR_B			= HB_TAG ('L','i','n','b'),
215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_OSMANYA			= HB_TAG ('O','s','m','a'),
216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_SHAVIAN			= HB_TAG ('S','h','a','w'),
217f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_TAI_LE			= HB_TAG ('T','a','l','e'),
218f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.0*/ HB_SCRIPT_UGARITIC			= HB_TAG ('U','g','a','r'),
219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_BUGINESE			= HB_TAG ('B','u','g','i'),
221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_COPTIC			= HB_TAG ('C','o','p','t'),
222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_GLAGOLITIC			= HB_TAG ('G','l','a','g'),
223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_KHAROSHTHI			= HB_TAG ('K','h','a','r'),
224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_NEW_TAI_LUE			= HB_TAG ('T','a','l','u'),
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_OLD_PERSIAN			= HB_TAG ('X','p','e','o'),
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_SYLOTI_NAGRI		= HB_TAG ('S','y','l','o'),
227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*4.1*/ HB_SCRIPT_TIFINAGH			= HB_TAG ('T','f','n','g'),
228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_BALINESE			= HB_TAG ('B','a','l','i'),
230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_CUNEIFORM			= HB_TAG ('X','s','u','x'),
231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_NKO				= HB_TAG ('N','k','o','o'),
232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_PHAGS_PA			= HB_TAG ('P','h','a','g'),
233f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.0*/ HB_SCRIPT_PHOENICIAN			= HB_TAG ('P','h','n','x'),
234f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
235f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_CARIAN			= HB_TAG ('C','a','r','i'),
236f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_CHAM			= HB_TAG ('C','h','a','m'),
237f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_KAYAH_LI			= HB_TAG ('K','a','l','i'),
238f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_LEPCHA			= HB_TAG ('L','e','p','c'),
239f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_LYCIAN			= HB_TAG ('L','y','c','i'),
240f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_LYDIAN			= HB_TAG ('L','y','d','i'),
241f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_OL_CHIKI			= HB_TAG ('O','l','c','k'),
242f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_REJANG			= HB_TAG ('R','j','n','g'),
243f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_SAURASHTRA			= HB_TAG ('S','a','u','r'),
244f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_SUNDANESE			= HB_TAG ('S','u','n','d'),
245f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.1*/ HB_SCRIPT_VAI				= HB_TAG ('V','a','i','i'),
246f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
247f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_AVESTAN			= HB_TAG ('A','v','s','t'),
248f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_BAMUM			= HB_TAG ('B','a','m','u'),
249f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_EGYPTIAN_HIEROGLYPHS	= HB_TAG ('E','g','y','p'),
250f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_IMPERIAL_ARAMAIC		= HB_TAG ('A','r','m','i'),
251f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PAHLAVI	= HB_TAG ('P','h','l','i'),
252f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_INSCRIPTIONAL_PARTHIAN	= HB_TAG ('P','r','t','i'),
253f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_JAVANESE			= HB_TAG ('J','a','v','a'),
254f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_KAITHI			= HB_TAG ('K','t','h','i'),
255f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_LISU			= HB_TAG ('L','i','s','u'),
256f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_MEETEI_MAYEK		= HB_TAG ('M','t','e','i'),
257f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_OLD_SOUTH_ARABIAN		= HB_TAG ('S','a','r','b'),
258f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_OLD_TURKIC			= HB_TAG ('O','r','k','h'),
259f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_SAMARITAN			= HB_TAG ('S','a','m','r'),
260f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_TAI_THAM			= HB_TAG ('L','a','n','a'),
261f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*5.2*/ HB_SCRIPT_TAI_VIET			= HB_TAG ('T','a','v','t'),
262f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
263f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.0*/ HB_SCRIPT_BATAK			= HB_TAG ('B','a','t','k'),
264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.0*/ HB_SCRIPT_BRAHMI			= HB_TAG ('B','r','a','h'),
265f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.0*/ HB_SCRIPT_MANDAIC			= HB_TAG ('M','a','n','d'),
266f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
267f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_CHAKMA			= HB_TAG ('C','a','k','m'),
268f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_MEROITIC_CURSIVE		= HB_TAG ('M','e','r','c'),
269f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_MEROITIC_HIEROGLYPHS	= HB_TAG ('M','e','r','o'),
270f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_MIAO			= HB_TAG ('P','l','r','d'),
271f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_SHARADA			= HB_TAG ('S','h','r','d'),
272f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_SORA_SOMPENG		= HB_TAG ('S','o','r','a'),
273f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*6.1*/ HB_SCRIPT_TAKRI			= HB_TAG ('T','a','k','r'),
274f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
275f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_BASSA_VAH			= HB_TAG ('B','a','s','s'),
276f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_CAUCASIAN_ALBANIAN		= HB_TAG ('A','g','h','b'),
277f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_DUPLOYAN			= HB_TAG ('D','u','p','l'),
278f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_ELBASAN			= HB_TAG ('E','l','b','a'),
279f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_GRANTHA			= HB_TAG ('G','r','a','n'),
280f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_KHOJKI			= HB_TAG ('K','h','o','j'),
281f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_KHUDAWADI			= HB_TAG ('S','i','n','d'),
282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_LINEAR_A			= HB_TAG ('L','i','n','a'),
283f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_MAHAJANI			= HB_TAG ('M','a','h','j'),
284f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_MANICHAEAN			= HB_TAG ('M','a','n','i'),
285f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_MENDE_KIKAKUI		= HB_TAG ('M','e','n','d'),
2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_MODI			= HB_TAG ('M','o','d','i'),
287f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_MRO				= HB_TAG ('M','r','o','o'),
288f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_NABATAEAN			= HB_TAG ('N','b','a','t'),
289f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_OLD_NORTH_ARABIAN		= HB_TAG ('N','a','r','b'),
290f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_OLD_PERMIC			= HB_TAG ('P','e','r','m'),
291f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_PAHAWH_HMONG		= HB_TAG ('H','m','n','g'),
292f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_PALMYRENE			= HB_TAG ('P','a','l','m'),
2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_PAU_CIN_HAU			= HB_TAG ('P','a','u','c'),
294f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_PSALTER_PAHLAVI		= HB_TAG ('P','h','l','p'),
2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_SIDDHAM			= HB_TAG ('S','i','d','d'),
296f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_TIRHUTA			= HB_TAG ('T','i','r','h'),
297f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /*7.0*/ HB_SCRIPT_WARANG_CITI			= HB_TAG ('W','a','r','a'),
2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  /* No script set. */
30003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  HB_SCRIPT_INVALID				= HB_TAG_NONE,
30103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
30203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script_t
30303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   * without risking undefined behavior.  Include both a signed and unsigned max,
30403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   * since technically enums are int, and indeed, hb_script_t ends up being signed.
30503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   * See this thread for technicalities:
30603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   *
30703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   *   http://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html
30803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)   */
30903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  _HB_SCRIPT_MAX_VALUE				= HB_TAG_MAX, /*< skip >*/
31003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  _HB_SCRIPT_MAX_VALUE_SIGNED			= HB_TAG_MAX_SIGNED /*< skip >*/
3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} hb_script_t;
313f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Script functions */
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_t
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_from_iso15924_tag (hb_tag_t tag);
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)/* sugar for tag_from_string() then script_from_iso15924_tag */
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* len=-1 means s is NUL-terminated */
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_t
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_from_string (const char *s, int len);
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_tag_t
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_to_iso15924_tag (hb_script_t script);
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_direction_t
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hb_script_get_horizontal_direction (hb_script_t script);
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* User data */
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct hb_user_data_key_t {
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*< private >*/
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char unused;
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} hb_user_data_key_t;
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*hb_destroy_func_t) (void *user_data);
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)HB_END_DECLS
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* HB_COMMON_H */
345