perfsrv/analyzetool/commandlineengine/inc/CATDataSaver.h
author hgs
Mon, 06 Sep 2010 15:00:47 +0300
changeset 51 98307c651589
parent 20 analyzetool/commandlineengine/inc/CATDataSaver.h@a71a3e32a2ae
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Defines CATDataSaver class and element type enumeration.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __CATDATASAVER_H__
hgs
parents:
diff changeset
    20
#define __CATDATASAVER_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <xercesc/dom/DOM.hpp>
hgs
parents:
diff changeset
    23
#include <xercesc/framework/LocalFileFormatTarget.hpp>
hgs
parents:
diff changeset
    24
#include "ATCommonDefines.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
/**
hgs
parents:
diff changeset
    27
* Represents element types
hgs
parents:
diff changeset
    28
*/
hgs
parents:
diff changeset
    29
enum element_types
hgs
parents:
diff changeset
    30
{
hgs
parents:
diff changeset
    31
	RESULT = 0,
hgs
parents:
diff changeset
    32
	RUN,
hgs
parents:
diff changeset
    33
	LEAK,
hgs
parents:
diff changeset
    34
	CALLSTACK,
hgs
parents:
diff changeset
    35
	ITEM,
hgs
parents:
diff changeset
    36
	RUN_END,
hgs
parents:
diff changeset
    37
	ERROR_IN_RUN,
hgs
parents:
diff changeset
    38
	MEM_LEAKS,
hgs
parents:
diff changeset
    39
	MEM_LEAK_MODULE,
hgs
parents:
diff changeset
    40
	HANDLE_LEAKS,
hgs
parents:
diff changeset
    41
	HANDLE_LEAK_MODULE,
hgs
parents:
diff changeset
    42
	TEST_START,
hgs
parents:
diff changeset
    43
	TEST_END,
hgs
parents:
diff changeset
    44
	SUBTEST_MEM_LEAKS,
hgs
parents:
diff changeset
    45
	SUBTEST_MEM_LEAK_MODULE,
hgs
parents:
diff changeset
    46
	LOGGING_CANCELLED,
hgs
parents:
diff changeset
    47
	SUBTEST_HANDLE_LEAKS
hgs
parents:
diff changeset
    48
};
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
//#define CARBIDE_DATA 0
hgs
parents:
diff changeset
    51
#define XML_DATA     1
hgs
parents:
diff changeset
    52
#define TEXT_DATA    2
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
/**
hgs
parents:
diff changeset
    55
* TProvides features for creating the analyze report in
hgs
parents:
diff changeset
    56
* basic text or XML formats. Uses xerces library for XML output.
hgs
parents:
diff changeset
    57
*/
hgs
parents:
diff changeset
    58
class CATDataSaver
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
public:
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
	/**
hgs
parents:
diff changeset
    64
	* Constructor.
hgs
parents:
diff changeset
    65
	*/
hgs
parents:
diff changeset
    66
	CATDataSaver( void );
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
	/**
hgs
parents:
diff changeset
    69
	* Destructor.
hgs
parents:
diff changeset
    70
	*/
hgs
parents:
diff changeset
    71
	~CATDataSaver(void);
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
	/**
hgs
parents:
diff changeset
    74
	* Save all lines to file with given format.
hgs
parents:
diff changeset
    75
	* @param pFileName Pointer to file name.
hgs
parents:
diff changeset
    76
	* @param iDataToSave Format of data.
hgs
parents:
diff changeset
    77
	*/
hgs
parents:
diff changeset
    78
	void SaveLinesToFile( const char* pFileName, int iDataToSave );
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
	/**
hgs
parents:
diff changeset
    81
	* Prints all saved lines to screen.
hgs
parents:
diff changeset
    82
	*/
hgs
parents:
diff changeset
    83
	void PrintLinesToScreen( void );
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
	/**
hgs
parents:
diff changeset
    86
	* Adds saved line to first in database.
hgs
parents:
diff changeset
    87
	*/
hgs
parents:
diff changeset
    88
	void AddLineToFirst( void );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
	/**
hgs
parents:
diff changeset
    91
	* Adds saved line to last in database.
hgs
parents:
diff changeset
    92
	*/
hgs
parents:
diff changeset
    93
	void AddLineToLast();
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
	/**
hgs
parents:
diff changeset
    96
	* Adds string to current line.
hgs
parents:
diff changeset
    97
	* @param pData string to add
hgs
parents:
diff changeset
    98
	* @param bSaveCarbideData add string to xml?
hgs
parents:
diff changeset
    99
	*/
hgs
parents:
diff changeset
   100
	void AddString( const char* pData, bool bSaveCarbideData = false );
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
	/**
hgs
parents:
diff changeset
   103
	* Converts integer to string and adds it to current line.
hgs
parents:
diff changeset
   104
	* @param iValue integer value to add
hgs
parents:
diff changeset
   105
	* @param bSaveCarbideData add string to xml?
hgs
parents:
diff changeset
   106
	*/
hgs
parents:
diff changeset
   107
	void AddInteger( int iValue, bool bSaveCarbideData = false );
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
	/**
hgs
parents:
diff changeset
   110
	* Sets logging level.
hgs
parents:
diff changeset
   111
	* If value is invalid DEFAULT_LOGGING_LEVEL is used
hgs
parents:
diff changeset
   112
	* value must be between MIN_LOGGING_LEVEL and MAX_LOGGING_LEVEL
hgs
parents:
diff changeset
   113
	* @param iLoggingLevel Logging level.
hgs
parents:
diff changeset
   114
	*/
