apicompatanamdw/compatanalysercmd/headeranalyser/src/Analyser.h
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530 (2010-09-27)
changeset 20 a0eee409ff14
parent 3 ebe3f8f03b59
permissions -rw-r--r--
Updates to CompatibilityAnalyser - The Tool should now work with Symbian^4 - Some minor bug fixes related to Qt headers in the Symbian Platform
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 __ANALYSER_H__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define __ANALYSER_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
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#pragma warning(disable:4786)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
#include <string>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
#include <vector>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
#include <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
#include <list>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
#include <xercesc/dom/DOM.hpp>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
#include "ReportGenerator.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
#include "AnalyserParams.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
#include "PlatformData.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
class CommandLine;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
class CPPParser;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
XERCES_CPP_NAMESPACE_USE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
typedef pair<string,string> stringpair;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
typedef vector<string> stringvector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
typedef map<string,string> stringmap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
typedef stringvector::const_iterator StringVecIterC;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
typedef stringmap::const_iterator StringMapIterC;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
typedef stringvector::iterator StringVecIter;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
typedef stringmap::iterator StringMapIter;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
typedef pair<Header*, Header*> HeaderPair;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
typedef vector<HeaderPair> PlatformHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
 * LessStringPair
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
 * This function returns true if the stringpair lhs is less than the rhs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
inline bool LessStringPair( const stringpair& lhs, const stringpair& rhs )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
    if( lhs.first == rhs.first )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
        return lhs.second < rhs.second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
    return lhs.first < rhs.first;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
template<class TYPE> struct RemoveTrailingDirSeparator : public unary_function<TYPE, void>{} ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
 * RemoveTrailingDirSeparator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
 * Template function which removes the trailing dir separator from the filename.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
template<> struct RemoveTrailingDirSeparator<stringpair> : public unary_function<stringpair, void>
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 operator() (stringpair& x) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
    {        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
        if( x.first.at(0) == DIR_SEPARATOR )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
            x.first.erase(0,1);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
        }        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
        if( x.second.at(0) == DIR_SEPARATOR )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
            x.second.erase(0,1);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
struct StructMember
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
	string elementName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
	string elementType;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
	string elementValue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
	int lineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
struct StructElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
	string structName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
	vector<StructMember>members; // pair<memType,memNeme>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
	int lineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
struct EnumMember
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
	string enumMemName; // mem name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
	string enumVal; // memvalue
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
	int lineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
struct EnumElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
	string enumName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
	vector<EnumMember> enums;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
	int lineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
struct MacroElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
	string macroName; // pair<macro name , macro value>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
	string macroVal;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
	int lineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
struct ResourceContent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
	string RHFileName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
	vector<StructElement> structList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
	vector<EnumElement> enumList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
	vector<MacroElement> macroList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
