1/* 2 * 3 * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved 4 * 5 */ 6 7#ifndef __INDICREARRANGEMENTPROCESSOR_H 8#define __INDICREARRANGEMENTPROCESSOR_H 9 10/** 11 * \file 12 * \internal 13 */ 14 15#include "LETypes.h" 16#include "MorphTables.h" 17#include "SubtableProcessor.h" 18#include "StateTableProcessor.h" 19#include "IndicRearrangement.h" 20 21U_NAMESPACE_BEGIN 22 23class LEGlyphStorage; 24 25class IndicRearrangementProcessor : public StateTableProcessor 26{ 27public: 28 virtual void beginStateTable(); 29 30 virtual ByteOffset processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index); 31 32 virtual void endStateTable(); 33 34 void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const; 35 36 IndicRearrangementProcessor(const LEReferenceTo<MorphSubtableHeader> &morphSubtableHeader, LEErrorCode &success); 37 virtual ~IndicRearrangementProcessor(); 38 39 /** 40 * ICU "poor man's RTTI", returns a UClassID for the actual class. 41 * 42 * @stable ICU 2.8 43 */ 44 virtual UClassID getDynamicClassID() const; 45 46 /** 47 * ICU "poor man's RTTI", returns a UClassID for this class. 48 * 49 * @stable ICU 2.8 50 */ 51 static UClassID getStaticClassID(); 52 53protected: 54 le_int32 firstGlyph; 55 le_int32 lastGlyph; 56 57 LEReferenceTo<IndicRearrangementSubtableHeader> indicRearrangementSubtableHeader; 58 LEReferenceToArrayOf<IndicRearrangementStateEntry> entryTable; 59 LEReferenceToArrayOf<le_int16> int16Table; 60 61}; 62 63U_NAMESPACE_END 64#endif 65