X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..ef6cf650f4a75c3f97de06b51fa104f2069b9ea2:/icuSources/layout/SingleTableProcessor.cpp?ds=inline diff --git a/icuSources/layout/SingleTableProcessor.cpp b/icuSources/layout/SingleTableProcessor.cpp index 9af991e3..32661dbc 100644 --- a/icuSources/layout/SingleTableProcessor.cpp +++ b/icuSources/layout/SingleTableProcessor.cpp @@ -1,7 +1,6 @@ /* - * @(#)SingleTableProcessor.cpp 1.6 00/03/15 * - * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved + * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved * */ @@ -11,38 +10,41 @@ #include "NonContextualGlyphSubst.h" #include "NonContextualGlyphSubstProc.h" #include "SingleTableProcessor.h" +#include "LEGlyphStorage.h" #include "LESwaps.h" U_NAMESPACE_BEGIN -const char SingleTableProcessor::fgClassID=0; +UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SingleTableProcessor) SingleTableProcessor::SingleTableProcessor() { } -SingleTableProcessor::SingleTableProcessor(const MorphSubtableHeader *moprhSubtableHeader) - : NonContextualGlyphSubstitutionProcessor(moprhSubtableHeader) +SingleTableProcessor::SingleTableProcessor(const LEReferenceTo &morphSubtableHeader, LEErrorCode &success) + : NonContextualGlyphSubstitutionProcessor(morphSubtableHeader, success) { - const NonContextualGlyphSubstitutionHeader *header = (const NonContextualGlyphSubstitutionHeader *) moprhSubtableHeader; - - singleTableLookupTable = (const SingleTableLookupTable *) &header->table; + LEReferenceTo header(morphSubtableHeader, success); + singleTableLookupTable = LEReferenceTo(morphSubtableHeader, success, (const SingleTableLookupTable*)&header->table); } SingleTableProcessor::~SingleTableProcessor() { } -void SingleTableProcessor::process(LEGlyphID *glyphs, le_int32 * /*charIndices*/, le_int32 glyphCount) +void SingleTableProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &success) { const LookupSingle *entries = singleTableLookupTable->entries; le_int32 glyph; + le_int32 glyphCount = glyphStorage.getGlyphCount(); + + if (LE_FAILURE(success)) return; for (glyph = 0; glyph < glyphCount; glyph += 1) { - const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(entries, glyphs[glyph]); + const LookupSingle *lookupSingle = singleTableLookupTable->lookupSingle(singleTableLookupTable, entries, glyphStorage[glyph], success); if (lookupSingle != NULL) { - glyphs[glyph] = SWAPW(lookupSingle->value); + glyphStorage[glyph] = SWAPW(lookupSingle->value); } } }