apicompatanamdw/compatanalysercmd/headeranalyser/src/HANodeIterator.h
author noe\swadi
Tue, 12 Jan 2010 14:52:39 +0530
changeset 0 638b9c697799
child 3 ebe3f8f03b59
permissions -rw-r--r--
1. Licenses updated to EPL. 2. New components test cases added to BC Drivers 3. Some minor fixes and few feature additions to CA.
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
    void addIssue(TIssueIdentity aIdentityId, TIssueType aTypeId, TBCSeverity bcseverity, TSCSeverity scseverity, string ignoreinfo, const XMLCh* fileid, const string name, int lineNumber) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
    * Check if this node is in the file that is currently analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
    * @return true if this node is in the file that is currently analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    bool toBeAnalysed();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
    * Generates ignore information
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
    * @param aIdentityId see above
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    * @param aTypeId see above
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
    * @return ignore info as string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
    */    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
    string generateIgnoreInformation(const TIssueIdentity& aIdentityId, const TIssueType& aTypeId) const;
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
    * Generates ignore information
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
    * @param other reference to other HANodeIterator object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
    * @return true if the same node type found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
    */ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
    bool IsSameNodeType(const HANodeIterator& other);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
public:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    //! Does not own
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
    DOMNode *root;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
    
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 *current;
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
    NodeIndex &iNodeIndex;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
    //! Reference to ReporGenerator object (Issue report)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
    ReportGenerator &iReport;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
    //! Does not own, files that is analysed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
    const list< pair<string,string> >& iFilesToAnalyse;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
	//! Is this baseline node?
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
    bool iBaselineNode;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
// ---------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
// A quick fix to disable compiler warnings about CheckAccessibility
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
* Checks if the member memberNode is visible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
* @param memberNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
*/ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
bool CheckAccessibility(HANodeIterator memberNode);
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
* Checks if the member memberNode is visible and if the visibility is
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
* through inline function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
* @param memberNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
* @param exposedByInline true if node is exposed by inline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
bool CheckAccessibility(HANodeIterator memberNode, bool & exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
* 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
   261
* through inline function
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
* @param classNode the node which accessibilty is determined
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
* @param exposedByInline true if node is exposed by inline
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
* @param access which kind of access this node has
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
* @return true if accessible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
bool CheckAccessibility(HANodeIterator classNode, bool & exposedByInline, TAccess access);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
// ---------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
template<TIssueIdentity Identity,TIssueType IssueType> 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
void AddIssue(const HANodeIterator* self, const HANodeIterator& ignorenode, int lineNumber, const XMLCh* fileid, const DataMember & data)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
    bool exposedByInline=false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
    CheckAccessibility(*self,exposedByInline,data.iAccess);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
	TBCSeverity sev = BCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
	TSCSeverity scsev = SCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
	string ign = ignoreInfo<Identity,IssueType>(*self,ignorenode);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
	self->addIssue(Identity,IssueType,sev,scsev,ign,fileid, data.iName,lineNumber);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
template<TIssueIdentity Identity,TIssueType IssueType> 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
void AddIssue(const HANodeIterator* self, const HANodeIterator& ignorenode, int lineNumber, const XMLCh* fileid=NULL, const string namepostfix="")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
    bool exposedByInline=false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
    CheckAccessibility(*self,exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
	TBCSeverity sev = BCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
	TSCSeverity scsev = SCseverityAccessible<Identity,IssueType>(!exposedByInline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
	string ign = ignoreInfo<Identity,IssueType>(*self,ignorenode);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
	self->addIssue(Identity,IssueType,sev,scsev,ign,fileid, namepostfix,lineNumber);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
#endif