1 /*
2  *
3  * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
4  *
5  */
6 
7 #ifndef __SCRIPTANDLANGUAGE_H
8 #define __SCRIPTANDLANGUAGE_H
9 
10 /**
11  * \file
12  * \internal
13  */
14 
15 #include "LETypes.h"
16 #include "OpenTypeTables.h"
17 
18 U_NAMESPACE_BEGIN
19 
20 typedef TagAndOffsetRecord LangSysRecord;
21 
22 struct LangSysTable
23 {
24     Offset    lookupOrderOffset;
25     le_uint16 reqFeatureIndex;
26     le_uint16 featureCount;
27     le_uint16 featureIndexArray[ANY_NUMBER];
28 };
29 LE_VAR_ARRAY(LangSysTable, featureIndexArray)
30 
31 struct ScriptTable
32 {
33     Offset              defaultLangSysTableOffset;
34     le_uint16           langSysCount;
35     LangSysRecord       langSysRecordArray[ANY_NUMBER];
36 
37   LEReferenceTo<LangSysTable>  findLanguage(const LETableReference &base, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const;
38 };
39 LE_VAR_ARRAY(ScriptTable, langSysRecordArray)
40 
41 typedef TagAndOffsetRecord ScriptRecord;
42 
43 struct ScriptListTable
44 {
45     le_uint16           scriptCount;
46     ScriptRecord        scriptRecordArray[ANY_NUMBER];
47 
48   LEReferenceTo<ScriptTable>   findScript(const LETableReference &base, LETag scriptTag, LEErrorCode &success) const;
49   LEReferenceTo<LangSysTable>  findLanguage(const LETableReference &base, LETag scriptTag, LETag languageTag, LEErrorCode &success, le_bool exactMatch = FALSE) const;
50 };
51 LE_VAR_ARRAY(ScriptListTable, scriptRecordArray)
52 
53 U_NAMESPACE_END
54 #endif
55 
56