apicompatanamdw/compatanalysercmd/headeranalyser/src/MacroAnalyser.h
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530 (2010-09-27)
changeset 20 a0eee409ff14
parent 0 638b9c697799
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 __MACRO_ANALYSER_H__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define __MACRO_ANALYSER_H__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
#include <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include <string>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
#include <list>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#include "TChange.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#include "CPPParser.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#include "AnalyserParams.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
20
a0eee409ff14 Updates to CompatibilityAnalyser
shrivatsa
parents: 0
diff changeset
    30
#define KEY_VAL_CURRENT "curr_key_val"
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
* The MacroAnalysis class analyses differences between the baseline and 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
* the current version macro definitions and adds issues to 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
* the ReportGenerator.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
class MacroAnalyser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
    * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
    * @param filebase base file to analyse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
    * @param filecurrent current file to analyse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
    * @param basebundle base header bundle used in analyse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
    * @param currentbundle current header bundle used in analyse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
    MacroAnalyser(string filebase, string filecurrent, vector<string> basebundle, vector<string> currentbundle);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
    * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
    ~MacroAnalyser(void);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
    * Do the whole analysing
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
    void Analyse(list<string>& aMacroFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
    * Get removed macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
    * @return map of removed macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
    map<string, TChange<list<pair<string,string> > > >& getRemoved();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
    * Get changed macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
    * @return map of changed macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
    map<string, TChange<map<string, pair<pair<string, string>,string> > > >& getChanged();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
    * Get base duplicates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
    * @return map of duplicates in base headers 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    map<string, vector<pair<string,string> > >& getBaseDuplicates();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
    * Get current duplicates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
    * @return map of duplicates in current headers 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
    map<string, vector<pair<string,string> > >& getCurrentDuplicates();
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
    * Find macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
    * @param aLine line to search
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
    * @return pair of macros found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
    static pair<string,string> FindMacro(string aLine);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
    * Parses macros
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    * @param aFile the file to parse from
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    * @param bundlefiles bundle of headers to parse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    * @param aRemoved pointer to removed items map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
    * @param aAddToRemoved add findings to removed, if true (default=NULL)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
    * @return map of duplicates in current headers (default=false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
    */
20
a0eee409ff14 Updates to CompatibilityAnalyser
shrivatsa
parents: 0
diff changeset
   100
    map<string, list<pair<pair<string, string>,string> > >  parseMacros(ifstream& aFile, vector<string>& bundlefiles, map<string, TChange<list<pair<string,string> > > >* aRemoved = NULL, bool isbaseline = false);
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
    * Find duplicates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
    * @param basefilename baseline filename
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
    * @param currentfilename currentline filename
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
    * @param aBaseline baseline headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
    * @param aCurrent currentline headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
    * @param aRemovedList list of removed items
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
    * @param baselinedup baseline duplicates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
    * @param currentdup current duplicates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
    * @return true if duplicates are found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    bool findDuplicates(const string& basefilename, const string& currentfilename, list<pair<pair<string, string>,string> >& aBaseline, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
		list<pair<pair<string, string>,string> >& aCurrent, TChange<list<pair<string,string> > >& aRemovedList, 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
		map<string, vector<pair<string,string> > >& baselinedup, map<string, vector<pair<string,string> > >& currentdup);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
    //! Base header to check
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
    string iBaseFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
    //! Current header to check
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
    string iCurrentFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
    //! Changed macros list
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
    map<string, TChange<map<string, pair<pair<string, string>,string> > > > iChanged;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
    //! Map of removed items
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    map<string, TChange<list<pair<string,string> > > > iRemoved;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
    //! Base duplicate items
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
    map<string, vector<pair<string,string> > > iBaseDuplicates;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
    //! Current duplicate items
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    map<string, vector<pair<string,string> > > iCurrentDuplicates;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    //! Bundle of base files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    vector<string> iBaseBundle;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    //! Bundle of current files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
    vector<string> iCurrentBundle;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
    //! List of not removed files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    list<string> iNotRemovedFiles;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
    //! Parameter to analyser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
    AnalyserParams iParams;
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
#endif