
/*
 * @(#)LETypes.h	1.2 00/03/15
 *
 * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved
 *
 */

#ifndef __LETYPES_H
#define __LETYPES_H

#if !defined(LE_USE_CMEMORY) && (defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION))
#define LE_USE_CMEMORY
#endif

#include "unicode/utypes.h"
#include "unicode/uobject.h"

#ifdef LE_USE_CMEMORY
#include "cmemory.h"
#endif

U_NAMESPACE_BEGIN

/**
 * A type used for signed, 32-bit integers.
 *
 * @stable ICU 2.4
 */
typedef int32_t le_int32;

/**
 * A type used for unsigned, 32-bit integers.
 *
 * @stable ICU 2.4
 */
typedef uint32_t le_uint32;

/**
 * A type used for signed, 16-bit integers.
 *
 * @stable ICU 2.4
 */
typedef int16_t le_int16;

/**
 * A type used for unsigned, 16-bit integers.
 *
 * @stable ICU 2.4
 */
typedef uint16_t le_uint16;

/**
 * A type used for signed, 8-bit integers.
 *
 * @stable ICU 2.4
 */
typedef int8_t le_int8;

/**
 * A type used for unsigned, 8-bit integers.
 *
 * @stable ICU 2.4
 */
typedef uint8_t le_uint8;


/**
 * A type used for boolean values.
 *
 * @stable ICU 2.4
 */
typedef UBool le_bool;

#ifndef true
/**
 * Used for <code>le_bool</code> values which are <code>true</code>.
 *
 * @stable ICU 2.4
 */
#define true 1
#endif

#ifndef false
/**
 * Used for <code>le_bool</code> values which are <code>false</code>.
 *
 * @stable ICU 2.4
 */
#define false 0
#endif

#ifndef NULL
/**
 * Used to represent empty pointers.
 *
 * @stable ICU 2.4
 */
#define NULL 0
#endif

/**
 * Used for four character tags.
 *
 * @stable ICU 2.4
 */
typedef le_uint32 LETag;

/**
 * Used for 16-bit glyph indices as they're represented
 * in TrueType font tables.
 *
 * @draft ICU 2.6
 */
typedef le_uint16 TTGlyphID;

/**
 * Used for glyph indices. The low-order 16 bits are
 * the glyph ID within the font. The next 8 bits are
 * the sub-font ID within a compound font. The high-
 * order 8 bits are client defined. The LayoutEngine
 * will never change or look at the client defined bits.
 *
 * @draft ICU 2.6
 */
typedef le_uint32 LEGlyphID;

/**
 * Used to mask off the glyph ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_GLYPH_MASK     0x0000FFFF

/**
 * Used to shift the glyph ID part of an LEGlyphID
 * into the low-order bits.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_GLYPH_SHIFT    0


/**
 * Used to mask off the sub-font ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_SUB_FONT_MASK  0x00FF0000

/**
 * Used to shift the sub-font ID part of an LEGlyphID
 * into the low-order bits.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_SUB_FONT_SHIFT 16


/**
 * Used to mask off the client-defined part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_CLIENT_MASK    0xFF000000

/**
 * Used to shift the sub-font ID part of an LEGlyphID
 * into the low-order bits.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_CLIENT_SHIFT   24


/**
 * A convenience macro to get the Glyph ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_GET_GLYPH(gid) ((gid & LE_GLYPH_MASK) >> LE_GLYPH_SHIFT)

/**
 * A convenience macro to get the sub-font ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_GET_SUB_FONT(gid) ((gid & LE_SUB_FONT_MASK) >> LE_SUB_FONT_SHIFT)

/**
 * A convenience macro to get the client-defined part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_GET_CLIENT(gid) ((gid & LE_CLIENT_MASK) >> LE_CLIENT_SHIFT)


/**
 * A convenience macro to set the Glyph ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_SET_GLYPH(gid, glyph) ((gid & ~LE_GLYPH_MASK) | ((glyph << LE_GLYPH_SHIFT) & LE_GLYPH_MASK))

/**
 * A convenience macro to set the sub-font ID part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_SET_SUB_FONT(gid, font) ((gid & ~LE_SUB_FONT_MASK) | ((font << LE_SUB_FONT_SHIFT) & LE_SUB_FONT_MASK))

/**
 * A convenience macro to set the client-defined part of an LEGlyphID.
 *
 * @see LEGlyphID
 * @draft ICU 2.6
 */
