]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/layout/ContextualSubstSubtables.cpp
ICU-8.11.1.tar.gz
[apple/icu.git] / icuSources / layout / ContextualSubstSubtables.cpp
index 863b9ab2ad8acfb1e2cfc5808978b91101c84dc0..1d8f28c8c1778fdc3b703fb3f0c8729531a782c3 100644 (file)
@@ -1,7 +1,5 @@
 /*
 /*
- * @(#)ContextualSubstSubtables.cpp    1.11 00/03/15
- *
- * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved
  *
  */
 
  *
  */
 
@@ -57,20 +55,20 @@ le_bool ContextualSubstitutionBase::matchGlyphIDs(const TTGlyphID *glyphArray, l
 
     while (glyphCount > 0) {
         if (! glyphIterator->next()) {
 
     while (glyphCount > 0) {
         if (! glyphIterator->next()) {
-            return false;
+            return FALSE;
         }
 
         TTGlyphID glyph = (TTGlyphID) glyphIterator->getCurrGlyphID();
 
         if (glyph != SWAPW(glyphArray[match])) {
         }
 
         TTGlyphID glyph = (TTGlyphID) glyphIterator->getCurrGlyphID();
 
         if (glyph != SWAPW(glyphArray[match])) {
-            return false;
+            return FALSE;
         }
 
         glyphCount -= 1;
         match += direction;
     }
 
         }
 
         glyphCount -= 1;
         match += direction;
     }
 
-    return true;
+    return TRUE;
 }
 
 le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArray, le_uint16 glyphCount,
 }
 
 le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArray, le_uint16 glyphCount,
@@ -88,7 +86,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra
 
     while (glyphCount > 0) {
         if (! glyphIterator->next()) {
 
     while (glyphCount > 0) {
         if (! glyphIterator->next()) {
-            return false;
+            return FALSE;
         }
 
         LEGlyphID glyph = glyphIterator->getCurrGlyphID();
         }
 
         LEGlyphID glyph = glyphIterator->getCurrGlyphID();
@@ -101,7 +99,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra
             // table. If we're looking for such a class, pretend that
             // we found it.
             if (classDefinitionTable->hasGlyphClass(matchClass)) {
             // table. If we're looking for such a class, pretend that
             // we found it.
             if (classDefinitionTable->hasGlyphClass(matchClass)) {
-                return false;
+                return FALSE;
             }
         }
 
             }
         }
 
@@ -109,7 +107,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra
         match += direction;
     }
 
         match += direction;
     }
 
-    return true;
+    return TRUE;
 }
 
 le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
 }
 
 le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
@@ -128,18 +126,18 @@ le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTa
         const CoverageTable *coverageTable = (const CoverageTable *) (offsetBase + coverageTableOffset);
 
         if (! glyphIterator->next()) {
         const CoverageTable *coverageTable = (const CoverageTable *) (offsetBase + coverageTableOffset);
 
         if (! glyphIterator->next()) {
-            return false;
+            return FALSE;
         }
 
         if (coverageTable->getGlyphCoverage((LEGlyphID) glyphIterator->getCurrGlyphID()) < 0) {
         }
 
         if (coverageTable->getGlyphCoverage((LEGlyphID) glyphIterator->getCurrGlyphID()) < 0) {
-            return false;
+            return FALSE;
         }
 
         glyphCount -= 1;
         glyph += direction;
     }
 
         }
 
         glyphCount -= 1;
         glyph += direction;
     }
 
-    return true;
+    return TRUE;
 }
 
 le_uint32 ContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
 }
 
 le_uint32 ContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
@@ -326,7 +324,11 @@ le_uint32 ChainingContextualSubstitutionSubtable::process(const LookupProcessor
     }
 }
 
     }
 }
 
-const LETag emptyTag = 0;
+// NOTE: This could be a #define, but that seems to confuse
+// the Visual Studio .NET 2003 compiler on the calls to the
+// GlyphIterator constructor. It somehow can't decide if
+// emptyFeatureList matches an le_uint32 or an le_uint16...
+static const FeatureMask emptyFeatureList = 0x00000000UL;
 
 le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
                                                               const LEFontInstance *fontInstance) const
 
 le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator,
                                                               const LEFontInstance *fontInstance) const
