apicompatanamdw/compatanalysercmd/libraryanalyser/src/la_analysis.cpp
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 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) 2007-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:  Functionality of analysis 
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
#include "la.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#include "la_parser.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
#include "xmlprocessor.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include "xmldomainmap.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
#include "xmlsaxparser.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#include "xmlnode.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#include "xmlsaxhandler.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#include "xmlsaxerrorhandler.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
typedef XMLSAXHandler<XMLDomainMap<XMLNode> > DOCHANDLER;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
typedef XMLSAXErrorHandler ERRORHANDLER;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
typedef XMLSAXParser<DOCHANDLER, ERRORHANDLER> PARSER;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
typedef XMLProcessor<PARSER> XMLEngine;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
int XmlTools::initialiseDOM()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
    try
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
        XMLPlatformUtils::Initialize();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
    } catch (const XMLException& e )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
        char* message = _X( e.getMessage() );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
        cout << "Error during initialization! :\n" << message << endl ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
        _XX(message);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
		    return -1;
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
    DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation( _X("Core") );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
    iParser = ((DOMImplementationLS*)impl)->createDOMBuilder( DOMImplementationLS::MODE_SYNCHRONOUS, 0 );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
    if ( iParser->canSetFeature( XMLUni::fgDOMValidation, true ) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
        iParser->setFeature( XMLUni::fgDOMValidation, true );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
    if ( iParser->canSetFeature( XMLUni::fgDOMNamespaces, true ) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
        iParser->setFeature( XMLUni::fgDOMNamespaces, true );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
    if ( iParser->canSetFeature( XMLUni::fgDOMDatatypeNormalization, true ) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
        iParser->setFeature( XMLUni::fgDOMDatatypeNormalization, true );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
    return 0;
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
void XmlTools::uninitialiseDOM()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
    iParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
    XMLPlatformUtils::Terminate();
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
XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XmlTools::readFile( const char* aFilename )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
	XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* doc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
    DOMErrorHandler* myErrorHandler;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
    fstream ifile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
    bool validate = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
    string filedoctype;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    string doctype("<!DOCTYPE");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
    //check if a document type definition is provided for the xml file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
    ifile.open(aFilename);  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
    ifile >> filedoctype ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
    ifile.close();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
    if(doctype.compare(filedoctype) == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
        validate = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
    //if document type definition present,create and set error handler to parser, to report any parse errors in issues document.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
    if(validate)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
        myErrorHandler = new DOMPrintErrorHandler();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
        XmlTools::iParser->setErrorHandler(myErrorHandler);	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    try
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
        doc = iParser->parseURI( aFilename );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
    catch ( const XMLException& e )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
        char* message = _X( e.getMessage() );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
        cout << "Failed to read " << aFilename << ". \"" << message << "\"" << endl ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
        _XX( message );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
        return NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
    catch ( const DOMException& e )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
        char* message = _X( e.getMessage() );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
        cout << "Failed to read " << aFilename << ". \"" << message << "\"" << endl ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
        _XX( message );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
        return NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    catch (...) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
        cout << "Failed to read " << aFilename << ". Unexpected error." << endl ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
    return 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
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
    //delete the error handler, if set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
    if(validate)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
        delete myErrorHandler;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
    return doc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
bool DOMPrintErrorHandler::handleError(const DOMError &domError)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    // Display whatever error message passed from the parser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
        XERCES_STD_QUALIFIER cerr << "\nWarning Message: ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
        XERCES_STD_QUALIFIER cerr << "\nError Message: ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
    else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
        XERCES_STD_QUALIFIER cerr << "\nFatal Message: ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    char *msg = XMLString::transcode(domError.getMessage());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    DOMLocator *errorLocator = domError.getLocation();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    XERCES_STD_QUALIFIER cerr<< errorLocator->getLineNumber() << ",";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    XERCES_STD_QUALIFIER cerr<< errorLocator->getColumnNumber() << ": ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
    XERCES_STD_QUALIFIER cerr<< msg <<XERCES_STD_QUALIFIER endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    XMLString::release(&msg);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    // Instructs the parser to continue parsing if possible.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    return true;
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
DOMElement* XmlTools::getTagNode( const DOMElement* aParentNode, const char* aTagName )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
    DOMNodeList* list = aParentNode->getElementsByTagName( _X( aTagName ) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
    if ( list == NULL || list->getLength() == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
        return NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
        return (DOMElement*) list->item( 0 );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
int XmlTools::getTagValue( const DOMElement* aParentNode, const char* aTagName, char* aTagValue, int minLen, int maxLen )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
    DOMNodeList* list = aParentNode->getElementsByTagName( _X( aTagName ) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
    strcpy( aTagValue, "" );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
    if ( list == NULL || list->getLength() == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
        return -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
    else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
        DOMNode* textNode = list->item( 0 )->getFirstChild();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
        if ( textNode == NULL )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
            return -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
        char* text = _X( textNode->getNodeValue() );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
        if ( text == NULL )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
            return -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
		int len =(int) strlen( text );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
        if ( len < minLen || len > maxLen )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
            return -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
        strcpy( aTagValue, text );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
        _XX( text );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
        return 0;
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
void ParseAndCompareDLLXmlFiles(const string& abaselineXmlFile,const string& acurrentXmlFile)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
	XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* ibaseDoc = NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
	int currIndx = -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
	int baseIndx = -1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
	char dll_name[1024];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
	if ( XmlTools::initialiseDOM() == -1 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
        return ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
	// read report document
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
	ibaseDoc = XmlTools::readFile( abaselineXmlFile.c_str() );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
	if ( ibaseDoc == NULL )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
		XmlTools::uninitialiseDOM();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
		return ;
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
	// Parse file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
	cout << "Gathering dll information... " ;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
	//With SAX parser , parse the base xml doc
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
	// Create an instance of our XMLFactory
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
	XMLEngine baseParser(abaselineXmlFile);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
	// Turn off validation
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
	baseParser.doValidation(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
	baseParser.parse();
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
	//With SAX parser , parse the current xml doc
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
	// Create an instance of our XMLFactory
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
	XMLEngine currParser(acurrentXmlFile);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
	// Turn off validation
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
	currParser.doValidation(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
	// Parse our XML file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
	currParser.parse();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
	cout << "Done" <<endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
	// Get the tree root
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
	XMLNode baseRoot = baseParser.getRootElement();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
	XMLNode curRoot = currParser.getRootElement();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
	int totcurDlls = (int)curRoot.childCount(); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
	int totbaseDlls = (int)baseRoot.childCount();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
	XMLNode dllNorode = curRoot.child("dll",currIndx);	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
	XMLNode baseNode = baseRoot.child("dll",baseIndx);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
	//If baseline dll is missing, report it as informative
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
	for(unsigned int outer = 0; outer < _lib_files_baseline.size(); outer++ )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
		dll_issue tempIssue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
		string finallibname(_lib_files_baseline.at(outer));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
		finallibname=getFilename(finallibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
		unsigned int inner;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
		for(inner = baseIndx; inner < totbaseDlls; inner++ )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
			XMLNode base_dlllist = baseRoot.children_[inner];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
			string base_dllname = base_dlllist.child("dllname").value();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
			base_dllname = getFilename(base_dllname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
			if (StringICmpFileNamesWithoutExtension(finallibname,base_dllname) == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
				break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
		if (inner == totbaseDlls)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
			intializeDllIssue(tempIssue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
			tempIssue.l_dllname = finallibname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
			tempIssue.i_list_typeid.push_back(DLL_BASELINE_MISSING);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
			_dll_issuelist.push_back(tempIssue);			
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
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
    // get dll breaks by comparing baseline and current dll data file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
	if (baseIndx >=0 && currIndx>=0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
		for (unsigned long i = baseIndx; i < totbaseDlls; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
			dll_issue issue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
			XMLNode base_dlllist = baseRoot.children_[i];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
			if ( base_dlllist.childCount() == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
				continue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
			string base_dllname = base_dlllist.child("dllname").value();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
			base_dllname = getFilename(base_dllname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
			int l;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
			//char baseVal[5][255];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
			char attribs[5][12] = { "uid1", "uid2", "uid3", "sid" ,"capability"};			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
			
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
			if (base_dllname.size() > 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
				intializeDllIssue(issue);				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
				issue.l_dllname = base_dllname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
				string baseShortName = getFilename(base_dllname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
				int curIter;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
				
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
				for( curIter = currIndx ; curIter < totcurDlls ; curIter++ )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
				{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
					XMLNode curr_dlllist = curRoot.children_[curIter];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
					
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
					string cur_dllname = curr_dlllist.child("dllname").value();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
					cur_dllname = getFilename(cur_dllname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
					vector<unsigned int> typeId_list;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
									
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
					if(stricmp (baseShortName.c_str(),cur_dllname.c_str()) == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
					{						
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
						for ( l = 0; l < 5; ++ l )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
						{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
							string curVal = curr_dlllist.child(attribs[l]).value();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
							string baseVal = base_dlllist.child(attribs[l]).value();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
							unsigned int typeId = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
							if(l == 4) // capability check
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   302
							{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
								unsigned long baseCap =parseHex(baseVal.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
								unsigned long curCap = parseHex(curVal.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
								unsigned long resultCap = baseCap & curCap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
								if( baseCap != resultCap)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
									typeId_list.push_back(DLL_CAPABILITY_CHANGED);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
							}							
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
							else if( curVal.compare(baseVal)!= 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
							{								
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
								fillDllIssue(attribs[l], typeId);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
								typeId_list.push_back(typeId);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
							}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
						}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
						
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
						if(typeId_list.size()> 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
						{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
							issue.i_list_typeid = typeId_list;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
							_dll_issuelist.push_back(issue);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
						}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
						break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
				}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
				if (curIter == totcurDlls ) // missing dll in current xml file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
				{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
					issue.i_list_typeid.push_back( DLL_CURRENT_MISSING);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
					_dll_issuelist.push_back(issue);	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
				}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
			}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
	}//end of dll list
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
	XmlTools::uninitialiseDOM();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
void WriteReportHeader()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
    _reportf.open(_cl_reportfile.c_str(), ios::trunc);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
    if (!_reportf.is_open())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
			cerr << "ERROR: Cannot open " << _cl_reportfile << " for writing!" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
			cerr << "Please check that the directory exists and there are no write permission problems" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
			exit(EXIT_CANNOT_WRITE_TO_REPORT_FILE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
    WriteXMLLineOpeningTag(_reportf, 0, "?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
    WriteXMLLineOpeningTag(_reportf, 0, "?xml-stylesheet type=\"text/xsl\" href=\"BBCResults.xsl\"?");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
    WriteXMLLineOpeningTag(_reportf, 0, "bbcresults");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
    WriteXMLLineOpeningTag(_reportf, 1, "header");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
    WriteXMLLineOpenClosed(_reportf, 2, "baselineversion", _cl_baselineversion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
    WriteXMLLineOpenClosed(_reportf, 2, "currentversion", _cl_currentversion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
    WriteXMLLineOpeningTag(_reportf, 2, "timestamp");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
    WriteXMLLineOpenClosed(_reportf, 3, "day", Int2Str(_timenow->tm_mday));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
    WriteXMLLineOpenClosed(_reportf, 3, "month", Int2Str(_timenow->tm_mon + 1));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
    WriteXMLLineOpenClosed(_reportf, 3, "year", Int2Str(1900 + _timenow->tm_year));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
    WriteXMLLineOpenClosed(_reportf, 3, "hour", Int2Str(_timenow->tm_hour));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
    WriteXMLLineOpenClosed(_reportf, 3, "minute", Int2Str(_timenow->tm_min));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
    WriteXMLLineOpenClosed(_reportf, 3, "second", Int2Str(_timenow->tm_sec));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
    WriteXMLLineClosingTag(_reportf, 2, "timestamp");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
    WriteXMLLineOpenClosed(_reportf, 2, "laversion", LA_VERSION);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
    WriteXMLLineOpenClosed(_reportf, 2, "formatversion", LA_REPORT_FORMAT_VERSION);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
    WriteXMLLineOpeningTag(_reportf, 2, "cmdlineparms");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "toolchain");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _toolchain_name);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "baselinelibdir");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_baselinelibdir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "currentlibdir");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_currentlibdir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "baselinedlldir");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_baselinedlldir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "currentdlldir");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_currentdlldir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
    if(_cl_baselinedlldir.empty() || _cl_currentdlldir.empty())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
      WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
      WriteXMLLineOpenClosed(_reportf, 4, "pname", "warning");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
      WriteXMLLineOpenClosed(_reportf, 4, "pvalue","Required parameters for checking dll properties not specified. Compatibility Breaks in dll are not checked." );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
      WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "baselineversion");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_baselineversion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   408
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   409
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   410
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "currentversion");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   411
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_currentversion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   412
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   413
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "reportfile");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_reportfile);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   418
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   419
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   420
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "tools");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   421
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_toolsdir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "temp");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_tempdir);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "cfilt");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_cfiltloc);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
    WriteXMLLineOpeningTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
    WriteXMLLineOpenClosed(_reportf, 4, "pname", "set");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
    WriteXMLLineOpenClosed(_reportf, 4, "pvalue", _cl_set);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
    WriteXMLLineClosingTag(_reportf, 3, "parm");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   439
    WriteXMLLineClosingTag(_reportf, 2, "cmdlineparms");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   440
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   441
    WriteXMLLineOpenClosed(_reportf, 2, "knownissuesversion", "");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
    WriteXMLLineClosingTag(_reportf, 1, "header");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
    WriteXMLLineOpeningTag(_reportf, 1, "issuelist");    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
void GenerateAndWriteIssueList()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   451
	int total_files = _lib_files_baseline.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   452
	int current_files = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   453
	cout <<"Total baseline files "<< _lib_files_baseline.size() << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
	cout <<"Total current files "<< _lib_files_current.size() << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
	vector<string>::const_iterator itr;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
	for (unsigned int i=0; i<_lib_files_current.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
		bool exists = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
		// check if the same lib exists in baselinedir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
		for(itr = _lib_dirs_baseline.begin(); itr != _lib_dirs_baseline.end(); itr++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
			if (FileExists(*itr + getFilename(_lib_files_current.at(i))))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
			{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
				exists = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
				break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
			}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   469
		if(!exists)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   470
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   471
			total_files++;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   474
	cout <<"Total files to be processed "<< total_files << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   475
	//vector<dll_issue> dll_issuelist;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   476
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   477
	dll_issue reportdll;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   478
	string dllname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   479
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   480
	if(_baselinedllfile.size() > 0 && _currentdllfile.size() > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   481
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   482
		ParseAndCompareDLLXmlFiles(_baselinedllfile,_currentdllfile );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   483
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   484
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   485
	unsigned int dllIssueCount = _dll_issuelist.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   486
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   487
    // first go through all libs in the baseline set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   488
	for (unsigned int i=0; i<_lib_files_baseline.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   489
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   490
		unsigned int k;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   491
		vector<string>::iterator itr = _lib_files_current.end();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   492
		bool exists = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   493
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   494
		//check if the same dll is present in exe_issue, if yes then add it to final report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   495
		intializeDllIssue(reportdll);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   496
		for(unsigned int indx = 0; indx < dllIssueCount; indx++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   497
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   498
			dll_issue lIssue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   499
			lIssue = _dll_issuelist.at(indx);		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   500
			if(StringICmpFileNamesWithoutExtension(getFilename(lIssue.l_dllname),getFilename(_lib_files_baseline.at(i))) == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   501
			{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   502
				reportdll = lIssue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   503
				break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   504
			}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   505
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   506
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   507
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   508
        // check if the same lib exists in currentdir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   509
        for(k = 0; k < _lib_dirs_current.size(); k++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   510
		    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   511
			      string file = _lib_dirs_current.at(k) + getFilename(_lib_files_baseline.at(i));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   512
			      if (FileExists( file ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   513
			      {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   514
			          for(itr=_lib_files_current.begin() ; itr != _lib_files_current.end() ; ++itr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   515
			          {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   516
			              if(StringICmp(file,*itr)== 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   517
			              {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   518
			                  exists = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   519
			                  break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   520
			              }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   521
			          }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   522
			          if(exists)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   523
			              break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   524
			      }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   525
			  }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   526
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   527
        // check if the same lib exists in currentdir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   528
        if (!exists)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   529
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   530
        	  cout.precision(0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   531
            cout << "\nAnalysing files (" << current_files+1 << "/" << total_files << "): " << _lib_files_baseline.at(i) << endl;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   532
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   533
			WriteXMLIssueOnlyInBaselineDir(_reportf, _lib_files_baseline.at(i),reportdll);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   534
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   535
        else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   536
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   537
            cout.precision(0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   538
            cout << "\nAnalysing files (" << current_files+1 << "/" << total_files << "): " << _lib_files_baseline.at(i) << " => " << *itr << endl;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   539
            // both files are available, now get the symbol table and do the comparision process
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   540
            vector<string> symbol_table_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   541
            vector<string> symbol_table_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   542
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   543
            // get the symbol tables of the libraries
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   544
            if (_cl_use_gcc)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   545
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   546
                GetSymbolTableWithNM(_gcc_nm_location, _lib_files_baseline.at(i), symbol_table_baseline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   547
                GetSymbolTableWithNM(_gcc_nm_location, *itr /*_lib_files_current.at(i)*/, symbol_table_current);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   548
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   549
            else if (_cl_use_gcce)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   550
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   551
                if (_cl_use_libs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   552
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   553
                    GetSymbolTableWithNM(_gcce_nm_location, _lib_files_baseline.at(i), symbol_table_baseline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   554
                    GetSymbolTableWithNM(_gcce_nm_location, *itr /*_lib_files_current.at(i)*/, symbol_table_current);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   555
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   556
                else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   557
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   558
                    GetSymbolTableWithReadelf(_gcce_readelf_location, _gcce_cfilt_location, _lib_files_baseline.at(i), symbol_table_baseline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   559
                    GetSymbolTableWithReadelf(_gcce_readelf_location, _gcce_cfilt_location, *itr /*_lib_files_current.at(i)*/, symbol_table_current);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   560
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   561
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   562
            else if (_cl_use_rvct)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   563
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   564
                if (_cl_use_libs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   565
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   566
                    GetSymbolTableWithArmar(_rvct_armar_location, _rvct_cfilt_location, _lib_files_baseline.at(i), symbol_table_baseline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   567
                    GetSymbolTableWithArmar(_rvct_armar_location, _rvct_cfilt_location, *itr /*_lib_files_current.at(i)*/, symbol_table_current);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   568
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   569
                else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   570
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   571
                    GetSymbolTableWithFromelf(_rvct_fromelf_location, _rvct_cfilt_location, _lib_files_baseline.at(i), symbol_table_baseline);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   572
                    GetSymbolTableWithFromelf(_rvct_fromelf_location, _rvct_cfilt_location, *itr /*_lib_files_current.at(i)*/, symbol_table_current);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   573
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   574
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   575
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   576
            // create a vector to store all issues of this library
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   577
            vector<issue> issue_list;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   578
			//Local variable to store severity of the issue
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   579
			TypeOfSeverity severity = NO_BREAK;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   580
            // create and init vectors to store ordinal state
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   581
            vector<bool> matched_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   582
            vector<bool> checked_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   583
            vector<bool> matched_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   584
            vector<bool> checked_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   585
			vector<TypeOfSeverity> map_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   586
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   587
            for (unsigned int j=0; j<symbol_table_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   588
                matched_baseline.push_back(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   589
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   590
            for (unsigned int j=0; j<symbol_table_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   591
                checked_baseline.push_back(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   592
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   593
            for (unsigned int j=0; j<symbol_table_current.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   594
                matched_current.push_back(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   595
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   596
            for (unsigned int j=0; j<symbol_table_current.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   597
                checked_current.push_back(false);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   598
			//Initially set to NO_BREAK as the type of severity
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   599
            for (unsigned int j=0; j<symbol_table_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   600
                map_severity.push_back(NO_BREAK);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   601
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   602
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   603
            // first loop through all ordinals in baseline to find matches
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   604
            for (unsigned int j=0; j<symbol_table_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   605
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   606
                bool need_to_check_moving = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   607
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   608
                if (j < symbol_table_current.size())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   609
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   610
                    // check if it's an exact match or otherwise binary compatible
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   611
                    if ( symbol_table_baseline.at(j) == symbol_table_current.at(j) ||
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   612
                        (severity = AreFunctionsCompatible(symbol_table_baseline.at(j), symbol_table_current.at(j)))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   613
						 == NO_BREAK )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   614
                    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   615
                        // match!
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   616
                        matched_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   617
                        matched_current.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   618
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   619
                        checked_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   620
                        checked_current.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   621
                    }                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   622
                    else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   623
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   624
						// possibly moved
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   625
						need_to_check_moving = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   626
						//store the severity
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   627
						map_severity.at(j) = severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   628
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   629
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   630
                else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   631
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   632
                    // it's out of range, so it can be a match, but check if it has moved
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   633
                    need_to_check_moving = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   634
                }   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   635
                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   636
                // now do the actual checking if it has moved
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   637
                if (need_to_check_moving)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   638
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   639
                    for (unsigned int l=0; l<symbol_table_current.size(); l++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   640
                    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   641
                        if (symbol_table_baseline.at(j) == symbol_table_current.at(l))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   642
                        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   643
							// match found, mark as moved
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   644
							map_severity.at(j) = CONFIRMED_BC_BREAK;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   645
                            AppendToIssueListCaseMoved(issue_list, symbol_table_baseline.at(j), j+1, l+1,map_severity.at(j));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   646
                            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   647
                            matched_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   648
                            matched_current.at(l) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   649
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   650
                            checked_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   651
                            checked_current.at(l) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   652
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   653
                        } // if
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   654
                    } // for           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   655
                } // if (need_to_check_moving)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   656
            } // for (int j=0; j<symbol_table_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   657
           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   658
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   659
            // check for removed ordinals when no corresponding ordinals in current
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   660
            if (checked_baseline.size() > checked_current.size())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   661
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   662
                for (unsigned int j=checked_current.size(); j<checked_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   663
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   664
                    if (checked_baseline.at(j) == false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   665
                    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   666
                        // ignore any absent exports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   667
                        string::size_type loc = symbol_table_baseline.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   668
                        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   669
                        // mark as removed if not marked as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   670
                        if( loc == string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   671
						{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   672
							// As removed results in both BC and SC break.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   673
							map_severity.at(j) = CONFIRMED_BC_AND_SC_BREAK;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   674
                            AppendToIssueListCaseRemoved(issue_list, symbol_table_baseline.at(j), j+1,map_severity.at(j));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   675
						}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   676
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   677
                        checked_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   678
                    }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   679
                }          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   680
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   681
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   682
            // check for added ordinals when no corresponding ordinals in current
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   683
            if (checked_baseline.size() < checked_current.size())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   684
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   685
                for (unsigned int j=checked_baseline.size(); j<checked_current.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   686
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   687
                    if (checked_current.at(j) == false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   688
                    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   689
                    // ignore any absent exports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   690
                    string::size_type loc = symbol_table_current.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   691
                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   692
                    // mark as added if not marked as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   693
                    if( loc == string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   694
                        AppendToIssueListCaseAdded(issue_list, symbol_table_current.at(j), j+1,BC_INFORMATIVE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   695
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   696
                    checked_current.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   697
                    }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   698
                }          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   699
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   700
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   701
            // check for removed cases when current has a match at the same ordinal
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   702
            for (unsigned int j=0; j<checked_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   703
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   704
                if (checked_baseline.at(j) == false && matched_current.at(j) == true)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   705
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   706
                    // ignore any absent exports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   707
                    string::size_type loc = symbol_table_baseline.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   708
                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   709
                    // mark as removed if not marked as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   710
                    if( loc == string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   711
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   712
						// As removed results in both BC and SC break.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   713
						map_severity.at(j) = CONFIRMED_BC_AND_SC_BREAK;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   714
						AppendToIssueListCaseRemoved(issue_list, symbol_table_baseline.at(j), j+1,map_severity.at(j));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   715
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   716
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   717
                    checked_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   718
                }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   719
            }             
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   720
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   721
            // check for inserted cases
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   722
            for (unsigned int j=0; j<checked_current.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   723
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   724
                if (checked_current.at(j) == false && matched_baseline.at(j) == true)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   725
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   726
                    // ignore any absent exports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   727
                    string::size_type loc = symbol_table_current.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   728
                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   729
                    // mark as inserted if not marked as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   730
                    if( loc == string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   731
                        AppendToIssueListCaseInserted(issue_list, symbol_table_current.at(j), j+1,CONFIRMED_BC_BREAK);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   732
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   733
                    checked_current.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   734
                }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   735
            }  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   736
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   737
            // check for modified cases
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   738
            for (unsigned int j=0; j<checked_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   739
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   740
                if (checked_baseline.at(j) == false && checked_current.at(j) == false && matched_current.at(j) == false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   741
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   742
                    // ignore any absent exports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   743
                    string::size_type loc = symbol_table_baseline.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   744
                    string::size_type loc2 = symbol_table_current.at(j).find("_._.absent_export", 0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   745
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   746
                    // mark as modfied if not marked as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   747
                    if( loc == string::npos && loc2 == string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   748
                        AppendToIssueListCaseModified(issue_list, symbol_table_baseline.at(j), symbol_table_current.at(j), j+1,map_severity.at(j));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   749
                    // mark as added if absent export has been modified to something else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   750
                    else if (loc != string::npos && loc2 == string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   751
                        AppendToIssueListCaseAdded(issue_list, symbol_table_current.at(j), j+1,BC_INFORMATIVE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   752
                    // mark as removed if export has been modified as absent
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   753
                    else if (loc == string::npos && loc2 != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   754
                        AppendToIssueListCaseRemoved(issue_list, symbol_table_baseline.at(j), j+1,CONFIRMED_BC_AND_SC_BREAK);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   755
                        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   756
                    checked_baseline.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   757
                    checked_current.at(j) = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   758
                }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   759
            }   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   760
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   761
            // do some error checking :)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   762
            for (unsigned int j=0; j<checked_baseline.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   763
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   764
                if (checked_baseline.at(j) == false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   765
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   766
                    cout << "OC ALGORITHM ERROR: Baseline func " << symbol_table_baseline.at(j) << " not checked!" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   767
                }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   768
            } 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   769
            for (unsigned int j=0; j<checked_current.size(); j++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   770
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   771
                if (checked_current.at(j) == false)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   772
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   773
                    cout << "OC ALGORITHM ERROR: Current rel func " << symbol_table_current.at(j) << " not checked!" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   774
                }         
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   775
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   776
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   777
            // sort the issue list
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   778
            sort(issue_list.begin(), issue_list.end(), IssueCompare);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   779
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   780
            // finally write the issue_list to the xml file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   781
			WriteIssueListToXML(_reportf, _lib_files_baseline.at(i), *itr /*_lib_files_current.at(i)*/,  issue_list, reportdll);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   782
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   783
        } // else of (!FileExists(_cl_currentlibdir + _lib_files_baseline.at(i)))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   784
        //erase analysed file from vector, so that files with duplicate names will be properly analysed.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   785
        if( _lib_files_current.end() != itr )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   786
            _lib_files_current.erase(itr);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   787
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   788
        current_files++;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   789
	} // for (unsigned int i=0; i<_lib_files_baseline.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   790
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   791
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   792
    // finally go through all libs in the currentdir set
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   793
	for (unsigned int i=0; i<_lib_files_current.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   794
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   795
		bool exists = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   796
		vector<string>::const_iterator itr = _lib_dirs_baseline.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   797
        // check if the same lib exists in baselinedir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   798
		for(;itr != _lib_dirs_baseline.end(); itr++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   799
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   800
			if (FileExists(*itr + getFilename( _lib_files_current.at(i)) ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   801
			{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   802
				exists = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   803
				break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   804
			}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   805
		}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   806
		if(!exists)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   807
		{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   808
             current_files++;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   809
             cout.precision(0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   810
             cout << "\nAnalysing files (" << current_files << "/" << total_files << "): " << _lib_files_current.at(i) << endl;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   811
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   812
             // only in currentdir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   813
             WriteXMLIssueOnlyInCurrentDir(_reportf, _lib_files_current.at(i));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   814
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   815
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   816
	cout << "\n---------------------------------------------";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   817
	cout << "\nFinished";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   818
	cout << "\nTotal Files analysed : " << total_files;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   819
	cout << "\n---------------------------------------------";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   820
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   821
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   822
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   823
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   824
void WriteReportFooter()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   825
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   826
    // generate the footer of XML file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   827
    WriteXMLLineClosingTag(_reportf, 1, "issuelist");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   828
    WriteXMLLineClosingTag(_reportf, 0, "bbcresults");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   829
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   830
    // close writing to the report file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   831
    _reportf.close();    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   832
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   833
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   834
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   835
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   836
void AppendToIssueListCaseMoved(vector<issue>& issueList, const string& funcname, int funcpos, int newfuncpos,TypeOfSeverity severity)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   837
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   838
	issue i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   839
	string bc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   840
	string sc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   841
	getSeverityString(severity,bc_severity,sc_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   842
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   843
	i.i_typeid = ISSUE_MOVED;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   844
	i.i_funcname = funcname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   845
	i.i_newfuncname = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   846
	i.i_funcpos = funcpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   847
	i.i_newfuncpos = newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   848
	i.i_BC_severity = bc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   849
	i.i_SC_severity = sc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   850
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   851
    issueList.push_back(i); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   852
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   853
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   854
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   855
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   856
void AppendToIssueListCaseRemoved(vector<issue>& issue_list, const string& funcname, int funcpos,TypeOfSeverity severity)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   857
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   858
	issue i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   859
	string bc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   860
	string sc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   861
	getSeverityString(severity,bc_severity,sc_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   862
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   863
	i.i_typeid = ISSUE_REMOVED;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   864
	i.i_funcname = funcname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   865
	i.i_newfuncname = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   866
	i.i_funcpos = funcpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   867
	i.i_newfuncpos = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   868
	i.i_BC_severity = bc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   869
	i.i_SC_severity = sc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   870
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   871
	issue_list.push_back(i); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   872
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   873
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   874
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   875
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   876
void AppendToIssueListCaseInserted(vector<issue>& issue_list, const string& newfuncname, int newfuncpos,TypeOfSeverity severity)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   877
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   878
	issue i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   879
	string bc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   880
	string sc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   881
	getSeverityString(severity,bc_severity,sc_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   882
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   883
	i.i_typeid = ISSUE_INSERTED;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   884
	i.i_funcname = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   885
	i.i_newfuncname = newfuncname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   886
	i.i_funcpos = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   887
	i.i_newfuncpos = newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   888
	i.i_BC_severity = bc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   889
	i.i_SC_severity = sc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   890
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   891
	issue_list.push_back(i); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   892
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   893
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   894
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   895
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   896
void AppendToIssueListCaseModified(vector<issue>& issue_list, const string& funcname, const string& newfuncname, int funcpos,TypeOfSeverity severity)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   897
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   898
	issue i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   899
	string bc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   900
	string sc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   901
	getSeverityString(severity,bc_severity,sc_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   902
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   903
	i.i_typeid = ISSUE_MODIFIED;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   904
	i.i_funcname = funcname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   905
	i.i_newfuncname = newfuncname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   906
	i.i_funcpos = funcpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   907
	i.i_newfuncpos = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   908
	i.i_BC_severity = bc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   909
	i.i_SC_severity = sc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   910
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   911
	issue_list.push_back(i); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   912
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   913
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   914
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   915
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   916
void AppendToIssueListCaseAdded(vector<issue>& issue_list, const string& newfuncname, int newfuncpos,TypeOfSeverity severity)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   917
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   918
	issue i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   919
	string bc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   920
	string sc_severity = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   921
	getSeverityString(severity,bc_severity,sc_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   922
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   923
	i.i_typeid = ISSUE_ADDED;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   924
	i.i_funcname = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   925
	i.i_newfuncname = newfuncname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   926
	i.i_funcpos = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   927
	i.i_newfuncpos = newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   928
	i.i_BC_severity = bc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   929
	i.i_SC_severity = sc_severity;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   930
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   931
	issue_list.push_back(i); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   932
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   933
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   934
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   935
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   936
bool IssueCompare(const issue& left, const issue& right)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   937
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   938
    if (left.i_funcpos > 0 && right.i_funcpos > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   939
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   940
        if (left.i_funcpos == right.i_funcpos && left.i_newfuncpos > 0 && right.i_newfuncpos > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   941
            return left.i_newfuncpos < right.i_newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   942
        else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   943
            return left.i_funcpos < right.i_funcpos; 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   944
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   945
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   946
    else if (left.i_funcpos == 0 && right.i_funcpos > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   947
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   948
        if (left.i_newfuncpos == right.i_funcpos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   949
            return left.i_funcpos < right.i_newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   950
        else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   951
            return left.i_newfuncpos < right.i_funcpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   952
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   953
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   954
    else if (left.i_funcpos > 0 && right.i_funcpos == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   955
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   956
        if (left.i_funcpos == right.i_newfuncpos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   957
            return left.i_newfuncpos < right.i_funcpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   958
        else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   959
            return left.i_funcpos < right.i_newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   960
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   961
       
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   962
    else // if (left.i_funcpos == 0 && right.i_funcpos == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   963
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   964
        return left.i_newfuncpos < right.i_newfuncpos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   965
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   966
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   967
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   968
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   969
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   970
void WriteXMLLineOpenClosed(ofstream& f, unsigned int tabstops, const string& element, const string& data)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   971
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   972
    string tabs(tabstops, REPORT_TAB_CHAR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   973
    string xmldata(data);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   974
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   975
    // replace & -> &auml;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   976
    string::size_type i=0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   977
    while ((i=xmldata.find("&", i)) != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   978
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   979
        xmldata.replace(i, 1, "&amp;");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   980
        i++;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   981
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   982
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   983
    // replace < -> &lt;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   984
    i=0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   985
    while ((i=xmldata.find("<", i)) != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   986
        xmldata.replace(i, 1, "&lt;");    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   987
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   988
    // replace > -> &gt;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   989
    i=0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   990
    while ((i=xmldata.find(">", i)) != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   991
        xmldata.replace(i, 1, "&gt;");    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   992
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   993
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   994
    f << tabs << "<" << element << ">" << xmldata << "</" << element << ">" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   995
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   996
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   997
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   998
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   999
void WriteXMLLineOpeningTag(ofstream& f, unsigned int tabstops, const string& element)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1000
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1001
    string tabs(tabstops, REPORT_TAB_CHAR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1002
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1003
    f << tabs << "<" << element << ">" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1004
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1005
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1006
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1007
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1008
void WriteXMLLineClosingTag(ofstream& f, unsigned int tabstops, const string& element)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1009
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1010
    string tabs(tabstops, REPORT_TAB_CHAR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1011
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1012
    f << tabs << "</" << element << ">" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1013
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1014
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1015
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1016
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1017
void writeXMLIssueLibraryHeader(ofstream& f, const string& libname, const string& curlibname)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1018
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1019
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1020
    WriteXMLLineOpeningTag(f, 2, "library");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1021
    WriteXMLLineOpenClosed(f, 3, "name", libname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1022
    WriteXMLLineOpenClosed(f, 3, "comparefilename", curlibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1023
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1024
    string finallibname(curlibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1025
    if (finallibname.empty())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1026
       finallibname=libname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1027
    finallibname=getFilename(finallibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1028
    // remove any extensions from libname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1029
    string::size_type dot_loc = finallibname.find_last_of(".");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1030
    if (dot_loc != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1031
        finallibname = finallibname.substr(0, dot_loc);    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1032
    WriteXMLLineOpenClosed(f, 3, "shortname", finallibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1033
    WriteXMLLineOpenClosed(f, 3, "baseplatform", getPlatform(libname));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1034
    WriteXMLLineOpenClosed(f, 3, "currentplatform", getPlatform(curlibname));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1035
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1036
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1037
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1038
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1039
void writeXMLIssueLibraryFooter(ofstream& f)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1040
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1041
    WriteXMLLineClosingTag(f, 2, "library");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1042
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1043
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1044
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1045
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1046
void WriteXMLIssueOnlyInBaselineDir(ofstream& f, const string& libname, dll_issue& dllIssue)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1047
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1048
	writeXMLIssueLibraryHeader(f, libname, "");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1049
	WriteXMLLineOpeningTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1050
	WriteXMLLineOpenClosed(f, 4, "typeid", Int2Str(ISSUE_ONLY_IN_BASELINEDIR));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1051
	WriteXMLLineOpenClosed(f, 4, "bc_severity", "BBC Break");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1052
	WriteXMLLineOpenClosed(f, 4, "sc_severity", "SC Break");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1053
	WriteXMLLineClosingTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1054
	for(unsigned int i =0; i< dllIssue.i_list_typeid.size(); i++ )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1055
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1056
		string typeinfo = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1057
		WriteXMLLineOpeningTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1058
		WriteXMLLineOpenClosed(f, 4, "typeid", Int2Str(dllIssue.i_list_typeid.at(i)));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1059
		typeinfo = GetDllBreakTypeInfoString(dllIssue.i_list_typeid.at(i));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1060
		if(typeinfo.size() > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1061
			WriteXMLLineOpenClosed(f, 4, "typeinfo", typeinfo);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1062
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1063
		if (dllIssue.i_list_typeid.at(i) == DLL_BASELINE_MISSING )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1064
			WriteXMLLineOpenClosed(f, 4, "bc_severity", "Informative");            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1065
		else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1066
			WriteXMLLineOpenClosed(f, 4, "bc_severity", "BBC Break"); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1067
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1068
		WriteXMLLineOpenClosed(f, 4, "sc_severity", "None");            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1069
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1070
		WriteXMLLineClosingTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1071
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1072
	writeXMLIssueLibraryFooter(f);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1073
}            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1074
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1075
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1076
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1077
void WriteXMLIssueOnlyInCurrentDir(ofstream& f, const string& libname)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1078
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1079
    writeXMLIssueLibraryHeader(f, "", libname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1080
    WriteXMLLineOpeningTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1081
    WriteXMLLineOpenClosed(f, 4, "typeid", Int2Str(ISSUE_ONLY_IN_CURRENTDIR));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1082
    WriteXMLLineOpenClosed(f, 4, "bc_severity", "Informative");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1083
    WriteXMLLineOpenClosed(f, 4, "sc_severity", "Informative");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1084
    WriteXMLLineClosingTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1085
    writeXMLIssueLibraryFooter(f);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1086
}            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1087
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1088
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1089
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1090
void WriteIssueListToXML(ofstream& f, const string& libname, const string& curlibname,vector<issue>& issue_list, dll_issue& dllIssue)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1091
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1092
	if (issue_list.size() > 0 || dllIssue.i_list_typeid.size() > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1093
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1094
        string finallibname(curlibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1095
        // write header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1096
        WriteXMLLineOpeningTag(f, 2, "library");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1097
        WriteXMLLineOpenClosed(f, 3, "name", libname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1098
        WriteXMLLineOpenClosed(f, 3, "comparefilename", curlibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1099
        finallibname=getFilename(finallibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1100
        // remove any extensions from libname
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1101
        string::size_type dot_loc = finallibname.find_last_of(".");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1102
        if (dot_loc != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1103
            finallibname = finallibname.substr(0, dot_loc);    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1104
        WriteXMLLineOpenClosed(f, 3, "shortname", finallibname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1105
        WriteXMLLineOpenClosed(f, 3, "baseplatform", getPlatform(libname));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1106
        WriteXMLLineOpenClosed(f, 3, "currentplatform", getPlatform(curlibname));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1107
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1108
        // write all single issues        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1109
        for (unsigned int i=0; i<issue_list.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1110
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1111
            WriteXMLLineOpeningTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1112
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1113
            WriteXMLLineOpenClosed(f, 4, "typeid", Int2Str(issue_list.at(i).i_typeid));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1114
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1115
            if (issue_list.at(i).i_funcname.length() > 0)          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1116
                WriteXMLLineOpenClosed(f, 4, "funcname", issue_list.at(i).i_funcname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1117
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1118
            if (issue_list.at(i).i_newfuncname.length() > 0)          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1119
                WriteXMLLineOpenClosed(f, 4, "newfuncname", issue_list.at(i).i_newfuncname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1120
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1121
            if (issue_list.at(i).i_funcpos > 0)          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1122
                WriteXMLLineOpenClosed(f, 4, "funcpos", Int2Str(issue_list.at(i).i_funcpos));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1123
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1124
            if (issue_list.at(i).i_newfuncpos > 0)          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1125
                WriteXMLLineOpenClosed(f, 4, "newfuncpos", Int2Str(issue_list.at(i).i_newfuncpos));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1126
                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1127
            if (issue_list.at(i).i_BC_severity.length() > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1128
                WriteXMLLineOpenClosed(f, 4, "bc_severity", issue_list.at(i).i_BC_severity);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1129
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1130
            if (issue_list.at(i).i_SC_severity.length() > 0)          
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1131
                WriteXMLLineOpenClosed(f, 4, "sc_severity", issue_list.at(i).i_SC_severity);            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1132
            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1133
            WriteXMLLineClosingTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1134
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1135
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1136
		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1137
				for (unsigned int i=0; i<dllIssue.i_list_typeid.size(); i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1138
				{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1139
					string typeinfo = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1140
					WriteXMLLineOpeningTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1141
					WriteXMLLineOpenClosed(f, 4, "typeid", Int2Str(dllIssue.i_list_typeid.at(i)));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1142
					typeinfo = GetDllBreakTypeInfoString(dllIssue.i_list_typeid.at(i));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1143
					if(typeinfo.size() > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1144
						WriteXMLLineOpenClosed(f, 4, "typeinfo", typeinfo);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1145
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1146
					if (dllIssue.i_list_typeid.at(i) == DLL_BASELINE_MISSING )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1147
						WriteXMLLineOpenClosed(f, 4, "bc_severity", "Informative");            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1148
					else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1149
						WriteXMLLineOpenClosed(f, 4, "bc_severity", "BBC Break"); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1150
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1151
					WriteXMLLineOpenClosed(f, 4, "sc_severity", "None");            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1152
					WriteXMLLineClosingTag(f, 3, "issue");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1153
				}        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1154
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1155
				// finally write footer        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1156
				WriteXMLLineClosingTag(f, 2, "library");        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1157
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1158
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1159
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1160
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1161