diff -r 3406c99bc375 -r 07b41fa8d1dd stif/Parser/inc/StifFileParser.h --- a/stif/Parser/inc/StifFileParser.h Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -/* -* Copyright (c) 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: This file contains the header file of the CStifFileParser. -* -*/ - -#ifndef STIF_FILE_PARSER_H -#define STIF_FILE_PARSER_H - -// INCLUDES -#include -#include -#include -#include "cstackdeprecated.h" -#include -#include "StifParser.h" - -// CONSTANTS -_LIT(KIncludeKeyword, "INCLUDE"); - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -// None - -// CLASS DECLARATION - -// DESCRIPTION -// CStifFileParser is a STIF Test Framework StifParser class. -// Class contains a configuration file parsing operations without loading it into memory. - - -NONSHARABLE_CLASS (CStifFileParser) : public CBase -{ - public: // Enumerations - // Indication what kind of char sequence is to be found - enum TWhatToFind - { - EStart, // '//' or '/*' or '"' signs - EQuota, // '"' sign - EEndOfComment // '*/' sequence - }; - - // Indication if beginning or end of section is to be found - enum TSectionFind - { - ESectionStart, - ESectionEnd - }; - - private: // Enumerations - - public: // Constructors and destructor - - /** - * Two-phased constructor. - * Creating parser with given handle to file. For default all - * information will be parsed(ENoComments). - */ - static CStifFileParser* NewL(RFs& aFs, - RFile &aFile, - TBool aIsUnicode, - CStifParser::TCommentType aCommentType = CStifParser::ENoComments); - - /** - * Destructor. - */ - ~CStifFileParser(); - - public: // New functions - - /** - * Open and read configuration source and parses a required section. - * This method will parse next section after the earlier section if - * aSeeked parameter is equal 1. - * If configuration file includes several sections with both start and - * end tags so aSeeked parameter seeks the required section. The aSeeked - * parameters indicates section that will be parsed. - * If start tag is not given, returned section begins from the beginning of - * the file. If end tag is not given, returned sections ends at the end of - * the file. - * If section is not found and first occurence of section is seeked, function - * will return NULL, but if second (or further) occurence is seeked, function - * will leave with KErrNotFound (for compability with CStifParser::NextSectionL - * reason). - */ - HBufC* NextSectionL(const TDesC& aStartTag, - const TDesC& aEndTag, - TInt& aOffset, - TInt aSeeked = 1); - - public: // Functions from base classes - - protected: // New functions - - protected: // Functions from base classes - - private: - - /** - * C++ default constructor. - */ - CStifFileParser(CStifParser::TCommentType aCommentType); - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(RFs& aFs, - RFile &aFile, - TBool aIsUnicode); - - /** - * Reads configuration source and returns a complete line. - * This method will return also and end of line sequence. - */ - TBool ReadLineL(TPtr& aLineBuffer, - TPtr& aEndOfLineBuffer); - - /** - * Parses a given line and removes all c-style comments from it (and #-style comments). - * Result is passed in destination buffer. - */ - void ReplaceCommentsLineL(TPtr& aSrcBufPtr, - TPtr& aDstBufPtr, - TWhatToFind& aFind); - - /** - * Parses a given line and removes all #-style comments. - * Result is passed in destination buffer. - */ - void ReplaceHashCommentsLineL(TPtr& aSrcBufPtr, - TPtr& aDstBufPtr); - - /** - * Closes all files on file stack and clears the stack. - */ - void ClearFileStack(void); - - /** - * Pops RFile handle from file stack and sets correct current file handle. - */ - void PopFromFileStack(void); - - /** - * Opens file and pushes it to stack. - */ - void PushFileToStackL(const TDesC& aFileName); - - /** - * Deletes all descriptors assigned to array and empties array. - */ - void ClearSectionLinesArray(void); - - public: // Data - - protected: // Data - - private: // Data - - /** - * For file opening. - */ - RFs iFileServer; - - /** - * For file opening. This is the first (base) file. Later other files may be opened if - * they are included to base one. - */ - RFile iBaseFile; - - /** - * Comment type's indication. - */ - CStifParser::TCommentType iCommentType; - - /** - * Flag indicating if file is unicode. - */ - TBool iIsUnicode; - - /** - * How many bytes per char in file (2 for unicode, 1 for non-unicode). - */ - TInt iBytesPerChar; - - /** - * Handle to file which is currently read. - */ - RFile* iCurrentFile; - - /** - * Stack of opened files (it does not contain base file). - */ - CStackDeprecated* iFileStack; - - /** - * Array of lines belonging to seeked section. - */ - RPointerArray iSectionLines; - - /** - * Array of already included files (to avoid loop in includes). - */ - RPointerArray iFileNames; - - /** - * Buffer with eol sequence. Filled when include found and used after last line of inlcuded file. - */ - TBuf<2> iEolBuf; - - public: // Friend classes - - protected: // Friend classes - - private: // Friend classes -}; - -#endif // STIF_FILE_PARSER_H - -// End of File