--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/texthandling/stext/ParseLst.h Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef __PARSELST_H__
+#define __PARSELST_H__
+
+#include <e32std.h>
+#include <mparser.h>
+#include <txtrich.h>
+//++ sort out definitive hash includes
+
+
+NONSHARABLE_CLASS(CParserList) : public CBase
+/**
+@internalComponent
+*/
+ {
+ enum TParserTagValues
+ {
+ EReformatOnRecogniseFlag = (TInt)0x80000000,
+ EReformatOnRolloverFlag = 0x40000000,
+ EDefaultParserFlag = 0x20000000,
+ EParserTagMask = 0x3FFFFFFF,
+ EMaxParserIndex = 0x1FFFFFFF
+ };
+
+ enum TParserListPanic
+ {
+ EParserNoneActive,
+ EParserNullPtr,
+ EParserInstanceNotActive,
+ EParserNoSuchTag,
+ EParserIgnoringAllowFlag,
+ EParserIndexRollover
+ };
+
+private:
+ class CParserItem : public CBase
+ {
+ public:
+ CParserItem(MParser* aParser, const TUint aTagIndex);
+ ~CParserItem() {}
+
+ inline MParser* Parser() const {return iParser;}
+ inline TUint TagIndex() const {return iTagIndex;}
+
+ private:
+ MParser* iParser;
+ TUint iTagIndex;
+ };
+
+public:
+ CParserList();
+ ~CParserList();
+
+ void ActivateParserL(MParser* aParser);
+ void DeactivateParser(MParser* aParser);
+ void ActivateDefaultParserL(MParser* aParser);
+ void DeactivateParserDefaults();
+ TBool ParseThisText(CRichText& aTextObj,TInt aStartScan,TInt aScanLength,TInt& aStartOfTags,TInt& aLength);
+ MParser* ParserWithThisTag(const TUint aTagIndex) const;
+ TUint TagForThisParser(const MParser *const aParser) const;
+
+ static inline TBool ReformatOnRollover(const TUint aTagIndex) {return (aTagIndex & EReformatOnRolloverFlag);}
+
+private:
+ static inline TBool ReformatOnRecognise(const TUint aTagIndex) {return (aTagIndex & static_cast<TUint>( EReformatOnRecogniseFlag ) );}
+ static inline TBool DefaultParser(const TUint aTagIndex) {return (aTagIndex & EDefaultParserFlag);}
+
+ static inline TUint MaskedTag(const TUint32 aTagIndex) {return (aTagIndex & EParserTagMask);}
+
+ void ActivateAParserL(MParser* aParser, const TBool aDefaultParser);
+ TBool LoopOneParser(MParser* aParser, const TUint aTagIndex, CRichText& aTextObj,
+ const TInt aStartScan, const TInt aScanLength,
+ TInt& aStartOfTags, TInt& aLength);
+ void Panic(TParserListPanic aPanic) const;
+
+private:
+ RPointerArray<CParserItem> iParserList; // List of active parsers (specific and default)
+ TUint iHighestIndex;
+public:
+ TInt iNumberInList;
+ TInt iRefCount;
+ };
+
+NONSHARABLE_CLASS(CParserData) : public CBase
+/**
+@internalComponent
+*/
+ {
+public:
+ CParserData(TInt aEndParse);
+ ~CParserData();
+ TBool HaveRange() const { return iStartParse != -1; }
+ void MergeRange(TInt aStart,TInt aOldLength,TInt aNewLength);
+ void KillRange() { iStartParse = -1; }
+ TInt StartParse() const { return iStartParse; }
+ TInt EndParse() const { return iEndParse; }
+
+ CParserList* iActiveParserList; // local copy because access to Dll::Tls is slow
+ MEditObserver* iEditObserver;
+ TInt iLastKnownCursor;
+
+private:
+ TInt iStartParse; // start of text to be parsed; -1 means none
+ TInt iEndParse; // end of text to be parsed
+ };
+
+#endif