sl@0: /* sl@0: * sl@0: * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved sl@0: * sl@0: */ sl@0: sl@0: #ifndef __INDICREARRANGEMENTPROCESSOR_H sl@0: #define __INDICREARRANGEMENTPROCESSOR_H sl@0: sl@0: /** sl@0: * \file sl@0: * \internal sl@0: */ sl@0: sl@0: #include "LETypes.h" sl@0: #include "MorphTables.h" sl@0: #include "SubtableProcessor.h" sl@0: #include "StateTableProcessor.h" sl@0: #include "IndicRearrangement.h" sl@0: sl@0: U_NAMESPACE_BEGIN sl@0: sl@0: class LEGlyphStorage; sl@0: sl@0: class IndicRearrangementProcessor : public StateTableProcessor sl@0: { sl@0: public: sl@0: virtual void beginStateTable(); sl@0: sl@0: virtual ByteOffset processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index); sl@0: sl@0: virtual void endStateTable(); sl@0: sl@0: void doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const; sl@0: sl@0: IndicRearrangementProcessor(const MorphSubtableHeader *morphSubtableHeader); sl@0: virtual ~IndicRearrangementProcessor(); sl@0: sl@0: /** sl@0: * ICU "poor man's RTTI", returns a UClassID for the actual class. sl@0: * sl@0: * @stable ICU 2.8 sl@0: */ sl@0: virtual UClassID getDynamicClassID() const; sl@0: sl@0: /** sl@0: * ICU "poor man's RTTI", returns a UClassID for this class. sl@0: * sl@0: * @stable ICU 2.8 sl@0: */ sl@0: static UClassID getStaticClassID(); sl@0: sl@0: protected: sl@0: le_int32 firstGlyph; sl@0: le_int32 lastGlyph; sl@0: sl@0: const IndicRearrangementStateEntry *entryTable; sl@0: const IndicRearrangementSubtableHeader *indicRearrangementSubtableHeader; sl@0: sl@0: }; sl@0: sl@0: U_NAMESPACE_END sl@0: #endif