1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * (C) Copyright IBM Corp. 1998-2009 - All Rights Reserved
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __LETYPES_H
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __LETYPES_H
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !defined(LE_USE_CMEMORY) && (defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || defined(U_STATIC_IMPLEMENTATION) || defined(U_COMBINED_IMPLEMENTATION))
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_USE_CMEMORY
12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h"
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef XP_CPLUSPLUS
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uobject.h"
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef LE_USE_CMEMORY
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "cmemory.h"
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*!
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file
2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * \brief C API: Basic definitions for the ICU LayoutEngine
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 32-bit integers.
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int32_t le_int32;
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 32-bit integers.
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint32_t le_uint32;
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 16-bit integers.
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int16_t le_int16;
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 16-bit integers.
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint16_t le_uint16;
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 8-bit integers.
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int8_t le_int8;
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 8-bit integers.
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint8_t le_uint8;
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for boolean values.
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UBool le_bool;
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef NULL
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent empty pointers.
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define NULL 0
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for four character tags.
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint32 LETag;
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for 16-bit glyph indices as they're represented
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * in TrueType font tables.
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint16 TTGlyphID;
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for glyph indices. The low-order 16 bits are
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the glyph ID within the font. The next 8 bits are
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the sub-font ID within a compound font. The high-
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * order 8 bits are client defined. The LayoutEngine
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * will never change or look at the client defined bits.
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint32 LEGlyphID;
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the glyph ID part of an LEGlyphID.
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GLYPH_MASK     0x0000FFFF
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the glyph ID part of an LEGlyphID
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits.
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GLYPH_SHIFT    0
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the sub-font ID part of an LEGlyphID.
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUB_FONT_MASK  0x00FF0000
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the sub-font ID part of an LEGlyphID
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits.
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUB_FONT_SHIFT 16
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the client-defined part of an LEGlyphID.
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_CLIENT_MASK    0xFF000000
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the sub-font ID part of an LEGlyphID
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits.
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_CLIENT_SHIFT   24
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the Glyph ID part of an LEGlyphID.
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_GLYPH(gid) ((gid & LE_GLYPH_MASK) >> LE_GLYPH_SHIFT)
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the sub-font ID part of an LEGlyphID.
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_SUB_FONT(gid) ((gid & LE_SUB_FONT_MASK) >> LE_SUB_FONT_SHIFT)
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the client-defined part of an LEGlyphID.
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_CLIENT(gid) ((gid & LE_CLIENT_MASK) >> LE_CLIENT_SHIFT)
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the Glyph ID part of an LEGlyphID.
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_GLYPH(gid, glyph) ((gid & ~LE_GLYPH_MASK) | ((glyph << LE_GLYPH_SHIFT) & LE_GLYPH_MASK))
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the sub-font ID part of an LEGlyphID.
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_SUB_FONT(gid, font) ((gid & ~LE_SUB_FONT_MASK) | ((font << LE_SUB_FONT_SHIFT) & LE_SUB_FONT_MASK))
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the client-defined part of an LEGlyphID.
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_CLIENT(gid, client) ((gid & ~LE_CLIENT_MASK) | ((client << LE_CLIENT_SHIFT) & LE_CLIENT_MASK))
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 16-bit Unicode code points.
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar LEUnicode16;
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 32-bit Unicode code points.
227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar32 LEUnicode32;
231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 16-bit Unicode code points.
234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @deprecated since ICU 2.4. Use LEUnicode16 instead
236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar LEUnicode;
238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to hold a pair of (x, y) values which represent a point.
241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct LEPoint
245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{
246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The x coordinate of the point.
248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.4
250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    float fX;
252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /**
254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * The y coordinate of the point.
255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     *
256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     * @stable ICU 2.4
257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     */
258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    float fY;
259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef XP_CPLUSPLUS
262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to hold a pair of (x, y) values which represent a point.
264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef struct LEPoint LEPoint;
268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the length of an array.
273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_ARRAY_SIZE(array) (sizeof array / sizeof array[0])
277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef LE_USE_CMEMORY
279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro for copying an array.
281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0])
285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Allocate an array of basic types. This is used to isolate the rest of
288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h.
289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))
293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Re-allocate an array of basic types. This is used to isolate the rest of
296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h.
297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GROW_ARRAY(array, newSize) uprv_realloc((void *) (array), (newSize) * sizeof (array)[0])
301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /**
303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Free an array of basic types. This is used to isolate the rest of
304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h.
305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_DELETE_ARRAY(array) uprv_free((void *) (array))
309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
312ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A macro to construct the four-letter tags used to
313ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * label TrueType tables, and for script, language and
314ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * feature tags in OpenType tables.
315ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
316ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * WARNING: THIS MACRO WILL ONLY WORK CORRECTLY IF
317ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * THE ARGUMENT CHARACTERS ARE ASCII.
318ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
319ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
320ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
321ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_MAKE_TAG(a, b, c, d) \
322ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    (((le_uint32)(a) << 24) |   \
323ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     ((le_uint32)(b) << 16) |   \
324ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru     ((le_uint32)(c) << 8)  |   \
325ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru      (le_uint32)(d))
326ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
327ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
328ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This enumeration defines constants for the standard
329ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * TrueType, OpenType and AAT table tags.
330ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
331ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
332ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
333ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LETableTags {
334ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ACNT_TABLE_TAG = 0x61636E74UL, /**< 'acnt' */
335ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_AVAR_TABLE_TAG = 0x61766172UL, /**< 'avar' */
336ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BASE_TABLE_TAG = 0x42415345UL, /**< 'BASE' */
337ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BDAT_TABLE_TAG = 0x62646174UL, /**< 'bdat' */
338ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BHED_TABLE_TAG = 0x62686564UL, /**< 'bhed' */
339ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BLOC_TABLE_TAG = 0x626C6F63UL, /**< 'bloc' */
340ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BSLN_TABLE_TAG = 0x62736C6EUL, /**< 'bsln' */
341ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CFF__TABLE_TAG = 0x43464620UL, /**< 'CFF ' */
342ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CMAP_TABLE_TAG = 0x636D6170UL, /**< 'cmap' */
343ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CVAR_TABLE_TAG = 0x63766172UL, /**< 'cvar' */
344ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CVT__TABLE_TAG = 0x63767420UL, /**< 'cvt ' */
345ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_DSIG_TABLE_TAG = 0x44534947UL, /**< 'DSIG' */
346ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_EBDT_TABLE_TAG = 0x45424454UL, /**< 'EBDT' */
347ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_EBLC_TABLE_TAG = 0x45424C43UL, /**< 'EBLC' */
348ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_EBSC_TABLE_TAG = 0x45425343UL, /**< 'EBSC' */
349ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FDSC_TABLE_TAG = 0x66647363UL, /**< 'fdsc' */
350ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FEAT_TABLE_TAG = 0x66656174UL, /**< 'feat' */
351ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FMTX_TABLE_TAG = 0x666D7478UL, /**< 'fmtx' */
352ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FPGM_TABLE_TAG = 0x6670676DUL, /**< 'fpgm' */
353ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FVAR_TABLE_TAG = 0x66766172UL, /**< 'fvar' */
354ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GASP_TABLE_TAG = 0x67617370UL, /**< 'gasp' */
355ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GDEF_TABLE_TAG = 0x47444546UL, /**< 'GDEF' */
356ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GLYF_TABLE_TAG = 0x676C7966UL, /**< 'glyf' */
357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GPOS_TABLE_TAG = 0x47504F53UL, /**< 'GPOS' */
358ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GSUB_TABLE_TAG = 0x47535542UL, /**< 'GSUB' */
359ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_GVAR_TABLE_TAG = 0x67766172UL, /**< 'gvar' */
360ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HDMX_TABLE_TAG = 0x68646D78UL, /**< 'hdmx' */
361ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HEAD_TABLE_TAG = 0x68656164UL, /**< 'head' */
362ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HHEA_TABLE_TAG = 0x68686561UL, /**< 'hhea' */
363ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HMTX_TABLE_TAG = 0x686D7478UL, /**< 'hmtx' */
364ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HSTY_TABLE_TAG = 0x68737479UL, /**< 'hsty' */
365ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JUST_TABLE_TAG = 0x6A757374UL, /**< 'just' */
366ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JSTF_TABLE_TAG = 0x4A535446UL, /**< 'JSTF' */
367ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_KERN_TABLE_TAG = 0x6B65726EUL, /**< 'kern' */
368ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LCAR_TABLE_TAG = 0x6C636172UL, /**< 'lcar' */
369ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LOCA_TABLE_TAG = 0x6C6F6361UL, /**< 'loca' */
370ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LTSH_TABLE_TAG = 0x4C545348UL, /**< 'LTSH' */
371ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MAXP_TABLE_TAG = 0x6D617870UL, /**< 'maxp' */
372ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MORT_TABLE_TAG = 0x6D6F7274UL, /**< 'mort' */
373ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MORX_TABLE_TAG = 0x6D6F7278UL, /**< 'morx' */
374ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NAME_TABLE_TAG = 0x6E616D65UL, /**< 'name' */
375ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_OPBD_TABLE_TAG = 0x6F706264UL, /**< 'opbd' */
376ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_OS_2_TABLE_TAG = 0x4F532F32UL, /**< 'OS/2' */
377ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PCLT_TABLE_TAG = 0x50434C54UL, /**< 'PCLT' */
378ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_POST_TABLE_TAG = 0x706F7374UL, /**< 'post' */
379ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PREP_TABLE_TAG = 0x70726570UL, /**< 'prep' */
380ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PROP_TABLE_TAG = 0x70726F70UL, /**< 'prop' */
381ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TRAK_TABLE_TAG = 0x7472616BUL, /**< 'trak' */
382ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VDMX_TABLE_TAG = 0x56444D58UL, /**< 'VDMX' */
383ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VHEA_TABLE_TAG = 0x76686561UL, /**< 'vhea' */
384ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VMTX_TABLE_TAG = 0x766D7478UL, /**< 'vmtx' */
385ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VORG_TABLE_TAG = 0x564F5247UL, /**< 'VORG' */
386ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ZAPF_TABLE_TAG = 0x5A617066UL  /**< 'Zapf' */
387ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
388ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
389ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
390ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This enumeration defines constants for all
391ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the common OpenType feature tags.
392ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
393ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2
394ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
395ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LEFeatureTags {
396ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_AALT_FEATURE_TAG = 0x61616C74UL, /**< 'aalt' */
397ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ABVF_FEATURE_TAG = 0x61627666UL, /**< 'abvf' */
398ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ABVM_FEATURE_TAG = 0x6162766DUL, /**< 'abvm' */
399ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ABVS_FEATURE_TAG = 0x61627673UL, /**< 'abvs' */
400ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_AFRC_FEATURE_TAG = 0x61667263UL, /**< 'afrc' */
401ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_AKHN_FEATURE_TAG = 0x616B686EUL, /**< 'akhn' */
402ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BLWF_FEATURE_TAG = 0x626C7766UL, /**< 'blwf' */
403ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BLWM_FEATURE_TAG = 0x626C776DUL, /**< 'blwm' */
404ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_BLWS_FEATURE_TAG = 0x626C7773UL, /**< 'blws' */
405ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CALT_FEATURE_TAG = 0x63616C74UL, /**< 'calt' */
406ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CASE_FEATURE_TAG = 0x63617365UL, /**< 'case' */
407ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CCMP_FEATURE_TAG = 0x63636D70UL, /**< 'ccmp' */
40885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho	LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */
409ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CLIG_FEATURE_TAG = 0x636C6967UL, /**< 'clig' */
410ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CPSP_FEATURE_TAG = 0x63707370UL, /**< 'cpsp' */
411ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CSWH_FEATURE_TAG = 0x63737768UL, /**< 'cswh' */
412ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_CURS_FEATURE_TAG = 0x63757273UL, /**< 'curs' */
413ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_C2SC_FEATURE_TAG = 0x63327363UL, /**< 'c2sc' */
414ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_C2PC_FEATURE_TAG = 0x63327063UL, /**< 'c2pc' */
415ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_DIST_FEATURE_TAG = 0x64697374UL, /**< 'dist' */
416ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_DLIG_FEATURE_TAG = 0x646C6967UL, /**< 'dlig' */
417ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_DNOM_FEATURE_TAG = 0x646E6F6DUL, /**< 'dnom' */
418ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_EXPT_FEATURE_TAG = 0x65787074UL, /**< 'expt' */
419ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FALT_FEATURE_TAG = 0x66616C74UL, /**< 'falt' */
420ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FIN2_FEATURE_TAG = 0x66696E32UL, /**< 'fin2' */
421ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FIN3_FEATURE_TAG = 0x66696E33UL, /**< 'fin3' */
422ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FINA_FEATURE_TAG = 0x66696E61UL, /**< 'fina' */
423ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FRAC_FEATURE_TAG = 0x66726163UL, /**< 'frac' */
424ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FWID_FEATURE_TAG = 0x66776964UL, /**< 'fwid' */
425ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HALF_FEATURE_TAG = 0x68616C66UL, /**< 'half' */
426ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HALN_FEATURE_TAG = 0x68616C6EUL, /**< 'haln' */
427ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HALT_FEATURE_TAG = 0x68616C74UL, /**< 'halt' */
428ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HIST_FEATURE_TAG = 0x68697374UL, /**< 'hist' */
429ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HKNA_FEATURE_TAG = 0x686B6E61UL, /**< 'hkna' */
430ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HLIG_FEATURE_TAG = 0x686C6967UL, /**< 'hlig' */
431ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HNGL_FEATURE_TAG = 0x686E676CUL, /**< 'hngl' */
432ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_HWID_FEATURE_TAG = 0x68776964UL, /**< 'hwid' */
433ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_INIT_FEATURE_TAG = 0x696E6974UL, /**< 'init' */
434ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ISOL_FEATURE_TAG = 0x69736F6CUL, /**< 'isol' */
435ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ITAL_FEATURE_TAG = 0x6974616CUL, /**< 'ital' */
436ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JALT_FEATURE_TAG = 0x6A616C74UL, /**< 'jalt' */
437ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JP78_FEATURE_TAG = 0x6A703738UL, /**< 'jp78' */
438ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JP83_FEATURE_TAG = 0x6A703833UL, /**< 'jp83' */
439ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_JP90_FEATURE_TAG = 0x6A703930UL, /**< 'jp90' */
440ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_KERN_FEATURE_TAG = 0x6B65726EUL, /**< 'kern' */
441ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LFBD_FEATURE_TAG = 0x6C666264UL, /**< 'lfbd' */
442ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LIGA_FEATURE_TAG = 0x6C696761UL, /**< 'liga' */
443ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LJMO_FEATURE_TAG = 0x6C6A6D6FUL, /**< 'ljmo' */
444ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LNUM_FEATURE_TAG = 0x6C6E756DUL, /**< 'lnum' */
445ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_LOCL_FEATURE_TAG = 0x6C6F636CUL, /**< 'locl' */
446ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MARK_FEATURE_TAG = 0x6D61726BUL, /**< 'mark' */
447ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MED2_FEATURE_TAG = 0x6D656432UL, /**< 'med2' */
448ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MEDI_FEATURE_TAG = 0x6D656469UL, /**< 'medi' */
449ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MGRK_FEATURE_TAG = 0x6D67726BUL, /**< 'mgrk' */
450ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MKMK_FEATURE_TAG = 0x6D6B6D6BUL, /**< 'mkmk' */
451ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MSET_FEATURE_TAG = 0x6D736574UL, /**< 'mset' */
452ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NALT_FEATURE_TAG = 0x6E616C74UL, /**< 'nalt' */
453ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NLCK_FEATURE_TAG = 0x6E6C636BUL, /**< 'nlck' */
454ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NUKT_FEATURE_TAG = 0x6E756B74UL, /**< 'nukt' */
455ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NUMR_FEATURE_TAG = 0x6E756D72UL, /**< 'numr' */
456ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ONUM_FEATURE_TAG = 0x6F6E756DUL, /**< 'onum' */
457ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_OPBD_FEATURE_TAG = 0x6F706264UL, /**< 'opbd' */
458ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ORDN_FEATURE_TAG = 0x6F72646EUL, /**< 'ordn' */
459ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ORNM_FEATURE_TAG = 0x6F726E6DUL, /**< 'ornm' */
460ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PALT_FEATURE_TAG = 0x70616C74UL, /**< 'palt' */
461ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PCAP_FEATURE_TAG = 0x70636170UL, /**< 'pcap' */
462ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PNUM_FEATURE_TAG = 0x706E756DUL, /**< 'pnum' */
463ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PREF_FEATURE_TAG = 0x70726566UL, /**< 'pref' */
464ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PRES_FEATURE_TAG = 0x70726573UL, /**< 'pres' */
465ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PSTF_FEATURE_TAG = 0x70737466UL, /**< 'pstf' */
466ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PSTS_FEATURE_TAG = 0x70737473UL, /**< 'psts' */
467ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_PWID_FEATURE_TAG = 0x70776964UL, /**< 'pwid' */
468ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_QWID_FEATURE_TAG = 0x71776964UL, /**< 'qwid' */
469ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RAND_FEATURE_TAG = 0x72616E64UL, /**< 'rand' */
470ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RLIG_FEATURE_TAG = 0x726C6967UL, /**< 'rlig' */
471ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RPHF_FEATURE_TAG = 0x72706866UL, /**< 'rphf' */
47285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho	LE_RKRF_FEATURE_TAG = 0x726B7266UL, /**< 'rkrf' */
473ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RTBD_FEATURE_TAG = 0x72746264UL, /**< 'rtbd' */
474ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RTLA_FEATURE_TAG = 0x72746C61UL, /**< 'rtla' */
475ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_RUBY_FEATURE_TAG = 0x72756279UL, /**< 'ruby' */
476ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SALT_FEATURE_TAG = 0x73616C74UL, /**< 'salt' */
477ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SINF_FEATURE_TAG = 0x73696E66UL, /**< 'sinf' */
478ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SIZE_FEATURE_TAG = 0x73697A65UL, /**< 'size' */
479ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SMCP_FEATURE_TAG = 0x736D6370UL, /**< 'smcp' */
480ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SMPL_FEATURE_TAG = 0x736D706CUL, /**< 'smpl' */
481ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS01_FEATURE_TAG = 0x73733031UL, /**< 'ss01' */
482ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS02_FEATURE_TAG = 0x73733032UL, /**< 'ss02' */
483ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS03_FEATURE_TAG = 0x73733033UL, /**< 'ss03' */
484ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS04_FEATURE_TAG = 0x73733034UL, /**< 'ss04' */
485ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS05_FEATURE_TAG = 0x73733035UL, /**< 'ss05' */
486ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS06_FEATURE_TAG = 0x73733036UL, /**< 'ss06' */
487ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS07_FEATURE_TAG = 0x73733037UL, /**< 'ss07' */
488ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS08_FEATURE_TAG = 0x73733038UL, /**< 'ss08' */
489ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS09_FEATURE_TAG = 0x73733039UL, /**< 'ss09' */
490ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS10_FEATURE_TAG = 0x73733130UL, /**< 'ss10' */
491ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS11_FEATURE_TAG = 0x73733131UL, /**< 'ss11' */
492ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS12_FEATURE_TAG = 0x73733132UL, /**< 'ss12' */
493ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS13_FEATURE_TAG = 0x73733133UL, /**< 'ss13' */
494ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS14_FEATURE_TAG = 0x73733134UL, /**< 'ss14' */
495ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS15_FEATURE_TAG = 0x73733135UL, /**< 'ss15' */
496ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS16_FEATURE_TAG = 0x73733136UL, /**< 'ss16' */
497ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS17_FEATURE_TAG = 0x73733137UL, /**< 'ss17' */
498ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS18_FEATURE_TAG = 0x73733138UL, /**< 'ss18' */
499ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS19_FEATURE_TAG = 0x73733139UL, /**< 'ss19' */
500ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SS20_FEATURE_TAG = 0x73733230UL, /**< 'ss20' */
501ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SUBS_FEATURE_TAG = 0x73756273UL, /**< 'subs' */
502ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SUPS_FEATURE_TAG = 0x73757073UL, /**< 'sups' */
503ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_SWSH_FEATURE_TAG = 0x73777368UL, /**< 'swsh' */
504ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TITL_FEATURE_TAG = 0x7469746CUL, /**< 'titl' */
505ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TJMO_FEATURE_TAG = 0x746A6D6FUL, /**< 'tjmo' */
506ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TNAM_FEATURE_TAG = 0x746E616DUL, /**< 'tnam' */
507ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TNUM_FEATURE_TAG = 0x746E756DUL, /**< 'tnum' */
508ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TRAD_FEATURE_TAG = 0x74726164UL, /**< 'trad' */
509ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_TWID_FEATURE_TAG = 0x74776964UL, /**< 'twid' */
510ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_UNIC_FEATURE_TAG = 0x756E6963UL, /**< 'unic' */
511ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VALT_FEATURE_TAG = 0x76616C74UL, /**< 'valt' */
512ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VATU_FEATURE_TAG = 0x76617475UL, /**< 'vatu' */
513ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VERT_FEATURE_TAG = 0x76657274UL, /**< 'vert' */
514ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VHAL_FEATURE_TAG = 0x7668616CUL, /**< 'vhal' */
515ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VJMO_FEATURE_TAG = 0x766A6D6FUL, /**< 'vjmo' */
516ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VKNA_FEATURE_TAG = 0x766B6E61UL, /**< 'vkna' */
517ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VKRN_FEATURE_TAG = 0x766B726EUL, /**< 'vkrn' */
518ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VPAL_FEATURE_TAG = 0x7670616CUL, /**< 'vpal' */
519ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_VRT2_FEATURE_TAG = 0x76727432UL, /**< 'vrt2' */
520ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ZERO_FEATURE_TAG = 0x7A65726FUL  /**< 'zero' */
521ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
522ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
523ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
524ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Error codes returned by the LayoutEngine.
525ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
526ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
527ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
528ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LEErrorCode {
529ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /* informational */
530ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NO_SUBFONT_WARNING          = U_USING_DEFAULT_WARNING, /**< The font does not contain subfonts. */
531ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
532ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /* success */
533ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NO_ERROR                     = U_ZERO_ERROR, /**< No error, no warning. */
534ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
535ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    /* failures */
536ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_ILLEGAL_ARGUMENT_ERROR       = U_ILLEGAL_ARGUMENT_ERROR,  /**< An illegal argument was detected. */
537ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MEMORY_ALLOCATION_ERROR      = U_MEMORY_ALLOCATION_ERROR, /**< Memory allocation error. */
538ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_INDEX_OUT_OF_BOUNDS_ERROR    = U_INDEX_OUTOFBOUNDS_ERROR, /**< Trying to access an index that is out of bounds. */
539ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_NO_LAYOUT_ERROR              = U_UNSUPPORTED_ERROR,       /**< You must call layoutChars() first. */
540ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_INTERNAL_ERROR               = U_INTERNAL_PROGRAM_ERROR,  /**< An internal error was encountered. */
541ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_FONT_FILE_NOT_FOUND_ERROR    = U_FILE_ACCESS_ERROR,       /**< The requested font file cannot be opened. */
542ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru    LE_MISSING_FONT_TABLE_ERROR     = U_MISSING_RESOURCE_ERROR   /**< The requested font table does not exist. */
543ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru};
544ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
545ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef XP_CPLUSPLUS
546ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
547ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Error codes returned by the LayoutEngine.
548ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
549ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
550ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
551ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef enum LEErrorCode LEErrorCode;
552ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
553ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
554ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
555ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to test for the success of a LayoutEngine call.
556ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
557ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
558ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
559ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code))
560ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
561ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
562ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to test for the failure of a LayoutEngine call.
563ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
564ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4
565ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
566ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_FAILURE(code) (U_FAILURE((UErrorCode)code))
567ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
568ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
569