#define LE_SET_CLIENT(gid, client) ((gid & ~LE_CLIENT_MASK) | ((client << LE_CLIENT_SHIFT) & LE_CLIENT_MASK))


/**
 * Used to represent 16-bit Unicode code points.
 *
 * @stable ICU 2.4
 */
typedef UChar LEUnicode16;

/**
 * Used to represent 32-bit Unicode code points.
 *
 * @stable ICU 2.4
 */
typedef UChar32 LEUnicode32;

/**
 * Used to represent 16-bit Unicode code points.
 *
 * @deprecated since ICU 2.4. Use LEUnicode16 instead
 */
typedef UChar LEUnicode;

/**
 * Used to hold a pair of (x, y) values which represent a point.
 *
 * @stable ICU 2.4
 */
struct LEPoint
{
    /**
     * The x coordinate of the point.
     *
     * @stable ICU 2.4
     */
    float fX;

    /**
     * The y coordinate of the point.
     *
     * @stable ICU 2.4
     */
    float fY;
};

#ifndef XP_CPLUSPLUS
/**
 * Used to hold a pair of (x, y) values which represent a point.
 *
 * @stable ICU 2.4
 */
typedef struct LEPoint LEPoint;
#endif

#ifdef LE_USE_CMEMORY
/**
 * A convenience macro for copying an array.
 *
 * @internal
 */
#define LE_ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0])

/**
 * Allocate an array of basic types. This is used to isolate the rest of
 * the LayoutEngine code from cmemory.h.
 *
 * @internal
 */
#define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))

/**
 * Re-allocate an array of basic types. This is used to isolate the rest of
 * the LayoutEngine code from cmemory.h.
 *
 * @internal
 */
#define LE_GROW_ARRAY(array, newSize) uprv_realloc((void *) (array), (newSize) * sizeof (array)[0])

 /**
 * Free an array of basic types. This is used to isolate the rest of
 * the LayoutEngine code from cmemory.h.
 *
 * @internal
 */
#define LE_DELETE_ARRAY(array) uprv_free((void *) (array))
#endif

/**
 * A macro to construct the four-letter tags used to
 * label TrueType tables, and for script, language and
 * feature tags in OpenType tables.
 *
 * WARNING: THIS MACRO WILL ONLY WORK CORRECTLY IF
 * THE ARGUMENT CHARACTERS ARE ASCII.
 *
 * @draft ICU 2.6
 */
#define LE_MAKE_TAG(a, b, c, d) \
    (((le_uint32)(a) << 24) |   \
     ((le_uint32)(b) << 16) |   \
     ((le_uint32)(c) << 8)  |   \
      (le_uint32)(d))

/**
 * This enumeration defines constants for the standard
 * TrueType, OpenType and AAT table tags.
 *
 * @draft ICU 2.6
 */
