apicompatanamdw/compatanalysercmd/headeranalyser/src/HANodeIterator.h
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 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 _HANODEITERATOR_H_
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define _HANODEITERATOR_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 <assert.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
#include <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
#include <list>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
#include <xercesc/dom/DOM.hpp>
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 "ReportGenerator.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
#include "Issues.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
#include "NodeIndex.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
XERCES_CPP_NAMESPACE_USE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
* The BBCAnalyser utilizes the HANodeIterator for easy access to a GCCXML 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
* generated XML document. The HANodeIterator provides methods for an 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
* indexed access to the XML nodes with a node ID and a fully qualified 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
* name. The issues are also reported through the HANodeIterator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
class HANodeIterator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
    * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
    * @param aRootnode root DOM node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
    * @param aNodemap referencce to NodeIndex
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
    * @param aReport reference to ReportGenerator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
    * @param aFilesToAnalyse list of files to analyse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
    * @param aBaselineNode true if currently handling baseline node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
    HANodeIterator(DOMNode * aRootnode, NodeIndex & aNodemap, ReportGenerator & aReport,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
        const list< pair<string,string> >& aFilesToAnalyse, bool aBaselineNode );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
    * Returns node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
    * @return pointer to DOMNode
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
    DOMNode* operator->() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
    * Finds node from the XML tree by the attribute "id"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
    * @param nodeId ID of the searchable node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
    * @return true if the node is found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
    bool FindNodeById(const XMLCh * nodeId);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    * Finds node from the XML tree by the fully qualified name (C++) of it 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
    * @param nodeName name the searchable node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    * @return true if the node is found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
    bool FindNodeByName(pair<const XMLCh *,const XMLCh *> nodeName);
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
    * Gets the fully qualified name of this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
    * @return fully qualified name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
    pair<const XMLCh *,const XMLCh *> GetFullyQualifiedName();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
    * Adds this node in the index    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
    void IndexNode();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    * Adds this file node to the file index
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    * @param filetoanalyse file to be anylysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
    void IndexFileNode(bool filetoanalyse);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
    * Generates fully qualified name for this node and adds it to index
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
    * if parameter index is true
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
    * @param index when this is true the node is added to index 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
    void NameNode(bool index = false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
    * Gets the attribute of this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
    * @param attribute attribute to get
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
    * @return attribute value or NULL
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
    */    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
    const XMLCh* GetAttribute(const char* attribute) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
    * Gets the attribute of this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
    * @param attribute attribute to get
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
    * @return attribute value or NULL
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
    */    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
    const XMLCh* GetAttribute(const XMLCh* attribute) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
    * Checks if the attribute that can have values 0 or 1 has value 1 (true)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
    * or 0 (false). If the attribute is missing return false.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
    * @param attribute attribute to search for
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
    * @return true if attribute is found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
    bool CheckForBooleanAttribute(const XMLCh* attribute) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
    * Checks if the attribute that can have values 0 or 1 has value 1 (true)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
    * or 0 (false). If the attribute is missing return false.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
    * @param attribute attribute to search for
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    * @return true if attribute is found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    bool CheckForBooleanAttribute(const char* attribute) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    * Set value to this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    * @param attribute attribute to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
    * @param value attribute value to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    void SetAttribute(const char* attribute, const char* value);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
    * Set value to this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
    * @param attribute attribute to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
    * @param value attribute value to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    void SetAttribute(const XMLCh* attribute, const XMLCh* value);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
    * Set value to this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
    * @param attribute attribute to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
    * @param value attribute value to set
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 SetAttribute(const char* attribute, const XMLCh* value);
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
    * Set value to this node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
    *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    * @param attribute attribute to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
    * @param value attribute value to set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
	void SetAttribute(const XMLCh* attribute, const char* value);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
    * Get elements by tagname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
    * @param tag tagname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    * @return pointer to DOMNodeList
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
    DOMNodeList* GetElementsByTagName(const char* tag) const;
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
    * Get elements by tagname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    * @param tag tagname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    * @return pointer to DOMNodeList
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
    DOMNodeList* GetElementsByTagName(const XMLCh* tag) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   183
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
    * 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
   186
    * @param aIdentityId  identity= Class, ExportedFunction, Enumeration, etc.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
    * @param aTypeId  what was happened ( something was removed, addded, changed..) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
    * @param bcseverity how severe the issue was for binary compatibility
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
    * @param scseverity how severe the issue was for source compatibility
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
    * @param ignoreinfo reason to ignore
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
    * @param fileid ID of the file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
    * @param name filename
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   193
	* @param lineNumber where the issue is
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   194
    * @param issueloc in which file the issue is
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
    */
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   196
    void addIssue(TIssueIdentity aIdentityId, TIssueType aTypeId, TBCSeverity bcseverity, TSCSeverity scseverity, 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   197
		string ignoreinfo, const XMLCh* fileid, const string name, int lineNumber,const string issueloc) const;
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    * Check if this node is in the file that is currently analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
    * @return true if this node is in the file that is currently analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
    bool toBeAnalysed();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
    * Generates ignore information
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
    * @param aIdentityId see above
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
    * @param aTypeId see above
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
    * @return ignore info as string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
    */    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
    string generateIgnoreInformation(const TIssueIdentity& aIdentityId, const TIssueType& aTypeId) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
    * Generates ignore information
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
    * @param other reference to other HANodeIterator object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
    * @return true if the same node type found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    bool IsSameNodeType(const HANodeIterator& other);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
public:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
    //! Does not own
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
    DOMNode *root;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
    //! Does not own
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
    DOMNode *current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
    //! Does not own
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
    NodeIndex &iNodeIndex;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
    //! Reference to ReporGenerator object (Issue report)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
    ReportGenerator &iReport;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
    //! Does not own, files that is analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
    const list< pair<string,string> >& iFilesToAnalyse;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
	//! Is this baseline node?
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    bool iBaselineNode;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
};
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
// A quick fix to disable compiler warnings about CheckAccessibility
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
* Checks if the member memberNode is visible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
* @param memberNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
*/ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
bool CheckAccessibility(HANodeIterator memberNode);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
* Checks if the member memberNode is visible and if the visibility is
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
* through inline function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
* @param memberNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
* @param exposedByInline true if node is exposed by inline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
bool CheckAccessibility(HANodeIterator memberNode, bool & exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
* Checks to see if a member with access "access" is visible from class classNode
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
* through inline function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
* @param classNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
* @param exposedByInline true if node is exposed by inline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
* @param access which kind of access this node has
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
bool CheckAccessibility(HANodeIterator classNode, bool & exposedByInline, TAccess access);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
template<TIssueIdentity Identity,TIssueType IssueType> 
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   276
void AddIssue(const HANodeIterator* self, const HANodeIterator& ignorenode, int lineNumber, const string& aIssueLoc, 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   277
			  const XMLCh* fileid, const DataMember & data)
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
    bool exposedByInline=false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
    CheckAccessibility(*self,exposedByInline,data.iAccess);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
	TBCSeverity sev = BCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
	TSCSeverity scsev = SCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
	string ign = ignoreInfo<Identity,IssueType>(*self,ignorenode);
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   285
	self->addIssue(Identity,IssueType,sev,scsev,ign,fileid, data.iName,lineNumber,aIssueLoc);
0
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
template<TIssueIdentity Identity,TIssueType IssueType> 
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   289
void AddIssue(const HANodeIterator* self, const HANodeIterator& ignorenode, int lineNumber, const string& aIssueLoc, 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   290
			  const XMLCh* fileid=NULL, const string namepostfix="")
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
    bool exposedByInline=false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
    CheckAccessibility(*self,exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
	TBCSeverity sev = BCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
	TSCSeverity scsev = SCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
	string ign = ignoreInfo<Identity,IssueType>(*self,ignorenode);
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   298
	self->addIssue(Identity,IssueType,sev,scsev,ign,fileid, namepostfix,lineNumber,aIssueLoc);
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
#endif