apicompatanamdw/compatanalysercmd/headeranalyser/src/ReportGenerator.h
author noe\swadi
Mon, 26 Apr 2010 16:28:13 +0530
changeset 3 ebe3f8f03b59
parent 0 638b9c697799
permissions -rw-r--r--
Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
/*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
* Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
* Description:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    18
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    19
#ifndef __REPORT_GENERATOR_H__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define __REPORT_GENERATOR_H__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include "CmdGlobals.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#include <string>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#include <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#include <vector>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
#include "ReportIssue.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
XERCES_CPP_NAMESPACE_USE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
* The ReportGenerator defines an issue reporting interface for the analysis 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
* to use. It defines issue type IDs and issue severities and constructs 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
* the XML document based on the reported issues. The ReportGenerator also 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
* implements the saving of the resulting XML document to the file system.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
class ReportGenerator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
    * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
    ReportGenerator(string aOutputFile="");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
    * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
    ~ReportGenerator();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
    * Set style sheet settings
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
    * @param aXSLFilename style sheet file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
    * @param aIncludeInXML true if to be included in XML
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
    void setXSL(string aXSLFilename, bool aIncludeInXML);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
    * Set DTD (Document Type Definition ) usage
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
    * (method not used)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
    * @param aDTDFilename DTD filename
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
    * @param aIncludeInDTD include DTD in XML
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
    void setDTD(string aDTDFilename, bool aIncludeInDTD);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
    * Start reporting, initalize XML-parser and create DOM document
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
    void startReport();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
    * Finish report, dump DOM to file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
    void finishReport();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
    * Load strin tables
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
    * @param aFilename if to be included in XML
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
    void loadStringTables(string aFilename);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
    * Set command line parameters
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
    * @param aParms map of command line parameters
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
    void setCmdLineParms(map<string, string> aParms);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
    * Set base and currentline versions
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
    * @param aBaseline baseline version
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    * @param aCurrent current version
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    void setVersions(string aBaseline, string aCurrent);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
    * Adds issue to report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
    * @param aIssue issue to report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
    * @return the issue id, -1 if the adding was not successful
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
    int addIssue(ReportIssue* aIssue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
    * Adds issue to the report. This node is marked as the cause for the issue
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
    * @param aFile header file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
    * @param aFQName fully qualified name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
    * @param aIdentityId  identity= Class, ExportedFunction, Enumeration, etc.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
    * @param aTypeId  what was happened ( something was removed, addded, changed..) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
    * @param aBCSeverityId how severe the issue was for binary compatibility
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
    * @param aSCSeverityId how severe the issue was for source compatibility
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    * @param aIgnoreInformation reason to ignore
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
    * @param aLineNumber line number of the issue (0 always)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
    * @param aCompareFileName compare file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
	* @param aCompilationError compilation error reason
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
    * @return the issue id, -1 if the addition was not successful
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
    int addIssue(const string& aFile, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
                const string& aFQName, const TIssueIdentity& aIdentityId, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
                const TIssueType& aTypeId, const TBCSeverity& aBCSeverityId, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
                const TSCSeverity& aSCSeverityId, const string& aIgnoreInformation,
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   123
                int aLineNumber, const string& issueLoc,const string& aCompareFileName, 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   124
				const string& aCompilationError);
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
    * Preprocess issue list. Remove removed subclasses and merges similar issues
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    * of the same function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
	void preprocessIssueList();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
    * Preprocess issue list.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
	TIssueIdentity functionMapping(const vector<TIssueIdentity> & ids);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    * Merges similar issues of the same function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
	void mergeFunctionIssues();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    * Removes duplicates from the issue list, merges the different functions
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
	void removeRemovedSubClasses();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
    * Dump XSL data to file (not used)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
	void dumpXSLToFile();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
    * Dump DTD data to file (not used)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
    void dumpDTDToFile();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
    * Dump DOM data to file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
    void dumpDOMToFile();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
    * Genarate version id nodes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    void generateVersionIdNodes();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
    * Initialise DOM
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
    void initialiseDOM();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    * Uninitialize DOM
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
    void uninitialiseDOM();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
    * Generate issue list
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    void generateIssueList();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   183
    * Generate issues for header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
    //void generateIssuesForHeader();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
    * Get given commandline parameter value
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
    string getCmdLineParm(string aParm);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
    * Create documentation URL string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
    string createDocumentationUrlString(string element);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
    * Create node with the given name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    * @return aName node name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
    DOMElement* createOpenNode(const char* aName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    * Create node to hold report header data
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
    DOMElement* createHeaderNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
    * Create node to hold list of issues found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
    DOMElement* createIssueListNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
    * Create issue node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
    DOMElement* createIssueNode(ReportIssue* aIssue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
    * Create headerfile node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
    * @return the pointer to DOM node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
    DOMElement* createHeaderFileNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
    * Create time stamp node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
    DOMElement* createTimestampNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
    * Create text node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
    * @param aNodeName name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    * @param aNodeText text of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
    DOMElement* createSimpleTextNode(const char* aNodeName, const char* aNodeText);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
    * Create text node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
    * @param aNodeName name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
    * @param aInteger converted to string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
    DOMElement* createSimpleTextNode(const char* aNodeName, const int aInteger);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
    * Create text node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
    * @param aNodeName name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
    * @param aNodeText text of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
    DOMElement* createSimpleTextNode(const char* aNodeName, const XMLCh* aNodeText);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
    * Create attribute node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
    * @param aNodeName name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
    * @param aNodeAPI attribute value (API name) of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
    * @param aNodeCategory attribute value (API category) of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
	DOMElement* createAPIAttributeNode(const char* aNodeName, const char* aNodeAPI,const char* aNodeCategory);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
    * Create commandline node node. The node consists of commandline parameters.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
    DOMElement* createCmdLineNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
    * Create parameter node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
    * @param aKey parameter key
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
    * @param aValue parameter key value
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
    DOMElement* createParmNode(const char* aKey, const char* aValue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
    * Create issue node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
    DOMElement* createIssueNode(ReportIssue& aIssue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
    * Create severity node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
    * @return pointer to DOMElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
    //DOMElement* createSeverityNode(const int aId);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
    DOMElement* createSeverityNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
    * Append children to node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
    * @param aParent parent node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
    * @param aChildren children to append
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
    void appendChildrenToNode(DOMElement* aParent, const vector<DOMElement*>& aChildren);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
    // START -- Support for file checksum and comments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   302
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
    * Calculate file CRC.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
    * @param aFilename file to calculate
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
    * @param aCrcResult CRC value calculated
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
    */    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
    void getFileCRC( const char* aFilename, char* aCrcResult );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
    * Get issue CRC
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
    * @param aIssueIdsVector vector of issue ids
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
    * @param aCrcResult calculated CRC
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
	void getIssuesCRC( const vector<string>& aIssueIdsVector, char* aCrcResult );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
    // END   -- Support for file checksum and comments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
    //! output file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
    string          iOutputFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
    //! output file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
    string          iXSLFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
    //! output file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
    string          iDTDFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
    //! Baseline version name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
    string          iBaselineVersion;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
    //! //! Baseline version name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
    string          iCurrentVersion;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
    //! Embed style sheet or not
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
    bool            iEmbedXSL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
    //! Embed style Document Type Definition or not
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
    bool            iEmbedDTD;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
    //! The whole XML document
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument*    iDOMDocument;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
    //! Root node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
    XERCES_CPP_NAMESPACE_QUALIFIER DOMElement*     iDOMRoot;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
    //! Commandline parameters to Header analyser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
    map<string,string> iParams;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
    // START -- Support for file checksum and comments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
    //! Table of CRC values
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
    unsigned long*	iCrcTable;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
    // END   -- Support for file checksum and comments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
    // Struct to compare issue pointers 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
    struct compareReportIssuePointers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
	bool operator()(const ReportIssue * s1,const ReportIssue * s2) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
		return (*s1) < (*s2);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
		};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
	};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
    //! 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
	typedef map<const ReportIssue*,ReportIssue*,compareReportIssuePointers> issueVector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
    //! Entry to add to issue map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
    typedef pair<string, issueVector*>  issueEntry;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
    //! Map holding issues
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
    typedef map<string, issueVector*>   issueMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
    //! Iterator for traversing issue map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
    typedef issueMap::iterator          issueMapIterator;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
    //! Map holding issues
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
    issueMap                            iIssueMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
     //! ID of the issue
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
    int iIssueId;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
#endif