enum LETableTags {
    LE_ACNT_TABLE_TAG = 0x61636E74UL, /* 'acnt' */
    LE_AVAR_TABLE_TAG = 0x61766172UL, /* 'avar' */
    LE_BASE_TABLE_TAG = 0x42415345UL, /* 'BASE' */
    LE_BDAT_TABLE_TAG = 0x62646174UL, /* 'bdat' */
    LE_BHED_TABLE_TAG = 0x62686564UL, /* 'bhed' */
    LE_BLOC_TABLE_TAG = 0x626C6F63UL, /* 'bloc' */
    LE_BSLN_TABLE_TAG = 0x62736C6EUL, /* 'bsln' */
    LE_CFF__TABLE_TAG = 0x43464620UL, /* 'CFF ' */
    LE_CMAP_TABLE_TAG = 0x636D6170UL, /* 'cmap' */
    LE_CVAR_TABLE_TAG = 0x63766172UL, /* 'cvar' */
    LE_CVT__TABLE_TAG = 0x63767420UL, /* 'cvt ' */
    LE_DSIG_TABLE_TAG = 0x44534947UL, /* 'DSIG' */
    LE_EBDT_TABLE_TAG = 0x45424454UL, /* 'EBDT' */
    LE_EBLC_TABLE_TAG = 0x45424C43UL, /* 'EBLC' */
    LE_EBSC_TABLE_TAG = 0x45425343UL, /* 'EBSC' */
    LE_FDSC_TABLE_TAG = 0x66647363UL, /* 'fdsc' */
    LE_FEAT_TABLE_TAG = 0x66656174UL, /* 'feat' */
    LE_FMTX_TABLE_TAG = 0x666D7478UL, /* 'fmtx' */
    LE_FPGM_TABLE_TAG = 0x6670676DUL, /* 'fpgm' */
    LE_FVAR_TABLE_TAG = 0x66766172UL, /* 'fvar' */
    LE_GASP_TABLE_TAG = 0x67617370UL, /* 'gasp' */
    LE_GDEF_TABLE_TAG = 0x47444546UL, /* 'GDEF' */
    LE_GLYF_TABLE_TAG = 0x676C7966UL, /* 'glyf' */
    LE_GPOS_TABLE_TAG = 0x47504F53UL, /* 'GPOS' */
    LE_GSUB_TABLE_TAG = 0x47535542UL, /* 'GSUB' */
    LE_GVAR_TABLE_TAG = 0x67766172UL, /* 'gvar' */
    LE_HDMX_TABLE_TAG = 0x68646D78UL, /* 'hdmx' */
    LE_HEAD_TABLE_TAG = 0x68656164UL, /* 'head' */
    LE_HHEA_TABLE_TAG = 0x68686561UL, /* 'hhea' */
    LE_HMTX_TABLE_TAG = 0x686D7478UL, /* 'hmtx' */
    LE_HSTY_TABLE_TAG = 0x68737479UL, /* 'hsty' */
    LE_JUST_TABLE_TAG = 0x6A757374UL, /* 'just' */
    LE_JSTF_TABLE_TAG = 0x4A535446UL, /* 'JSTF' */
    LE_KERN_TABLE_TAG = 0x6B65726EUL, /* 'kern' */
    LE_LCAR_TABLE_TAG = 0x6C636172UL, /* 'lcar' */
    LE_LOCA_TABLE_TAG = 0x6C6F6361UL, /* 'loca' */
    LE_LTSH_TABLE_TAG = 0x4C545348UL, /* 'LTSH' */
    LE_MAXP_TABLE_TAG = 0x6D617870UL, /* 'maxp' */
    LE_MORT_TABLE_TAG = 0x6D6F7274UL, /* 'mort' */
    LE_MORX_TABLE_TAG = 0x6D6F7278UL, /* 'morx' */
    LE_NAME_TABLE_TAG = 0x6E616D65UL, /* 'name' */
    LE_OPBD_TABLE_TAG = 0x6F706264UL, /* 'opbd' */
    LE_OS_2_TABLE_TAG = 0x4F532F32UL, /* 'OS/2' */
    LE_PCLT_TABLE_TAG = 0x50434C54UL, /* 'PCLT' */
    LE_POST_TABLE_TAG = 0x706F7374UL, /* 'post' */
    LE_PREP_TABLE_TAG = 0x70726570UL, /* 'prep' */
    LE_PROP_TABLE_TAG = 0x70726F70UL, /* 'prop' */
    LE_TRAK_TABLE_TAG = 0x7472616BUL, /* 'trak' */
    LE_VDMX_TABLE_TAG = 0x56444D58UL, /* 'VDMX' */
    LE_VHEA_TABLE_TAG = 0x76686561UL, /* 'vhea' */
    LE_VMTX_TABLE_TAG = 0x766D7478UL, /* 'vmtx' */
    LE_VORG_TABLE_TAG = 0x564F5247UL, /* 'VORG' */
    LE_ZAPF_TABLE_TAG = 0x5A617066UL  /* 'Zapf' */
};

/**
 * This enumeration defines constants for all
 * the common OpenType feature tags.
 *
 * @draft ICU 2.6
 */
