From 2717c31b166db4a12fe5a42e5c3364d65458f827 Mon Sep 17 00:00:00 2001 From: Eric Mader Date: Fri, 17 Jun 2005 19:20:43 +0000 Subject: [PATCH] ICU-4578 Fix warnings on Intel compiler. X-SVN-Rev: 17942 --- icu4c/source/layout/IndicClassTables.cpp | 92 +++++++++---------- icu4c/source/layout/IndicReordering.cpp | 80 ++++++++--------- icu4c/source/layout/IndicReordering.h | 108 ++++++++++------------- 3 files changed, 135 insertions(+), 145 deletions(-) diff --git a/icu4c/source/layout/IndicClassTables.cpp b/icu4c/source/layout/IndicClassTables.cpp index 9be38b0942d..f475976ce41 100644 --- a/icu4c/source/layout/IndicClassTables.cpp +++ b/icu4c/source/layout/IndicClassTables.cpp @@ -17,39 +17,39 @@ U_NAMESPACE_BEGIN enum { // Split matra table indices - _x1 = 1 << IndicClassTable::CF_INDEX_SHIFT, - _x2 = 2 << IndicClassTable::CF_INDEX_SHIFT, - _x3 = 3 << IndicClassTable::CF_INDEX_SHIFT, - _x4 = 4 << IndicClassTable::CF_INDEX_SHIFT, - _x5 = 5 << IndicClassTable::CF_INDEX_SHIFT, - _x6 = 6 << IndicClassTable::CF_INDEX_SHIFT, - _x7 = 7 << IndicClassTable::CF_INDEX_SHIFT, - _x8 = 8 << IndicClassTable::CF_INDEX_SHIFT, - _x9 = 9 << IndicClassTable::CF_INDEX_SHIFT, + _x1 = 1 << CF_INDEX_SHIFT, + _x2 = 2 << CF_INDEX_SHIFT, + _x3 = 3 << CF_INDEX_SHIFT, + _x4 = 4 << CF_INDEX_SHIFT, + _x5 = 5 << CF_INDEX_SHIFT, + _x6 = 6 << CF_INDEX_SHIFT, + _x7 = 7 << CF_INDEX_SHIFT, + _x8 = 8 << CF_INDEX_SHIFT, + _x9 = 9 << CF_INDEX_SHIFT, // simple classes - _xx = IndicClassTable::CC_RESERVED, - _ma = IndicClassTable::CC_VOWEL_MODIFIER | IndicClassTable::CF_POS_ABOVE, - _mp = IndicClassTable::CC_VOWEL_MODIFIER | IndicClassTable::CF_POS_AFTER, - _sa = IndicClassTable::CC_STRESS_MARK | IndicClassTable::CF_POS_ABOVE, - _sb = IndicClassTable::CC_STRESS_MARK | IndicClassTable::CF_POS_BELOW, - _iv = IndicClassTable::CC_INDEPENDENT_VOWEL, - _i2 = IndicClassTable::CC_INDEPENDENT_VOWEL_2, - _ct = IndicClassTable::CC_CONSONANT | IndicClassTable::CF_CONSONANT, - _cn = IndicClassTable::CC_CONSONANT_WITH_NUKTA | IndicClassTable::CF_CONSONANT, - _nu = IndicClassTable::CC_NUKTA, - _dv = IndicClassTable::CC_DEPENDENT_VOWEL, - _dl = _dv | IndicClassTable::CF_POS_BEFORE, - _db = _dv | IndicClassTable::CF_POS_BELOW, - _da = _dv | IndicClassTable::CF_POS_ABOVE, - _dr = _dv | IndicClassTable::CF_POS_AFTER, - _lm = _dv | IndicClassTable::CF_LENGTH_MARK, - _l1 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_1 | IndicClassTable::CF_POS_BEFORE, - _a1 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_1 | IndicClassTable::CF_POS_ABOVE, - _r2 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_2 | IndicClassTable::CF_POS_AFTER, - _m2 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_2 | IndicClassTable::CF_LENGTH_MARK, - _m3 = IndicClassTable::CC_SPLIT_VOWEL_PIECE_3 | IndicClassTable::CF_LENGTH_MARK, - _vr = IndicClassTable::CC_VIRAMA, + _xx = CC_RESERVED, + _ma = CC_VOWEL_MODIFIER | CF_POS_ABOVE, + _mp = CC_VOWEL_MODIFIER | CF_POS_AFTER, + _sa = CC_STRESS_MARK | CF_POS_ABOVE, + _sb = CC_STRESS_MARK | CF_POS_BELOW, + _iv = CC_INDEPENDENT_VOWEL, + _i2 = CC_INDEPENDENT_VOWEL_2, + _ct = CC_CONSONANT | CF_CONSONANT, + _cn = CC_CONSONANT_WITH_NUKTA | CF_CONSONANT, + _nu = CC_NUKTA, + _dv = CC_DEPENDENT_VOWEL, + _dl = _dv | CF_POS_BEFORE, + _db = _dv | CF_POS_BELOW, + _da = _dv | CF_POS_ABOVE, + _dr = _dv | CF_POS_AFTER, + _lm = _dv | CF_LENGTH_MARK, + _l1 = CC_SPLIT_VOWEL_PIECE_1 | CF_POS_BEFORE, + _a1 = CC_SPLIT_VOWEL_PIECE_1 | CF_POS_ABOVE, + _r2 = CC_SPLIT_VOWEL_PIECE_2 | CF_POS_AFTER, + _m2 = CC_SPLIT_VOWEL_PIECE_2 | CF_LENGTH_MARK, + _m3 = CC_SPLIT_VOWEL_PIECE_3 | CF_LENGTH_MARK, + _vr = CC_VIRAMA, // split matras _s1 = _dv | _x1, @@ -65,12 +65,12 @@ enum // consonants with special forms // NOTE: this assumes that no consonants with nukta have // special forms... (Bengali RA?) - _bb = _ct | IndicClassTable::CF_BELOW_BASE, - _pb = _ct | IndicClassTable::CF_POST_BASE, - _vt = _bb | IndicClassTable::CF_VATTU, - _rv = _vt | IndicClassTable::CF_REPH, - _rp = _pb | IndicClassTable::CF_REPH, - _rb = _bb | IndicClassTable::CF_REPH + _bb = _ct | CF_BELOW_BASE, + _pb = _ct | CF_POST_BASE, + _vt = _bb | CF_VATTU, + _rv = _vt | CF_REPH, + _rp = _pb | CF_REPH, + _rb = _bb | CF_REPH }; // @@ -212,15 +212,15 @@ static const SplitMatra mlymSplitTable[] = {{0x0D46, 0x0D3E}, {0x0D47, 0x0D3E}, // FIXME: post 'GSUB' reordering of MATRA_PRE's for Malayalam and Tamil // FIXME: reformed Malayalam needs to reorder VATTU to before base glyph... // FIXME: eyelash RA only for Devanagari?? -#define DEVA_SCRIPT_FLAGS (IndicClassTable::SF_EYELASH_RA | IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define BENG_SCRIPT_FLAGS (IndicClassTable::SF_REPH_AFTER_BELOW | IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define PUNJ_SCRIPT_FLAGS (IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define GUJR_SCRIPT_FLAGS (IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define ORYA_SCRIPT_FLAGS (IndicClassTable::SF_REPH_AFTER_BELOW | IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define TAML_SCRIPT_FLAGS (IndicClassTable::SF_MPRE_FIXUP | IndicClassTable::SF_NO_POST_BASE_LIMIT) -#define TELU_SCRIPT_FLAGS (IndicClassTable::SF_MATRAS_AFTER_BASE | 3) -#define KNDA_SCRIPT_FLAGS (IndicClassTable::SF_MATRAS_AFTER_BASE | 3) -#define MLYM_SCRIPT_FLAGS (IndicClassTable::SF_MPRE_FIXUP | IndicClassTable::SF_NO_POST_BASE_LIMIT) +#define DEVA_SCRIPT_FLAGS (SF_EYELASH_RA | SF_NO_POST_BASE_LIMIT) +#define BENG_SCRIPT_FLAGS (SF_REPH_AFTER_BELOW | SF_NO_POST_BASE_LIMIT) +#define PUNJ_SCRIPT_FLAGS (SF_NO_POST_BASE_LIMIT) +#define GUJR_SCRIPT_FLAGS (SF_NO_POST_BASE_LIMIT) +#define ORYA_SCRIPT_FLAGS (SF_REPH_AFTER_BELOW | SF_NO_POST_BASE_LIMIT) +#define TAML_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT) +#define TELU_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3) +#define KNDA_SCRIPT_FLAGS (SF_MATRAS_AFTER_BASE | 3) +#define MLYM_SCRIPT_FLAGS (SF_MPRE_FIXUP | SF_NO_POST_BASE_LIMIT) // // Indic Class Tables diff --git a/icu4c/source/layout/IndicReordering.cpp b/icu4c/source/layout/IndicReordering.cpp index 2954a5078d7..663abc00545 100644 --- a/icu4c/source/layout/IndicReordering.cpp +++ b/icu4c/source/layout/IndicReordering.cpp @@ -57,23 +57,23 @@ private: fLengthMark = matra; fLengthMarkIndex = matraIndex; } else { - switch (matraClass & IndicClassTable::CF_POS_MASK) { - case IndicClassTable::CF_POS_BEFORE: + switch (matraClass & CF_POS_MASK) { + case CF_POS_BEFORE: fMpre = matra; fMpreIndex = matraIndex; break; - case IndicClassTable::CF_POS_BELOW: + case CF_POS_BELOW: fMbelow = matra; fMbelowIndex = matraIndex; break; - case IndicClassTable::CF_POS_ABOVE: + case CF_POS_ABOVE: fMabove = matra; fMaboveIndex = matraIndex; break; - case IndicClassTable::CF_POS_AFTER: + case CF_POS_AFTER: fMpost = matra; fMpostIndex = matraIndex; break; @@ -158,12 +158,12 @@ public: fVMTags = vowelModifierTags; if (IndicClassTable::isVowelModifier(vmClass)) { - switch (vmClass & IndicClassTable::CF_POS_MASK) { - case IndicClassTable::CF_POS_ABOVE: + switch (vmClass & CF_POS_MASK) { + case CF_POS_ABOVE: fVMabove = vowelModifier; break; - case IndicClassTable::CF_POS_AFTER: + case CF_POS_AFTER: fVMpost = vowelModifier; break; @@ -182,12 +182,12 @@ public: fSMTags = stressMarkTags; if (IndicClassTable::isStressMark(smClass)) { - switch (smClass & IndicClassTable::CF_POS_MASK) { - case IndicClassTable::CF_POS_ABOVE: + switch (smClass & CF_POS_MASK) { + case CF_POS_ABOVE: fSMabove = stressMark; break; - case IndicClassTable::CF_POS_BELOW: + case CF_POS_BELOW: fSMbelow = stressMark; break; @@ -320,7 +320,7 @@ static const LETag tagArray[] = blwmFeatureTag, abvmFeatureTag, distFeatureTag, emptyTag }; -static const le_int8 stateTable[][IndicClassTable::CC_COUNT] = +static const le_int8 stateTable[][CC_COUNT] = { // xx vm sm iv i2 ct cn nu dv s1 s2 s3 vr zw { 1, 1, 1, 5, 8, 3, 2, 1, 5, 9, 5, 1, 1, 1}, // 0 - ground state @@ -350,7 +350,7 @@ le_int32 IndicReordering::findSyllable(const IndicClassTable *classTable, const while (cursor < charCount) { IndicClassTable::CharClass charClass = classTable->getCharClass(chars[cursor]); - state = stateTable[state][charClass & IndicClassTable::CF_CLASS_MASK]; + state = stateTable[state][charClass & CF_CLASS_MASK]; if (state < 0) { break; @@ -369,7 +369,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le MPreFixups *mpreFixups = NULL; const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode); - if (classTable->scriptFlags & IndicClassTable::SF_MPRE_FIXUP) { + if (classTable->scriptFlags & SF_MPRE_FIXUP) { mpreFixups = new MPreFixups(charCount); } @@ -398,28 +398,28 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le matra -= 1; } - switch (classTable->getCharClass(chars[prev]) & IndicClassTable::CF_CLASS_MASK) { - case IndicClassTable::CC_RESERVED: - case IndicClassTable::CC_INDEPENDENT_VOWEL: - case IndicClassTable::CC_ZERO_WIDTH_MARK: + switch (classTable->getCharClass(chars[prev]) & CF_CLASS_MASK) { + case CC_RESERVED: + case CC_INDEPENDENT_VOWEL: + case CC_ZERO_WIDTH_MARK: for (i = prev; i < syllable; i += 1) { output.writeChar(chars[i], i, &tagArray[1]); } break; - case IndicClassTable::CC_NUKTA: - case IndicClassTable::CC_VIRAMA: + case CC_NUKTA: + case CC_VIRAMA: output.writeChar(C_DOTTED_CIRCLE, prev, &tagArray[1]); output.writeChar(chars[prev], prev, &tagArray[1]); break; - case IndicClassTable::CC_DEPENDENT_VOWEL: - case IndicClassTable::CC_SPLIT_VOWEL_PIECE_1: - case IndicClassTable::CC_SPLIT_VOWEL_PIECE_2: - case IndicClassTable::CC_SPLIT_VOWEL_PIECE_3: - case IndicClassTable::CC_VOWEL_MODIFIER: - case IndicClassTable::CC_STRESS_MARK: + case CC_DEPENDENT_VOWEL: + case CC_SPLIT_VOWEL_PIECE_1: + case CC_SPLIT_VOWEL_PIECE_2: + case CC_SPLIT_VOWEL_PIECE_3: + case CC_VOWEL_MODIFIER: + case CC_STRESS_MARK: output.writeMpre(); output.writeChar(C_DOTTED_CIRCLE, prev, &tagArray[1]); @@ -428,22 +428,22 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le output.writeSMbelow(); output.writeMabove(); - if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) != 0) { + if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) { output.writeMpost(); } - if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) != 0) { + if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) != 0) { output.writeVMabove(); output.writeSMabove(); // FIXME: there are no SM's in these scripts... } - if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) { + if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) { output.writeMpost(); } output.writeLengthMark(); - if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) == 0) { + if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) == 0) { output.writeVMabove(); output.writeSMabove(); } @@ -451,9 +451,9 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le output.writeVMpost(); break; - case IndicClassTable::CC_INDEPENDENT_VOWEL_2: - case IndicClassTable::CC_CONSONANT: - case IndicClassTable::CC_CONSONANT_WITH_NUKTA: + case CC_INDEPENDENT_VOWEL_2: + case CC_CONSONANT: + case CC_CONSONANT_WITH_NUKTA: { le_uint32 length = markStart - prev; le_int32 lastConsonant = markStart - 1; @@ -464,7 +464,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le baseLimit += 2; // Check for eyelash RA, if the script supports it - if ((classTable->scriptFlags & IndicClassTable::SF_EYELASH_RA) != 0 && + if ((classTable->scriptFlags & SF_EYELASH_RA) != 0 && chars[baseLimit] == C_SIGN_ZWJ) { if (length > 3) { baseLimit += 1; @@ -480,7 +480,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le le_int32 baseConsonant = lastConsonant; le_int32 postBase = lastConsonant + 1; - le_int32 postBaseLimit = classTable->scriptFlags & IndicClassTable::SF_POST_BASE_LIMIT_MASK; + le_int32 postBaseLimit = classTable->scriptFlags & SF_POST_BASE_LIMIT_MASK; le_bool seenVattu = FALSE; le_bool seenBelowBaseForm = FALSE; @@ -572,7 +572,7 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le output.writeChar(chars[i], i, &tagArray[4]); } - if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) != 0) { + if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) { output.writeMbelow(); output.writeSMbelow(); // FIXME: there are no SMs in these scripts... output.writeMabove(); @@ -592,13 +592,13 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le } // write Mbelow, SMbelow, Mabove - if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) { + if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) { output.writeMbelow(); output.writeSMbelow(); output.writeMabove(); } - if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) != 0) { + if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) != 0) { if (baseLimit == prev + 2) { output.writeChar(chars[prev], prev, &tagArray[0]); output.writeChar(chars[prev + 1], prev + 1, &tagArray[0]); @@ -627,14 +627,14 @@ le_int32 IndicReordering::reorder(const LEUnicode *chars, le_int32 charCount, le } // write Mpost - if ((classTable->scriptFlags & IndicClassTable::SF_MATRAS_AFTER_BASE) == 0) { + if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) == 0) { output.writeMpost(); } output.writeLengthMark(); // write reph - if ((classTable->scriptFlags & IndicClassTable::SF_REPH_AFTER_BELOW) == 0) { + if ((classTable->scriptFlags & SF_REPH_AFTER_BELOW) == 0) { if (baseLimit == prev + 2) { output.writeChar(chars[prev], prev, &tagArray[0]); output.writeChar(chars[prev + 1], prev + 1, &tagArray[0]); diff --git a/icu4c/source/layout/IndicReordering.h b/icu4c/source/layout/IndicReordering.h index 17b8086ea04..8eeccc87fd1 100644 --- a/icu4c/source/layout/IndicReordering.h +++ b/icu4c/source/layout/IndicReordering.h @@ -18,11 +18,54 @@ U_NAMESPACE_BEGIN // Characters that get refered to by name... -enum -{ - C_SIGN_ZWNJ = 0x200C, - C_SIGN_ZWJ = 0x200D -}; +#define C_SIGN_ZWNJ 0x200C +#define C_SIGN_ZWJ 0x200D + +// Character class values +#define CC_RESERVED 0U +#define CC_VOWEL_MODIFIER 1U +#define CC_STRESS_MARK 2U +#define CC_INDEPENDENT_VOWEL 3U +#define CC_INDEPENDENT_VOWEL_2 4U +#define CC_CONSONANT 5U +#define CC_CONSONANT_WITH_NUKTA 6U +#define CC_NUKTA 7U +#define CC_DEPENDENT_VOWEL 8U +#define CC_SPLIT_VOWEL_PIECE_1 9U +#define CC_SPLIT_VOWEL_PIECE_2 10U +#define CC_SPLIT_VOWEL_PIECE_3 11U +#define CC_VIRAMA 12U +#define CC_ZERO_WIDTH_MARK 13U +#define CC_COUNT 14U + +// Character class flags +#define CF_CLASS_MASK 0x0000FFFFU + +#define CF_CONSONANT 0x80000000U + +#define CF_REPH 0x40000000U +#define CF_VATTU 0x20000000U +#define CF_BELOW_BASE 0x10000000U +#define CF_POST_BASE 0x08000000U +#define CF_LENGTH_MARK 0x04000000U + +#define CF_POS_BEFORE 0x00300000U +#define CF_POS_BELOW 0x00200000U +#define CF_POS_ABOVE 0x00100000U +#define CF_POS_AFTER 0x00000000U +#define CF_POS_MASK 0x00300000U + +#define CF_INDEX_MASK 0x000F0000U +#define CF_INDEX_SHIFT 16 + +// Script flag bits +#define SF_MATRAS_AFTER_BASE 0x80000000U +#define SF_REPH_AFTER_BELOW 0x40000000U +#define SF_EYELASH_RA 0x20000000U +#define SF_MPRE_FIXUP 0x10000000U + +#define SF_POST_BASE_LIMIT_MASK 0x0000FFFFU +#define SF_NO_POST_BASE_LIMIT 0x00007FFFU typedef LEUnicode SplitMatra[3]; @@ -31,61 +74,8 @@ class LEGlyphStorage; struct IndicClassTable { - enum CharClassValues - { - CC_RESERVED = 0, - CC_VOWEL_MODIFIER = 1, - CC_STRESS_MARK = 2, - CC_INDEPENDENT_VOWEL = 3, - CC_INDEPENDENT_VOWEL_2 = 4, - CC_CONSONANT = 5, - CC_CONSONANT_WITH_NUKTA = 6, - CC_NUKTA = 7, - CC_DEPENDENT_VOWEL = 8, - CC_SPLIT_VOWEL_PIECE_1 = 9, - CC_SPLIT_VOWEL_PIECE_2 = 10, - CC_SPLIT_VOWEL_PIECE_3 = 11, - CC_VIRAMA = 12, - CC_ZERO_WIDTH_MARK = 13, - CC_COUNT = 14 - }; - - enum CharClassFlags - { - CF_CLASS_MASK = 0x0000FFFF, - - CF_CONSONANT = 0x80000000, - - CF_REPH = 0x40000000, - CF_VATTU = 0x20000000, - CF_BELOW_BASE = 0x10000000, - CF_POST_BASE = 0x08000000, - CF_LENGTH_MARK = 0x04000000, - - CF_POS_BEFORE = 0x00300000, - CF_POS_BELOW = 0x00200000, - CF_POS_ABOVE = 0x00100000, - CF_POS_AFTER = 0x00000000, - CF_POS_MASK = 0x00300000, - - CF_INDEX_MASK = 0x000F0000, - CF_INDEX_SHIFT = 16 - }; - typedef le_uint32 CharClass; - - enum ScriptFlagBits - { - SF_MATRAS_AFTER_BASE = 0x80000000, - SF_REPH_AFTER_BELOW = 0x40000000, - SF_EYELASH_RA = 0x20000000, - SF_MPRE_FIXUP = 0x10000000, - - SF_POST_BASE_LIMIT_MASK = 0x0000FFFF, - SF_NO_POST_BASE_LIMIT = 0x00007FFF - }; - - typedef le_int32 ScriptFlags; + typedef le_uint32 ScriptFlags; LEUnicode firstChar; LEUnicode lastChar;