diff -r 000000000000 -r d6fe6244b863 creator/inc/creator_scriptparser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/inc/creator_scriptparser.h Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,139 @@ +/* +* Copyright (c) 2008 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 CREATORSCRIPTPARSER_H_ +#define CREATORSCRIPTPARSER_H_ + +#include +#include +#include + +using namespace Xml; + +class CCreatorScriptElement; +class CCreatorEngine; +class CCreatorScriptElementCache; + +class TCreatorScriptElementInfo +{ +public: + enum TElementStatus + { + EStatusUndefined, // undefined + EStatusParsing, // currently being parsed + EStatusParsed // parsed + }; + TCreatorScriptElementInfo() + { + iStatus = EStatusUndefined; + iElement = 0; + } + TCreatorScriptElementInfo(TElementStatus aStatus, CCreatorScriptElement* aElement) + { + iStatus = aStatus; + iElement = aElement; + }; + + TElementStatus iStatus; + CCreatorScriptElement* iElement; +}; + +class CCreatorScriptParser : public CBase, public MContentHandler +{ +public: + + virtual ~CCreatorScriptParser(); + static CCreatorScriptParser* NewL(CCreatorEngine* aEngine); + static CCreatorScriptParser* NewLC(CCreatorEngine* aEngine); + void ParseL(const TDesC& aFileName); + void ParseL(RFile& aFile); + + TInt GetError() const; + +private: + + CCreatorScriptParser(); + void ConstructL(CCreatorEngine* aEngine); + + /** + * Converts 8 bit descriptor to 16 bit descriptor + * @param aDes 8 bit descriptor to be converted + * @return Pointer to the new 16 bit descriptor + */ + HBufC* Convert8BitTo16BitLC(const TDesC8& aInput); + const TCreatorScriptElementInfo& LastElementInfo() const; + void GetTextFileMode(RFile& aFile, TInt& aFileSize); + + +public: + // From MContentHandler: + void OnStartDocumentL(const RDocumentParameters &aDocParam, TInt aErrorCode); + void OnEndDocumentL(TInt aErrorCode); + void OnStartElementL( const RTagInfo& aElement, + const RAttributeArray& aAttributes, + TInt aErrorCode); + void OnEndElementL(const RTagInfo& aElement, TInt aErrorCode); + void OnContentL(const TDesC8& aBytes, TInt aErrorCode); + void OnStartPrefixMappingL( const RString& aPrefix, + const RString& aUri, + TInt aErrorCode); + void OnEndPrefixMappingL(const RString& aPrefix, TInt aErrorCode); + void OnIgnorableWhiteSpaceL(const TDesC8& aBytes, TInt aErrorCode); + void OnSkippedEntityL(const RString& aName, TInt aErrorCode); + void OnProcessingInstructionL( const TDesC8& aTarget, + const TDesC8& aData, + TInt aErrorCode); + void OnError(TInt aErrorCode); + TAny* GetExtendedInterface(const TInt32 aUid); + +private: + + enum TFileFormat + { + EFormatANSIASCII, + EFormatUTF8, + EFormatUTF16LE, + EFormatUTF16BE + }; + // XML parser + CParser* iParser; + + /** + * Element stack holding the elements that are currently being parsed. + */ + RArray iElementStack; + + /** + * Cache object containig the elements that are referred in future and thus should + * not be deleted after parsing. + */ + CCreatorScriptElementCache* iElementCache; + + /** + * Pointer to the engine + */ + CCreatorEngine* iEngine; + + TCreatorScriptElementInfo iDefaultElement; + + TFileFormat iScriptTextFormat; + TInt iLastError; +}; + +#endif /*CREATORSCRIPTPARSER_H_*/