enum LEFeatureTags {
    LE_AALT_FEATURE_TAG = 0x61616C74UL, /* 'aalt' */
    LE_ABVF_FEATURE_TAG = 0x61627666UL, /* 'abvf' */
    LE_ABVM_FEATURE_TAG = 0x6162766DUL, /* 'abvm' */
    LE_ABVS_FEATURE_TAG = 0x61627673UL, /* 'abvs' */
    LE_AFRC_FEATURE_TAG = 0x61667263UL, /* 'afrc' */
    LE_AKHN_FEATURE_TAG = 0x616B686EUL, /* 'akhn' */
    LE_BLWF_FEATURE_TAG = 0x626C7766UL, /* 'blwf' */
    LE_BLWM_FEATURE_TAG = 0x626C776DUL, /* 'blwm' */
    LE_BLWS_FEATURE_TAG = 0x626C7773UL, /* 'blws' */
    LE_CALT_FEATURE_TAG = 0x63616C74UL, /* 'calt' */
    LE_CASE_FEATURE_TAG = 0x63617365UL, /* 'case' */
    LE_CCMP_FEATURE_TAG = 0x63636D70UL, /* 'ccmp' */
    LE_CLIG_FEATURE_TAG = 0x636C6967UL, /* 'clig' */
    LE_CPSP_FEATURE_TAG = 0x63707370UL, /* 'cpsp' */
    LE_CSWH_FEATURE_TAG = 0x63737768UL, /* 'cswh' */
    LE_CURS_FEATURE_TAG = 0x63757273UL, /* 'curs' */
    LE_C2SC_FEATURE_TAG = 0x63327363UL, /* 'c2sc' */
    LE_C2PC_FEATURE_TAG = 0x63327063UL, /* 'c2pc' */
    LE_DIST_FEATURE_TAG = 0x64697374UL, /* 'dist' */
    LE_DLIG_FEATURE_TAG = 0x646C6967UL, /* 'dlig' */
    LE_DNOM_FEATURE_TAG = 0x646E6F6DUL, /* 'dnom' */
    LE_EXPT_FEATURE_TAG = 0x65787074UL, /* 'expt' */
    LE_FALT_FEATURE_TAG = 0x66616C74UL, /* 'falt' */
    LE_FIN2_FEATURE_TAG = 0x66696E32UL, /* 'fin2' */
    LE_FIN3_FEATURE_TAG = 0x66696E33UL, /* 'fin3' */
    LE_FINA_FEATURE_TAG = 0x66696E61UL, /* 'fina' */
    LE_FRAC_FEATURE_TAG = 0x66726163UL, /* 'frac' */
    LE_FWID_FEATURE_TAG = 0x66776964UL, /* 'fwid' */
    LE_HALF_FEATURE_TAG = 0x68616C66UL, /* 'half' */
    LE_HALN_FEATURE_TAG = 0x68616C6EUL, /* 'haln' */
    LE_HALT_FEATURE_TAG = 0x68616C74UL, /* 'halt' */
    LE_HIST_FEATURE_TAG = 0x68697374UL, /* 'hist' */
    LE_HKNA_FEATURE_TAG = 0x686B6E61UL, /* 'hkna' */
    LE_HLIG_FEATURE_TAG = 0x686C6967UL, /* 'hlig' */
    LE_HNGL_FEATURE_TAG = 0x686E676CUL, /* 'hngl' */
    LE_HWID_FEATURE_TAG = 0x68776964UL, /* 'hwid' */
    LE_INIT_FEATURE_TAG = 0x696E6974UL, /* 'init' */
    LE_ISOL_FEATURE_TAG = 0x69736F6CUL, /* 'isol' */
    LE_ITAL_FEATURE_TAG = 0x6974616CUL, /* 'ital' */
    LE_JALT_FEATURE_TAG = 0x6A616C74UL, /* 'jalt' */
    LE_JP78_FEATURE_TAG = 0x6A703738UL, /* 'jp78' */
    LE_JP83_FEATURE_TAG = 0x6A703833UL, /* 'jp83' */
    LE_JP90_FEATURE_TAG = 0x6A703930UL, /* 'jp90' */
    LE_KERN_FEATURE_TAG = 0x6B65726EUL, /* 'kern' */
    LE_LFBD_FEATURE_TAG = 0x6C666264UL, /* 'lfbd' */
    LE_LIGA_FEATURE_TAG = 0x6C696761UL, /* 'liga' */
    LE_LJMO_FEATURE_TAG = 0x6C6A6D6FUL, /* 'ljmo' */
    LE_LNUM_FEATURE_TAG = 0x6C6E756DUL, /* 'lnum' */
    LE_LOCL_FEATURE_TAG = 0x6C6F636CUL, /* 'locl' */
    LE_MARK_FEATURE_TAG = 0x6D61726BUL, /* 'mark' */
    LE_MED2_FEATURE_TAG = 0x6D656432UL, /* 'med2' */
    LE_MEDI_FEATURE_TAG = 0x6D656469UL, /* 'medi' */
    LE_MGRK_FEATURE_TAG = 0x6D67726BUL, /* 'mgrk' */
    LE_MKMK_FEATURE_TAG = 0x6D6B6D6BUL, /* 'mkmk' */
    LE_MSET_FEATURE_TAG = 0x6D736574UL, /* 'mset' */
    LE_NALT_FEATURE_TAG = 0x6E616C74UL, /* 'nalt' */
    LE_NLCK_FEATURE_TAG = 0x6E6C636BUL, /* 'nlck' */
    LE_NUKT_FEATURE_TAG = 0x6E756B74UL, /* 'nukt' */
    LE_NUMR_FEATURE_TAG = 0x6E756D72UL, /* 'numr' */
    LE_ONUM_FEATURE_TAG = 0x6F6E756DUL, /* 'onum' */
    LE_OPBD_FEATURE_TAG = 0x6F706264UL, /* 'opbd' */
    LE_ORDN_FEATURE_TAG = 0x6F72646EUL, /* 'ordn' */
    LE_ORNM_FEATURE_TAG = 0x6F726E6DUL, /* 'ornm' */
    LE_PALT_FEATURE_TAG = 0x70616C74UL, /* 'palt' */
    LE_PCAP_FEATURE_TAG = 0x70636170UL, /* 'pcap' */
    LE_PNUM_FEATURE_TAG = 0x706E756DUL, /* 'pnum' */
    LE_PREF_FEATURE_TAG = 0x70726566UL, /* 'pref' */
    LE_PRES_FEATURE_TAG = 0x70726573UL, /* 'pres' */
    LE_PSTF_FEATURE_TAG = 0x70737466UL, /* 'pstf' */
    LE_PSTS_FEATURE_TAG = 0x70737473UL, /* 'psts' */
    LE_PWID_FEATURE_TAG = 0x70776964UL, /* 'pwid' */
    LE_QWID_FEATURE_TAG = 0x71776964UL, /* 'qwid' */
    LE_RAND_FEATURE_TAG = 0x72616E64UL, /* 'rand' */
    LE_RLIG_FEATURE_TAG = 0x726C6967UL, /* 'rlig' */
    LE_RPHF_FEATURE_TAG = 0x72706866UL, /* 'rphf' */
    LE_RTBD_FEATURE_TAG = 0x72746264UL, /* 'rtbd' */
    LE_RTLA_FEATURE_TAG = 0x72746C61UL, /* 'rtla' */
    LE_RUBY_FEATURE_TAG = 0x72756279UL, /* 'ruby' */
    LE_SALT_FEATURE_TAG = 0x73616C74UL, /* 'salt' */
    LE_SINF_FEATURE_TAG = 0x73696E66UL, /* 'sinf' */
    LE_SIZE_FEATURE_TAG = 0x73697A65UL, /* 'size' */
    LE_SMCP_FEATURE_TAG = 0x736D6370UL, /* 'smcp' */
    LE_SMPL_FEATURE_TAG = 0x736D706CUL, /* 'smpl' */
    LE_SS01_FEATURE_TAG = 0x73733031UL, /* 'ss01' */
    LE_SS02_FEATURE_TAG = 0x73733032UL, /* 'ss02' */
    LE_SS03_FEATURE_TAG = 0x73733033UL, /* 'ss03' */
    LE_SS04_FEATURE_TAG = 0x73733034UL, /* 'ss04' */
    LE_SS05_FEATURE_TAG = 0x73733035UL, /* 'ss05' */
    LE_SS06_FEATURE_TAG = 0x73733036UL, /* 'ss06' */
    LE_SS07_FEATURE_TAG = 0x73733037UL, /* 'ss07' */
    LE_SS08_FEATURE_TAG = 0x73733038UL, /* 'ss08' */
    LE_SS09_FEATURE_TAG = 0x73733039UL, /* 'ss09' */
    LE_SS10_FEATURE_TAG = 0x73733130UL, /* 'ss10' */
    LE_SS11_FEATURE_TAG = 0x73733131UL, /* 'ss11' */
    LE_SS12_FEATURE_TAG = 0x73733132UL, /* 'ss12' */
    LE_SS13_FEATURE_TAG = 0x73733133UL, /* 'ss13' */
    LE_SS14_FEATURE_TAG = 0x73733134UL, /* 'ss14' */
    LE_SS15_FEATURE_TAG = 0x73733135UL, /* 'ss15' */
    LE_SS16_FEATURE_TAG = 0x73733136UL, /* 'ss16' */
    LE_SS17_FEATURE_TAG = 0x73733137UL, /* 'ss17' */
    LE_SS18_FEATURE_TAG = 0x73733138UL, /* 'ss18' */
    LE_SS19_FEATURE_TAG = 0x73733139UL, /* 'ss19' */
    LE_SS20_FEATURE_TAG = 0x73733230UL, /* 'ss20' */
    LE_SUBS_FEATURE_TAG = 0x73756273UL, /* 'subs' */
    LE_SUPS_FEATURE_TAG = 0x73757073UL, /* 'sups' */
    LE_SWSH_FEATURE_TAG = 0x73777368UL, /* 'swsh' */
    LE_TITL_FEATURE_TAG = 0x7469746CUL, /* 'titl' */
    LE_TJMO_FEATURE_TAG = 0x746A6D6FUL, /* 'tjmo' */
    LE_TNAM_FEATURE_TAG = 0x746E616DUL, /* 'tnam' */
    LE_TNUM_FEATURE_TAG = 0x746E756DUL, /* 'tnum' */
    LE_TRAD_FEATURE_TAG = 0x74726164UL, /* 'trad' */
    LE_TWID_FEATURE_TAG = 0x74776964UL, /* 'twid' */
    LE_UNIC_FEATURE_TAG = 0x756E6963UL, /* 'unic' */
    LE_VALT_FEATURE_TAG = 0x76616C74UL, /* 'valt' */
    LE_VATU_FEATURE_TAG = 0x76617475UL, /* 'vatu' */
    LE_VERT_FEATURE_TAG = 0x76657274UL, /* 'vert' */
    LE_VHAL_FEATURE_TAG = 0x7668616CUL, /* 'vhal' */
    LE_VJMO_FEATURE_TAG = 0x766A6D6FUL, /* 'vjmo' */
    LE_VKNA_FEATURE_TAG = 0x766B6E61UL, /* 'vkna' */
    LE_VKRN_FEATURE_TAG = 0x766B726EUL, /* 'vkrn' */
    LE_VPAL_FEATURE_TAG = 0x7670616CUL, /* 'vpal' */
    LE_VRT2_FEATURE_TAG = 0x76727432UL, /* 'vrt2' */
    LE_ZERO_FEATURE_TAG = 0x7A65726FUL  /* 'zero' */
};