@@ -343,7 +345,7 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupPro
                 (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset);
             le_uint16 chainSubRuleCount = SWAPW(chainSubRuleSetTable->chainSubRuleCount);
             le_int32 position = glyphIterator->getCurrStreamPosition();
                 (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset);
             le_uint16 chainSubRuleCount = SWAPW(chainSubRuleSetTable->chainSubRuleCount);
             le_int32 position = glyphIterator->getCurrStreamPosition();
-            GlyphIterator tempIterator(*glyphIterator, emptyTag);
+            GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
 
             for (le_uint16 subRule = 0; subRule < chainSubRuleCount; subRule += 1) {
                 Offset chainSubRuleTableOffset =
 
             for (le_uint16 subRule = 0; subRule < chainSubRuleCount; subRule += 1) {
                 Offset chainSubRuleTableOffset =
@@ -364,7 +366,7 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupPro
                 }
 
                 tempIterator.prev();
                 }
 
                 tempIterator.prev();
-                if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, true)) {
+                if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) {
                     continue;
                 }
 
                     continue;
                 }
 
@@ -415,7 +417,7 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupPro
                 (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset);
             le_uint16 chainSubClassRuleCount = SWAPW(chainSubClassSetTable->chainSubClassRuleCount);
             le_int32 position = glyphIterator->getCurrStreamPosition();
                 (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset);
             le_uint16 chainSubClassRuleCount = SWAPW(chainSubClassSetTable->chainSubClassRuleCount);
             le_int32 position = glyphIterator->getCurrStreamPosition();
-            GlyphIterator tempIterator(*glyphIterator, emptyTag);
+            GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
 
             for (le_uint16 scRule = 0; scRule < chainSubClassRuleCount; scRule += 1) {
                 Offset chainSubClassRuleTableOffset =
 
             for (le_uint16 scRule = 0; scRule < chainSubClassRuleCount; scRule += 1) {
                 Offset chainSubClassRuleTableOffset =
@@ -438,7 +440,7 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupPro
 
                 tempIterator.prev();
                 if (! matchGlyphClasses(chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount,
 
                 tempIterator.prev();
                 if (! matchGlyphClasses(chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount,
-                    &tempIterator, backtrackClassDefinitionTable, true)) {
+                    &tempIterator, backtrackClassDefinitionTable, TRUE)) {
                     continue;
                 }
 
                     continue;
                 }
 
@@ -477,7 +479,7 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupPro
     const Offset *lookaheadCoverageTableOffsetArray = &inputCoverageTableOffsetArray[inputGlyphCount + 1];
     le_uint16 substCount = (le_uint16) SWAPW(lookaheadCoverageTableOffsetArray[lookaheadGlyphCount]);
     le_int32 position = glyphIterator->getCurrStreamPosition();
     const Offset *lookaheadCoverageTableOffsetArray = &inputCoverageTableOffsetArray[inputGlyphCount + 1];
     le_uint16 substCount = (le_uint16) SWAPW(lookaheadCoverageTableOffsetArray[lookaheadGlyphCount]);
     le_int32 position = glyphIterator->getCurrStreamPosition();
-    GlyphIterator tempIterator(*glyphIterator, emptyTag);
+    GlyphIterator tempIterator(*glyphIterator, emptyFeatureList);
 
     if (! tempIterator.prev(backtrkGlyphCount)) {
         return 0;
 
     if (! tempIterator.prev(backtrkGlyphCount)) {
         return 0;
@@ -485,7 +487,7 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupPro
 
     tempIterator.prev();
     if (! ContextualSubstitutionBase::matchGlyphCoverages(backtrackCoverageTableOffsetArray,
 
     tempIterator.prev();
     if (! ContextualSubstitutionBase::matchGlyphCoverages(backtrackCoverageTableOffsetArray,
-        backtrkGlyphCount, &tempIterator, (const char *) this, true)) {
+        backtrkGlyphCount, &tempIterator, (const char *) this, TRUE)) {
         return 0;
     }
 
         return 0;
     }