* The parameters given to Headeranalyser are stored in in this class.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
* Analyser class also coordinates the operation of other components and 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
* handles the environment variables handling.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
class Analyser 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    * @param args Pointer to commanline arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    * @param argc Argument count
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    Analyser(char** args, int argc);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
    Analyser();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
    * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
    ~Analyser();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
    * Does the actual analyse of headers and creates a analysis report.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
    * @return Error code, return code 0 means no error.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
    int analyse();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
    * Check files in dir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
    * @param baselineFile Baseline platform's file to be analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
    * @param currentFile Current platform's file to be analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
    * @param reportfile The name of the report file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    * @return Error code, return code 0 means no error.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
    //int analyse(string baselineFile, string currentFile, string reportfile);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
    * Starts analysing the headers by passing the parsed trees to analyser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
    * components.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
    * @param baseline Pointer to the root of the tree parsed from the baseline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    * platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    * @param current Pointer to the root of the tree parsed from the current
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
    * platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
    * @param files Headerfiles to be analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
    * @param report Reference to a <code>ReportGenerator</code> object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
    * @return Error code, return code 0 means no error.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    int analyseTrees(DOMNode* baseline, DOMNode* current, const list< pair<string,string> >& files, ReportGenerator & report);
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
    * Analyse bundle of files.  Bundle size is between 1- 9999.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
    * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
    * @param basefilenames  Bundle of filenames in baseline platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
    * @param curfilenames Bundle of filenames in current platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
    * @param report Reference to <code>ReportGenerator</code>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
    * @param issues Number of issues found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
    * @return Returns true, if the analysis was successful and no
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
    * exceptions were caught.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
    bool AnalyseBundle( const stringvector& basefilenames, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
                        const stringvector& curfilenames, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
                        ReportGenerator& report, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
                        int& issues, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
                        CPPParser* baseParser = 0,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
                        CPPParser* currParser = 0,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
                        stringvector* basecompileset = 0,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
                        stringvector* currcompileset = 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
    // base type
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    enum basetype { 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
        EBase=0, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
        ECurrent 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
    };
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
	* guard exists. checks for existence of "include" guards in the set of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
	* @param aFiles, set of files to be evaluated
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
	* @param aGuard, include guard returned for aFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
	* @return boolean value indicating existence of "include" guards
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
	*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
	bool guardExists(const string& aFile, string& aGuard);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
	* Validate Headers. validates headers for automatic include guard inclusion
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
	* this scans both the pairs of headers passed as arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
	* it creates a seperate headers pair list of those that do not have include guards.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
	* @param aFiles, set of files to be evaluated
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
	* @param aUnsuccessful, set of files without include guards
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
	*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
	void validateHeaders(vector<pair<string, string> >& aFiles, vector<pair<string, string> >& aUnsuccessful);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
    * Read parameters. readParameters should be called so that first is called 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
    * baseline command  and after that current command, otherwise it
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
    * doesn't work.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
    * @param type Platform type, either baseline or current.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
    * @param files List of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
    * @param forcedheaders List of forced headers given in commandline arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
    void readParameters(basetype type, list<pair<string,string> >& files, string& forcedheaders);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
    * Finds a replacement for a given baseline header if any. Tries to find an
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
    * entry for the given <code>aFile</code> and returns an <code>std::pair</code>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
    * containing original (baseline) filename and the replacing filename.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
    * @param aFile String pair containing filename to be checked.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
    * @param aReplaceMap Map containing the files to be replaced with the replacing ones.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
    * @param aCurrentFiles List of the current platforms headerfiles.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
    * @return Pair containing the baseline header's name as a first string and the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
    * replacing name as a second string.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
    pair<string, string> processFileReplaces(pair<string, string>& aFile, const stringmap& aReplaceMap, list<pair<string, string> >& aCurrentFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
    * Explodes the replace list (a string) into a map.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
    * String syntax is: 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
    *     original filename>replacement file;original filename>replacement;...
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
    * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
    * Original filename must refer to the baseline file that has been
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
    * replaced with replacement file in the current version; original
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
    * filename must not contain a path, just the simple filename.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
    * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
    * Replacement filename must contain the full path of the current
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
    * version file that replaces the baseline file (original filename).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
    * @param aReplaceList Value of a commandline argument containing the file replacements.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
    * @param aReplaceMap Reference to the map in which the headerfile pairs are populated.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
    void createReplaceMap(const string& aReplaceList, stringmap& aReplaceMap);
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
    * Checks file differencies
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
    * @param aFiles Files to check
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
    * @param aMismatches Mismatches found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
    void fileDiffs(vector<pair<string, string> >& aFiles, list<string>& aMismatches);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
    * Gets filename without path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
    * @param aFilename Original filename (with or without the path).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
    * @return Plain filename with the path stripped off.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
    string getFilenameWithoutDir(const string& aFilename);
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
    * Validates and processes given commandline parameters.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
    * @return 0, if processing succeeds. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
    int processParameters();
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
    * Tests if the file is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
    * @param map Map of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
    //void testFileAvailability(stringmap map);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
    * Merges baseline and current files into one vector.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
    * @param aBasefiles    List of baseline files.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
    * @param aCurrentfiles List of current files.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
    * @param aReplaceList Value of a commandline argument containing the file replacements.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
    * @param aMatches Vector in which the matching files are returned.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
    void MergeFiles(const list<pair<string, string> >& aBasefiles, list<pair<string, string> >& aCurrentfiles,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
                    const string& aReplaceList, vector<pair<string, string> >& aMatches);
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
    * Check files in dir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
    * @param allfiles list of files to check
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
    * @param sets 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
    * @return list pair of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
    void diffs( const list<pair<string, string> >& allfiles, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
                const list<pair<string, string> >& sets,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
                list<pair<string, string> >& result);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
    * Get the actual name of a file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
    * @param sets 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
    * @return list pair of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
    list<stringpair > canonicalizeFilename(list<pair<string,string> >& sets);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
    * Check and fix bundlesize parameter value
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
    * Show warnig, if the value is over warning level.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
    * @return bundlesize
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
    int handleBundlesizeParam();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
    * Get replace parameter
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
    * @return string of replace files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
    string getReplaceParam();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
	 /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
    * To Initailze iBasePlatformData and iProductPlatformData 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
    * and set all the headers' status  provided for analyse to 'HDR_STATUS_TO_BE_ANALYZED'.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
    void InitializePlatforms(PlatformHeaders& pfHeaders, vector<pair<string, string> >& headers, vector<pair<string, string> >& excludeheaders, vector<pair<string, string> >& resourcevector);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
	* To analyse all the provided headers with system include paths and additional dependent headers.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
	*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
    void AnalyzePlatforms(PlatformHeaders& pfHeaders, PlatformHeaders& unsuccessfulHeaders, ReportGenerator& report, int& issues, bool createThread);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
	* To analyse header with default parameters.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
	*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
    void AnalyseHeaders(const vector<pair<string, string> >& headerList, int bundlesize, ReportGenerator& report, int& issues, int& compErrors);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
    * Wrapper function to analyse all files in a component in separate thread
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
    * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
    * @param report Reference to <code>ReportGenerator</code>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
    * @param issues Number of issues found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
    * @param baseParser CPPParser object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
    * @param currParser CPPParser object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
    * @param pfHeaders Reference to PlatformHeaders
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
    * @param unsuccessfulHdrs Reference to unsuccessful PlatformHeaders
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
    void Analyser::Wrapper( ReportGenerator& report,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
                            int& issues,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
                            CPPParser baseParser,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
                            CPPParser currParser,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
                            PlatformHeaders& pfHeaders,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
                            PlatformHeaders& unsuccessfulHdrs
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
                           );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
                           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
		/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
    * Wrapper function to analyse group of files in a component individually in different thread
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
    * @param filenames Vector of filenames to be analysed individually
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
    * @param pfHeaders Reference to PlatformHeaders
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
    * @param unsuccessfulHdrs Reference to unsuccessful PlatformHeaders 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
    * @param report Reference to <code>ReportGenerator</code>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
    * @param issues Number of issues found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
    void Analyser::Wrapper2(stringvector filenames, PlatformHeaders& pfHeaders, PlatformHeaders& unsuccessfulHeaders, ReportGenerator& report, int& issues);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
	* To analysis of .rh file, using text parser.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
	* resourcevector - list of baseline and current .rh pair
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
	* icludes- any included file other than .rh will be returned
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
	* report - Report pointer to fill issues in report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
	*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
	void ParseAndCompareResourceFiles(vector<pair< string, string> >& resourcevector, ReportGenerator& report);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
	* Get list of enums, structs and macros in ResourceContent, present in one .rh file,  using text parser.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
	* includes -  returns list of .rh files included in current analyzed .rh file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
	*/	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
	void getElementListFromRHFile(std::ifstream& RHFile,ResourceContent& resource, vector<string>& includes );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
	* Comapre baseline and current resources filled in ResourceContent data stucture.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
	* report - Report pointer to fill issues in report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
	*/		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
	void compareResources(ResourceContent& baseResource, ResourceContent& curResource, ReportGenerator& report);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
    //! Pointer to Commandline object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
    CommandLine*                 iCmdLine;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
    //! Pointer to CPPParser object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
    CPPParser*                   iCPPParser;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
    //! count of analysed files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
    int                          iAnalysedFileCount;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   408
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   409
    //! true if the header set is given with SET parameter
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   410
    bool                         iHeaderSetInUse;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   411
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   412
    //! count of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   413
    list<pair<string, string> > iFiles;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
    //! count of files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
    list<pair<string, string> > iFiles2;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   418
    //! String containing forced baseline file names
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   419
    string                      iForcedBaselineHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   420
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   421
    //! String containing forced current file names
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
    string                      iForcedCurrentHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
    //! Parameter to analyser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
    AnalyserParams              iParams;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
    //! Reference to  ReportGenerator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
    ReportGenerator             iReport;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
    //! List of not removed files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
    list<string>                iNotRemovedFiles;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
    //! Files with macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
    list<string>				iMacroFiles;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
    //! Name of the macrofile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
    string						iCompErrTxt;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   439
	//! Resource File Already Anaylyzed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   440
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   441
	vector<pair<string, string> >   iRHFile_Analyzed;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
    //! Pointer Variable to store base platform data
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
    PlatformData* iBasePlatformData;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
    //! Pointer Variable to store product platform data
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
    PlatformData* iProductPlatformData;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
    //! Flag to check base platformdata's existence
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   451
    bool iUseBaselinePlatformData;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   452
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   453
    //! Flag to check product platformdata's existence
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
    bool iUseCurrentPlatformData;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
    //! Flag set to be true,if 2nd time analyze with single header required
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
    bool iOnlySystemIncludeRequired;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
    //! Headers to be analyzed in baseline platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
    stringvector iBaseFilenames; 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
    //! Headers to be analyzed in product platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
    stringvector iCurrFilenames; 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
    //! Files without include guards need to be compiled individually
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
    PlatformHeaders iInvalidFiles; 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
    //! Additional headers needed to compile baseline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   469
    stringvector iBaseIncludes;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   470
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   471
    //! Additional headers needed to compile product
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
    stringvector iCurrIncludes;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   474
	//! False by default. If mentioned then use thread. Set the bool to true.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   475
	bool iUseThread;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   476
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   477
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   478
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   479
#endif