/**
 * Error codes returned by the LayoutEngine.
 *
 * @stable ICU 2.4
 */
enum LEErrorCode {
    /* informational */
    LE_NO_SUBFONT_WARNING          = U_USING_DEFAULT_WARNING,

    /* success */
    LE_NO_ERROR                     = U_ZERO_ERROR,

    /* failures */
    LE_ILLEGAL_ARGUMENT_ERROR       = U_ILLEGAL_ARGUMENT_ERROR,
    LE_MEMORY_ALLOCATION_ERROR      = U_MEMORY_ALLOCATION_ERROR,
    LE_INDEX_OUT_OF_BOUNDS_ERROR    = U_INDEX_OUTOFBOUNDS_ERROR,
    LE_NO_LAYOUT_ERROR              = U_UNSUPPORTED_ERROR,
    LE_INTERNAL_ERROR               = U_INTERNAL_PROGRAM_ERROR,
    LE_FONT_FILE_NOT_FOUND_ERROR    = U_FILE_ACCESS_ERROR,
    LE_MISSING_FONT_TABLE_ERROR     = U_MISSING_RESOURCE_ERROR
};

#ifndef XP_CPLUSPLUS
/**
 * Error codes returned by the LayoutEngine.
 *
 * @stable ICU 2.4
 */
typedef enum LEErrorCode LEErrorCode;
#endif

/**
 * A convenience macro to test for the success of a LayoutEngine call.
 *
 * @stable ICU 2.4
 */
#define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code))

/**
 * A convenience macro to test for the failure of a LayoutEngine call.
 *
 * @stable ICU 2.4
 */
#define LE_FAILURE(code) (U_FAILURE((UErrorCode)code))

U_NAMESPACE_END
#endif