hgs
parents:
diff changeset
   115
	void SetLoggingLevel( int iLoggingLevel );
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
	/**
hgs
parents:
diff changeset
   118
	* Gets logging level.
hgs
parents:
diff changeset
   119
	* @return Logging level.
hgs
parents:
diff changeset
   120
	*/
hgs
parents:
diff changeset
   121
	int GetLoggingLevel( void );
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
	/**
hgs
parents:
diff changeset
   124
	* Sets print immediately flag.
hgs
parents:
diff changeset
   125
	* @param bPrintImmediately
hgs
parents:
diff changeset
   126
	*/
hgs
parents:
diff changeset
   127
	void SetPrintFlag( bool bPrintImmediately );
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
	/**
hgs
parents:
diff changeset
   130
	* Sets data header for carbide data.
hgs
parents:
diff changeset
   131
	*/
hgs
parents:
diff changeset
   132
	void SaveCarbideDataHeader( void );
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
	/**
hgs
parents:
diff changeset
   135
	* Initializes xercer xml parser.
hgs
parents:
diff changeset
   136
	*/
hgs
parents:
diff changeset
   137
	bool InitXML( void );
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
	/**
hgs
parents:
diff changeset
   140
	* Writes data to xml tree.
hgs
parents:
diff changeset
   141
	* @param sInput data 
hgs
parents:
diff changeset
   142
	* @param iElementType element to write
hgs
parents:
diff changeset
   143
	*/
hgs
parents:
diff changeset
   144
	void SaveXML( string sInput, int iElementType );
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
	/**
hgs
parents:
diff changeset
   147
	* Converts char* -> wchar_t*.
hgs
parents:
diff changeset
   148
	* @param str
hgs
parents:
diff changeset
   149
	* @return LPWSTR
hgs
parents:
diff changeset
   150
	*/
hgs
parents:
diff changeset
   151
	static LPWSTR CharToWChar( const char* str );
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
	/**
hgs
parents:
diff changeset
   154
	* Converts wchar_t* -> char*.
hgs
parents:
diff changeset
   155
	* @param sInput
hgs
parents:
diff changeset
   156
	* @param Source
hgs
parents:
diff changeset
   157
	*/
hgs
parents:
diff changeset
   158
	static void WCharToChar( string& sInput, const WCHAR* Source );
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
	/**
hgs
parents:
diff changeset
   161
	* Set is build type debug?
hgs
parents:
diff changeset
   162
	* @param bUdebBuild true if build type debug
hgs
parents:
diff changeset
   163
	*/
hgs
parents:
diff changeset
   164
	void SetBuild( bool bUdebBuild );
hgs
parents:
diff changeset
   165
hgs
parents:
diff changeset
   166
	/**
hgs
parents:
diff changeset
   167
	* Add xml data for extension
hgs
parents:
diff changeset
   168
	* @param sInput data
hgs
parents:
diff changeset
   169
	*/
hgs
parents:
diff changeset
   170
	void AddCarbideData( const string& sInput );
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
	/**
hgs
parents:
diff changeset
   173
	* Convert given integer to string
hgs
parents:
diff changeset
   174
	* @param iValueToConvert
hgs
parents:
diff changeset
   175
	* @return string
hgs
parents:
diff changeset
   176
	*/
hgs
parents:
diff changeset
   177
	static string IntegerToString( int iValueToConvert );
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
#ifndef MODULE_TEST
hgs
parents:
diff changeset
   180
private:
hgs
parents:
diff changeset
   181
#endif
hgs
parents:
diff changeset
   182
	vector<string> m_vLines;
hgs
parents:
diff changeset
   183
	string m_sLine;
hgs
parents:
diff changeset
   184
	string m_sCarbideDataLine;
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
	string m_sCarbideDataHeader;
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
	int m_iLoggingLevel;
hgs
parents:
diff changeset
   189
	int m_iRunNumber;
hgs
parents:
diff changeset
   190
	bool m_bPrintImmediately;
hgs
parents:
diff changeset
   191
	bool m_bXMLInitOk;
hgs
parents:
diff changeset
   192
	bool m_bUdebBuild;
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
	xercesc::DOMDocument* m_pDomDoc;
hgs
parents:
diff changeset
   195
	xercesc::DOMElement* m_pRootElem;
hgs
parents:
diff changeset
   196
	xercesc::DOMElement* m_pCurrentLeakElem;
hgs
parents:
diff changeset
   197
	xercesc::DOMWriter* m_Serializer;
hgs
parents:
diff changeset
   198
	xercesc::DOMElement* m_pRunElement;
hgs
parents:
diff changeset
   199
	xercesc::DOMElement* m_pMemoryLeaks;
hgs
parents:
diff changeset
   200
	xercesc::DOMElement* m_pHandleLeaks;
hgs
parents:
diff changeset
   201
	xercesc::DOMElement* m_pCurrentSubTestElem;
hgs
parents:
diff changeset
   202
	xercesc::DOMElement* m_pSubtestMemoryLeaks;
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
	/**
hgs
parents:
diff changeset
   205
	* Utility to get sub string from string using char as separator
hgs
parents:
diff changeset
   206
	* @param sInput
hgs
parents:
diff changeset
   207
	* @param cCharacter
hgs
parents:
diff changeset
   208
	* @return string
hgs
parents:
diff changeset
   209
	*/
hgs
parents:
diff changeset
   210
	string GetStringUntilNextGivenChar( string& sInput, char cCharacter );
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
};
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
#endif