--- a/testexecmdw/tef/tef/utils/src/tefscriptutils.cpp Fri Sep 03 07:55:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
-* Copyright (c) 2005-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:
-* Implementation for utitity class used for parsing script files
-* Collect details on counts of test steps and test cases in a script file
-*
-*/
-
-
-
-/**
- @file TEFScriptUtils.cpp
-*/
-
-#include "tefscriptutils.h"
-
-/**
- * CScriptPreProcess(const TDesC aScriptFilePath, TCommandForCounting* aCommandsAndCounts, TInt aStructSize) - Constructor
- * Overloaded constructor used for collecting the script file path along with the structure array and size for storing count values
- * @param aScriptFilePath - Path of the script file to be loaded for reading
- * @param aCommandsAndCounts - Pointer to array of TCommandForCounting structures for collecting counts of commands
- * @param aStructSize - Integer value representing the size of the structure array passed in
- */
-CScriptPreProcess::CScriptPreProcess(const TDesC& aScriptFilePath, TPtrC aCommandList[KTEFCommandCountsStructSize])
-: iScriptFilePath(aScriptFilePath), iStructSize(KTEFCommandCountsStructSize), iScriptData(NULL)
- {
- for (TInt index=0; index < iStructSize; index++)
- {
- iCommandsAndCounts[index].iCommandName.Copy(aCommandList[index]);
- iCommandsAndCounts[index].iCommandCount = KTEFZeroValue;
- }
- }
-
-/**
- * ~CScriptPreProcess() - Destructor
- * Deallocates heap allocation if done
- */
-CScriptPreProcess::~CScriptPreProcess()
- {
- if (iScriptData != 0)
- {
- delete iScriptData;
- }
- }
-
-/**
- * CountNoOfOccurences()
- * Member function used for parsing each of the script line
- * Updates the structure array for any command of interest found during parsing
- * @return TInt - Return system-wide error codes
- */
-TInt CScriptPreProcess::CountNoOfOccurences()
- {
- // Construct the buffer with contents of script file
- TRAPD(err,CreateScriptDataFromScriptFileL());
- if (err != KErrNone)
- {
- // Return the error value, if the we fail to retieve the script file contents
- return err;
- }
-
- TBool statusOfWhile=ETrue;
- while (statusOfWhile)
- {
- // Get the individual script line contents until EOF
- statusOfWhile=GetNextScriptLine();
-
- // If the script line is available, parse it and update the command counts in the structure array, if any
- if (statusOfWhile)
- {
- UpdateCommandCounts();
- }
- }
- // Return KErrNone if the process is completed safely
- return KErrNone;
- }
-
-/**
- * CreateScriptDataFromScriptFileL()
- * Funtion used to copy the contents of the script file to a buffer for reading
- */
-void CScriptPreProcess::CreateScriptDataFromScriptFileL()
- {
- // Create a file session and connect
- RFs fS;
- User::LeaveIfError(fS.Connect());
- CleanupClosePushL(fS);
-
- // Create a file object and try to open the script file for reading
- RFile scriptFile;
- User::LeaveIfError(scriptFile.Open(fS,iScriptFilePath,EFileRead | EFileShareAny));
- CleanupClosePushL(scriptFile);
-
- // Extract the size of the script file and create a heap buffer to the particular size
- TInt fileSize;
- User::LeaveIfError(scriptFile.Size(fileSize));
-
- // Create a 16bit heap buffer
- iScriptData = HBufC::NewL(fileSize);
-
- // Create a 8 bit heap buffer for temporily copying the contents of the script file from the file object
- HBufC8* narrowData = HBufC8::NewL(fileSize);
- CleanupStack::PushL(narrowData);
- TPtr8 narrowPtr=narrowData->Des();
- // Read the file into an 8bit heap buffer
- User::LeaveIfError(scriptFile.Read(narrowPtr));
-
- TPtr widePtr(iScriptData->Des());
- // Copy it to the 16bit buffer
- widePtr.Copy(narrowData->Des());
-
- // Cleanup all heap allocations
- CleanupStack::PopAndDestroy(narrowData);
- CleanupStack::Pop(2);
-
- // Close the file object and file session
- scriptFile.Close();
- fS.Close();
-
- // Set up the instance token parser
- iScriptLex = iScriptData->Des();
- }
-
-/**
- * GetNextScriptLine()
- * Funtion used to retrieve individual script line and store them to a member buffer for parsing
- * @return TBool - Returns EFalse if the cursor position reaches end of file. ETrue otherwise
- */
-TBool CScriptPreProcess::GetNextScriptLine()
- {
- // Place the lex marker for the next read
- while(!iScriptLex.Eos())
- {
- // Peek and place the cursor position to the end of line
- TChar peek = iScriptLex.Peek();
- if(peek == '\n')
- {
- iScriptLex.Inc();
- break;
- }
- else
- {
- iScriptLex.Inc();
- }
- }
-
- // Store the current line to a member variable
- iCurrentScriptLine.Set(iScriptLex.MarkedToken());
- iScriptLex.Mark();
- // Replace the remainder of the script contents into the original buffer
- // This is done to enable retrieving of next line during successive calls to the same function
- iScriptLex.Assign(iScriptLex.RemainderFromMark());
-
- // Check for end of file and return status accordingly
- if(iCurrentScriptLine.Length() || !iScriptLex.Eos())
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-/**
- * UpdateCommandCounts()
- * Funtion used to parse the script line and update the the command struture with incrementing counts within the structure array
- */
-void CScriptPreProcess::UpdateCommandCounts()
- {
- // Copy the current script line contents to a TLex for parsing
- TLex scriptLine(iCurrentScriptLine);
-
- // Extract the first token from the current script line lex
- TPtrC commandName(scriptLine.NextToken());
-
- // Run through a loop and check if the first token of the current script line
- // matches the command names provided in the structure array
- // If it matches any of the commands in array, increment the counter correspondingly
- for (TInt index=0;index<iStructSize;index++)
- {
- if (iCommandsAndCounts[index].iCommandName.CompareF(commandName) == 0)
- {
- iCommandsAndCounts[index].iCommandCount++;
- }
- }
- }
-
-/**
- * RetrieveCount(TInt& aIndex, TDes& aCommandName, TInt& aCommandCount)
- * Funtion used to retrieve individual command counts from the structure array and store them to reference parameters
- * @param aIndex - TInt value representing the aray index whose details needs to be fetched
- * @param aCommandName - Reference to a buffer used to retrieve the command whose count is being updated
- * @param aCount - Reference to TInt descriptor used to retrieve the counts of the command from script file
- */
-void CScriptPreProcess::RetrieveValues(TInt& aIndex, TDes& aCommandName, TInt& aCommandCount)
- {
- aCommandName.Copy(iCommandsAndCounts[aIndex].iCommandName);
- aCommandCount = iCommandsAndCounts[aIndex].iCommandCount;
- }