apicompatanamdw/compatanalysercmd/headeranalyser/src/CPPParser.cpp
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 a0eee409ff14
parent 3 ebe3f8f03b59
permissions -rw-r--r--
Updates to CompatibilityAnalyser - The Tool should now work with Symbian^4 - Some minor bug fixes related to Qt headers in the Symbian Platform
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
/*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
* Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
* Description:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
#include <stdio.h>
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 <stdlib.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#include "CmdGlobals.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include <windows.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
#include <direct.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#include <errno.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#endif
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
#include <xercesc/dom/DOM.hpp>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
#include <xercesc/parsers/AbstractDOMParser.hpp>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
#include <iostream>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
#include <fstream>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
#include <string>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
#include "CPPParser.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
#include "XMLModuleErrorHandler.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
#include "HAException.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
#include "BBCFileUtils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
#include "Utils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
#include "XMLUtils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
XERCES_CPP_NAMESPACE_USE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
const int KMaxFilenameLength = 512;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
const int KMaxDirLength=1024;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    48
#define MAX_ARRAY_COUNT 200
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
    49
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
// The C++ parser executable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
static const char* GCCXML_COMMAND = "ha_gccxml_cc1plus ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
#else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
static const char* GCCXML_COMMAND = "./ha_gccxml_cc1plus ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
// Parameters to parser 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
// 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
//static const char* GCCXML_DEFINE = " -D_DEBUG -D__wchar_t=wchar_t -D_UNICODE -D__SYMBIAN32__ -D__SERIES60_30__ -D__SERIES60_3X__ -D__GCC32__ -D__EPOC32__ -D__GCC32__ -D__MARM__ -D__GCCXML__ -D__MARM_ARM4__ -D__MARM_ARMV5__ -D__EXE__  -UWIN32  -U__i386__ -U_WIN32 -U__WIN32__";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
static const char* GCCXML_DEFINE = " -D_DEBUG -D_UNICODE -D__SYMBIAN32__ -D__SERIES60_30__ -D__SERIES60_3X__ -D__GCC32__ -D__GNUC__ -D__EPOC32__ -D__GCC32__ -D__MARM__ -D__GCCXML__ -D__MARM_ARM4__ -D__MARM_ARMV5__ -D__EXE__  -UWIN32  -U__i386__ -U_WIN32 -U__WIN32__";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
static const char* GCCXML_OPTIONS = " -E -g -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fshort-wchar -quiet -w ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
// Output file define
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
static const char* GCCXML_OUTPUT = " -o ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
static const char* GCCXML_INCLUDEPATH = " -I ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
// XML output file define
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
static const char* GCCXML_XML_OUTPUT = " -fxml=";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
static const char* GCCXML_MACRO_OUTPUT = " -dD ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
// Error code when file remove fails
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
const int KErrorRemoveFailed=0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
static const char* GCCXML_COMP_OPTIONS = " -fpreprocessed -g -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fshort-wchar -quiet -w -o nul";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
#else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
static const char* GCCXML_COMP_OPTIONS = " -fpreprocessed -g -nostdinc -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fshort-wchar -quiet -w -o /dev/null";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
// CPPParser::GenerateCompilationCmd
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
// Generate command for compilation
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
string CPPParser::GenerateCompilationCmd(const string& currentDir,const string& epocRoot,const string& inputFile,const string& outputFile)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
{    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
    string cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
    if (currentDir != "")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
        cmdline = currentDir + "\"" + DIR_SEPARATOR + "\"";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    cmdline += GCCXML_COMMAND;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    cmdline += GCCXML_COMP_OPTIONS;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
    cmdline += GCCXML_XML_OUTPUT + string("\"") + outputFile + string("\" \"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
    cmdline += inputFile + string("\"")+ string(" 2>\"") + iCompErrFile + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
    //cout << "-------COMPILATION-----------------------\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
    //cout << cmdline << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
    //cout << "-----------------------------------------\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
    return cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
// CPPParser::GeneratePreprocessCmd
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
// Generate GCXML command for prepocessing
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
string CPPParser::GeneratePreprocessCmd(const string& currentDir,const string& epocRoot,const string& inputFile,const string& outputFile,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
                             vector<string>& aHeaders )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
    string cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
    if (currentDir != "")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
        cmdline = currentDir + DIR_SEPARATOR;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
    cmdline += GCCXML_COMMAND;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
    list<pair<string, string> > includes = BBCFileUtils::extractFilenames(epocRoot);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
    list<pair<string, string> >::iterator listbegin = includes.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    list<pair<string, string> >::iterator listend = includes.end();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    for(; listbegin != listend; listbegin++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
        cmdline += GCCXML_INCLUDEPATH + string("\"") + listbegin->first + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    if ( !aHeaders.empty() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
        int size = (int)aHeaders.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
        int i = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
        for(;i < size; i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
            string headerfile = aHeaders.at(i);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
            cmdline += GCCXML_INCLUDEPATH + string("\"") + headerfile + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
        }
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
    cmdline += GCCXML_DEFINE;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
    cmdline += GCCXML_OPTIONS;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
    cmdline += GCCXML_OUTPUT + string("\"") + outputFile + string("\" \"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
    cmdline += inputFile + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    //cout << "-------- PREPROCESS COMMAND --------------" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
    //cout << cmdline << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
    //cout << "------------------------------------------" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
    return cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
// CPPParser::GenerateMacroExtract
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
// Generate commanf or macro extract
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
string CPPParser::GenerateMacroExtract(const string& currentDir,const string& epocRoot,const string& inputFile,const string& outputFile,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
                             vector<string>& aHeaders )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
    string cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
    if (currentDir != "")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
        cmdline = currentDir + DIR_SEPARATOR;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    cmdline += GCCXML_COMMAND;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
    list<pair<string, string> > includes = BBCFileUtils::extractFilenames(epocRoot);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
    list<pair<string, string> >::iterator listbegin = includes.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
    list<pair<string, string> >::iterator listend = includes.end();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    for(; listbegin != listend; listbegin++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
        cmdline += GCCXML_INCLUDEPATH + string("\"") + listbegin->first + string("\"");
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
    if ( !aHeaders.empty() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
        int size = (int)aHeaders.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
        int i = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
        for(;i < size; i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
            string headerfile = aHeaders.at(i);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
            cmdline += GCCXML_INCLUDEPATH + string("\"") + headerfile + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   194
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   195
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   196
    cmdline += GCCXML_DEFINE;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
    cmdline += GCCXML_OPTIONS;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    cmdline += GCCXML_MACRO_OUTPUT;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    cmdline += GCCXML_OUTPUT + string("\"") + outputFile + string("\" \"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
    cmdline += inputFile + string("\"")+ string(" 2>\"") + iCompErrFile + string("\"");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
    //cout << "-----------------------------------------\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    //cout << cmdline << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
    //cout << "-----------------------------------------\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
    return cmdline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
// CPPParser::CPPParser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
// Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
CPPParser::CPPParser(string epocroot) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
  : iInputFilename(), iOutputFilename(), iXMLOutputPath(),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    iEpocRoot(epocroot), iDOMParser(NULL), iDOMDoc(NULL),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
    iDOMRootElement(NULL), iCompErrFile()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
// CPPParser::~CPPParser
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
// Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
CPPParser::~CPPParser() 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
    if (iDOMParser != NULL)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
        iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
        iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
        iDOMParser = NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
// CPPParser::parse
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
// Please, note that iOutputFilename is changed internally in different 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
// function calls.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
DOMNode* CPPParser::parse(const vector<string>& aFilenames, string aVersion, string aPath, list<string>& notRemovedFiles)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
{   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
    DOMNode* ret = NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
    int err = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
    headervector headers;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
    string cppfilename = generateTempCPPFile(aFilenames, aVersion, headers );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
    string extensionStripped = BBCFileUtils::StripFilenameExtension(cppfilename);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
    iOriginalFilename = BBCFileUtils::StripPath(extensionStripped);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
	iCompErrFile = iTempDir + DIR_SEPARATOR + iOriginalFilename + "-" + aVersion + "-comperr.txt";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
    try
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
        err = PreprocessH(cppfilename, aVersion, headers);        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
    } catch (HAException error)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
#if !defined(_DEBUG) && !defined(DEBUG)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
        RemoveFile(cppfilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
        RemoveFile(iMacroFilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
        throw error;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
    RemoveFile(cppfilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
    string prefilename = iOutputFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
    HandleExports(iOutputFilename, aVersion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
    string pre2filename = iOutputFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
    try
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
        err = ConvertHToXML(iOutputFilename, aVersion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
    } catch (HAException error)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
#if !defined(_DEBUG) && !defined(DEBUG)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
        RemoveFile(prefilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
        RemoveFile(pre2filename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
        RemoveFile(iMacroFilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
        throw error;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
    if (err == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
        err = ExtractDOMFromXML(iOutputFilename);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
        ret = iDOMRootElement;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
    headers.clear();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
    RemoveFile(prefilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
    RemoveFile(pre2filename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
#if !defined(_DEBUG) && !defined(DEBUG)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
    RemoveFile(iOutputFilename, notRemovedFiles);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   302
// CPPParser::RemoveFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
// Remove given file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
void CPPParser::RemoveFile(string file, list<string>& notRemovedFiles)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
{       
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
    int success;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
/*#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
    success = DeleteFile(file.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
    if (success == KErrorRemoveFailed)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
        unsigned long int errorcode = GetLastError();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
        if (errorcode != ERROR_FILE_NOT_FOUND)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
            notRemovedFiles.push_back(file);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
#else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
    success = unlink(file.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
    if (success == -1)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
        if (errno != ENOENT)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
            notRemovedFiles.push_back(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
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
#endif*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
	REMOVE_FILE_FUNCTION
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
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
// CPPParser::GenerateMacroExtract
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
// Converts a header file with given filename to an XML file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
// (with same base filename and extension .xml).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
// Throw an exception on error
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
int CPPParser::ConvertHToXML(string aFilename, string aVersion) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
    string oFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
    string iFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
    string tempOFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
    iFilename = aFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
    tempOFilename = BBCFileUtils::StripPath(BBCFileUtils::StripFilenameExtension(iFilename));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
    oFilename = iTempDir + DIR_SEPARATOR + iOriginalFilename + "-" + aVersion + ".xml";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
    char currentDir[KMaxDirLength];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
    getcwd(currentDir,KMaxDirLength);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
    #ifdef USE_INCLUDED_GCC_DISTRIBUTION
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
        string cmdline = GenerateCompilationCmd(currentDir, iEpocRoot, iFilename, oFilename);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
    #else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
    string empty("");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
        string cmdline = GenerateCompilationCmd(empty, iEpocRoot, iFilename, oFilename);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
    #endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
    ret = system(cmdline.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
    iXMLOutputPath = iTempDir;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
    iOutputFilename = oFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
    iInputFilename = iFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
    if (ret != 0) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
        throw(HAException("GCCXML Error, please see above for more information"));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
// CPPParser::GenerateMacroExtract
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
// Generate temporary CPP-file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
int CPPParser::DumpMacros(string mdumpfile, string ifile, vector<string>& headers)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
    string cmdbuf;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
    char currentDir[KMaxDirLength];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
    getcwd(currentDir,KMaxDirLength);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
    #ifdef USE_INCLUDED_GCC_DISTRIBUTION
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
        cmdbuf = GenerateMacroExtract(currentDir, iEpocRoot, ifile, mdumpfile, headers);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
    #else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
        string empty("");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
        cmdbuf = GenerateMacroExtract(empty, iEpocRoot, ifile, mdumpfile,headers);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
    #endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
    ret = system(cmdbuf.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
// CPPParser::ExtractDOMFromXML
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
// Reads in and parses an XML file with given filename.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
int CPPParser::ExtractDOMFromXML(const string& aXMLFilename)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
{    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
    if (iDOMParser != NULL) {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
        iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
        iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
		iDOMParser = NULL;		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   408
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   409
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   410
    return ParseXMLFile(aXMLFilename, iDOMParser, iDOMDoc, iDOMRootElement);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   411
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   412
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   413
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
// CPPParser::setBaselineDir
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
void CPPParser::setBaselineDir(string aRoot)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   418
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   419
    iEpocRoot = aRoot;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   420
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   421
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
// CPPParser::PreprocessH
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
int CPPParser::PreprocessH(string aFilename, string aVersion, vector<string>& headers )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
    string oFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
    string iFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
    string tempOFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
    iFilename = aFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
    tempOFilename = iOriginalFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
    oFilename = iTempDir + DIR_SEPARATOR + tempOFilename + "-" + aVersion + ".pre";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   439
    iMacroFilename = iTempDir + DIR_SEPARATOR + iOriginalFilename + "-" + aVersion + "-macros.txt";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   440
    ret = DumpMacros(iMacroFilename, iFilename,headers);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   441
    if (ret != 0) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
        throw(HAException("GCCXML Error, please see above for more information"));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
    char currentDir[KMaxDirLength];
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
     getcwd(currentDir,KMaxDirLength);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
    #ifdef USE_INCLUDED_GCC_DISTRIBUTION
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
        string cmdline = GeneratePreprocessCmd(currentDir,iEpocRoot,iFilename,oFilename, headers);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   451
    #else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   452
    string empty("");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   453
        string cmdline = GeneratePreprocessCmd(empty,iEpocRoot,iFilename,oFilename, headers);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
    #endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
    ret = system(cmdline.c_str());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
    if (ret != 0) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
        throw(HAException("GCCXML Error, please see above for more information"));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
    iXMLOutputPath = iTempDir;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
    iOutputFilename = oFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
    iInputFilename = iFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
// CPPParser::HandleExports
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   469
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   470
//
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   471
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
int CPPParser::HandleExports(string aFilename, string aVersion)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
{
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   474
	int ret = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   475
	string ofilename = aFilename + ".2";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   476
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   477
	ifstream input(aFilename.c_str(), ios::in);
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   478
	ofstream output(ofilename.c_str(), ios::out);
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   479
	iOutputFilename = ofilename;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   480
	char c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   481
	string toflush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   482
	string flush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   483
	unsigned int matches = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   484
	string tofind = STR_EXPORT_HACK;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   485
	string attribstr = STR_ATTRIBUTE_STR;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   486
	string outputBuffer;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   487
	outputBuffer.reserve(PREPROCESS_BUFFERSIZE);
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   488
	int state = EStateSearching;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   489
	char stackArray[MAX_ARRAY_COUNT] = {'\0'};
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   490
	int arryPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   491
	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   492
	string isClass = "class";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   493
	string isEnum = "enum";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   494
	string isStruct = "struct";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   495
	string isUnion = "union";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   496
	string isInline = "inline";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   497
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   498
	unsigned int clsPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   499
	unsigned int enmPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   500
	unsigned int strctPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   501
	unsigned int inlinePos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   502
	unsigned int unionPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   503
	char arraychar = '\0';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   504
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   505
	unsigned int bufPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   506
	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   507
	string temp;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   508
	string buf;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   509
	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   510
	bool possibleVirtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   511
	bool virtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   512
	bool ignorecheck = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   513
	while (input.get(c))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   514
	{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   515
		ignorecheck = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   516
		if (outputBuffer.length() >= PREPROCESS_BUFFERSIZE)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   517
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   518
			output << outputBuffer;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   519
			outputBuffer = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   520
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   521
       // Get the bufferpos
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   522
		bufPos = (unsigned int)outputBuffer.length()-1;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   523
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   524
		// delete buf (class\enum\struct) entry if next letter is not space
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   525
 		if ( buf.length() > 0 && state == EStateReplacing && (c != ' ' && c != '\t' && int(c) != 10))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   526
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   527
			buf = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   528
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   529
		if( c == isClass.at(clsPos))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   530
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   531
			if( clsPos == 0 ) // searching for class keyword with space before and after
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   532
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   533
				if(outputBuffer == "" || outputBuffer.at(bufPos) == ' ' || outputBuffer.at(bufPos) == '\t'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   534
					|| int(outputBuffer.at(bufPos)) == 10 || int(outputBuffer.at(bufPos)) == 32 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   535
					clsPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   536
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   537
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   538
				clsPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   539
		}			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   540
			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   541
		else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   542
			clsPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   543
		if (clsPos == isClass.length()) // keyword found 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   544
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   545
			clsPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   546
			buf = isClass;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   547
			ignorecheck = true; // in the current iteration don't match buf string with class\enum\struct keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   548
			                    // as keyword may be part of some word like " classification" 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   549
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   550
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   551
		if( c == isUnion.at(unionPos))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   552
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   553
			if( unionPos == 0 ) // searching for union keyword with space before and after
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   554
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   555
				if(outputBuffer == "" || outputBuffer.at(bufPos) == ' ' || outputBuffer.at(bufPos) == '\t'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   556
					|| int(outputBuffer.at(bufPos)) == 10 || int(outputBuffer.at(bufPos)) == 32 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   557
					unionPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   558
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   559
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   560
				unionPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   561
		}			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   562
			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   563
		else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   564
			unionPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   565
		if (unionPos == isUnion.length()) // keyword found 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   566
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   567
			unionPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   568
			buf = isUnion;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   569
			ignorecheck = true; // in the current iteration don't match buf string with class\enum\struct\union keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   570
			                    // as keyword may be part of some word like " classification" 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   571
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   572
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   573
		if(c == isStruct.at(strctPos))// searching for struct keyword with space before and after
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   574
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   575
			if( strctPos == 0 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   576
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   577
				if(outputBuffer == "" || outputBuffer.at(bufPos) == ' ' || outputBuffer.at(bufPos) == '\t'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   578
					|| int(outputBuffer.at(bufPos)) == 10 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   579
					strctPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   580
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   581
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   582
				strctPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   583
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   584
		else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   585
			strctPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   586
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   587
		if(strctPos == isStruct.length())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   588
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   589
			strctPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   590
			buf = isStruct;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   591
			ignorecheck = true; // in the current iteration don't match buf string with class\enum\struct keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   592
			                    // as keyword may be part of some word like " structural" 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   593
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   594
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   595
		if(c == isEnum.at(enmPos) )// searching for enum keyword with space before and after
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   596
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   597
			if( enmPos == 0 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   598
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   599
				if(outputBuffer == "" || outputBuffer.at(bufPos) == ' ' || outputBuffer.at(bufPos) == '\t'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   600
					|| int(outputBuffer.at(bufPos)) == 10 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   601
					enmPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   602
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   603
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   604
				enmPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   605
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   606
		else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   607
			enmPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   608
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   609
		if( enmPos == isEnum.length())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   610
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   611
			enmPos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   612
			buf = isEnum;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   613
			ignorecheck = true;// in the current iteration don't match buf string with class\enum\struct keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   614
			                    // as keyword may be part of some word like " enumuration" 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   615
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   616
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   617
		if (state == EStateSearching)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   618
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   619
			memset(stackArray,'\0',MAX_ARRAY_COUNT);
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   620
			if (c == tofind.at(matches))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   621
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   622
				matches++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   623
				toflush += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   624
			} else 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   625
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   626
				matches = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   627
				if (!toflush.empty())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   628
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   629
					outputBuffer += toflush;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   630
					toflush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   631
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   632
				outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   633
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   634
				if(buf.length() > 0 && ignorecheck == false && (c != ' ' && c != '\t' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   635
					&& int(c) != 10 ))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   636
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   637
					buf = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   638
					arraychar = '\0';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   639
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   640
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   641
			if (matches == tofind.length())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   642
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   643
				toflush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   644
				state = EStateReplacing; // export keyword match found, so make the stae as replacing
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   645
				matches = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   646
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   647
		} else if (state == EStateReplacing)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   648
		{  
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   649
			// under a exported class,for a function the exported keyword is present,it should be deleted.
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   650
			if (c == tofind.at(matches))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   651
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   652
				matches++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   653
				toflush += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   654
				if (matches == tofind.length())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   655
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   656
					toflush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   657
					matches = 0;					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   658
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   659
				continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   660
			} else 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   661
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   662
				matches = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   663
				if (!toflush.empty())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   664
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   665
					outputBuffer += toflush;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   666
					toflush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   667
				}		
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   668
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   669
			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   670
		
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   671
			if(c == isInline.at(inlinePos))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   672
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   673
				if( inlinePos == 0 )// searching for inline keyword with space before and after
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   674
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   675
					if(outputBuffer == "" || outputBuffer.at(bufPos) == ' ' || outputBuffer.at(bufPos) == '\t'
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   676
						|| int(outputBuffer.at(bufPos)) == 10 )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   677
						inlinePos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   678
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   679
				else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   680
					inlinePos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   681
			}		
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   682
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   683
				inlinePos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   684
			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   685
			if( inlinePos == isInline.length())
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   686
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   687
				inlinePos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   688
				buf = isInline;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   689
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   690
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   691
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   692
			if ( buf.length() > 0 && (c == ' ' || c == '\t' || int(c) == 10))
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   693
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   694
				if (buf == isClass)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   695
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   696
					arraychar = 'c';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   697
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   698
				if (buf == isStruct )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   699
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   700
					arraychar = 's';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   701
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   702
				if (buf == isEnum)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   703
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   704
					arraychar = 'e';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   705
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   706
				if(buf == isUnion)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   707
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   708
					arraychar = 'u';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   709
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   710
				if(buf == isInline) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   711
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   712
					stackArray[arryPos] = 'i'; // place inline keyword in stack
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   713
					arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   714
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   715
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   716
				buf = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   717
				if(temp.length() > 0) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   718
					temp = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   719
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   720
			else if (c == '{')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   721
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   722
				// place the keyword in stack for class\enum\struct
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   723
				if(arraychar != '\0')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   724
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   725
					stackArray[arryPos] = arraychar;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   726
					arraychar = '\0';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   727
					arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   728
				}				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   729
				stackArray[arryPos] = c;				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   730
                arryPos++;
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   731
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   732
				if(temp.length() > 0) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   733
					temp = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   734
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   735
			else if(c== '}')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   736
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   737
				temp = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   738
				bool ignore = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   739
				// can be end of class\enum\struct				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   740
				for (int i = arryPos-1; i >= 0; i-- )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   741
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   742
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   743
					if (stackArray[i] == '{' ) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   744
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   745
						if( stackArray[i-1] != 'c' && stackArray[i-1] != 's' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   746
							&& stackArray[i-1] != 'e' && stackArray[i-1] != 'u')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   747
							// check if the function is inline
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   748
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   749
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   750
							ignore = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   751
							break;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   752
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   753
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   754
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   755
				if(ignore == false)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   756
					temp = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   757
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   758
				stackArray[arryPos] = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   759
                arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   760
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   761
				if(temp == "")
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   762
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   763
					int openbraceCount = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   764
					int closebracecount = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   765
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   766
					// if it is end of a function then delete the entry from stack
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   767
					// and it is ofcourse not a exported function, 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   768
					//will definitely be a inline function with or without "inline" keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   769
					bool deleteEntry = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   770
					int setpos = 0;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   771
					// get the pos after class\struct\enum started
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   772
					for(int i = arryPos; i >= 0; i--)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   773
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   774
						if(stackArray[i] == '{')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   775
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   776
							deleteEntry = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   777
							if (stackArray[i-1] == 'c' || stackArray[i-1] == 's' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   778
								|| stackArray[i-1] == 'e' || stackArray[i-1] == 'u')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   779
							{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   780
								setpos = i+1;								
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   781
								break;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   782
							}							
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   783
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   784
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   785
					// find the end pos of the non exported function by matching the open and close flower brace count.
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   786
					if(deleteEntry)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   787
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   788
						deleteEntry = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   789
						for(int i = setpos; i <= arryPos; i++ )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   790
						{						
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   791
							if(stackArray[i] == '{')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   792
								openbraceCount++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   793
							else if(stackArray[i] == '}')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   794
								closebracecount++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   795
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   796
						if(openbraceCount > 0 && openbraceCount == closebracecount )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   797
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   798
							deleteEntry = true;// need to delete the non exported function entry from stack now
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   799
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   800
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   801
					// noe delete the non exported entry and re arrange the stack
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   802
					if(deleteEntry)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   803
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   804
						for(int pos = setpos; pos <= arryPos; pos++ )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   805
							stackArray[pos] = '\0';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   806
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   807
						arryPos = setpos;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   808
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   809
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   810
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   811
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   812
			else if ( (c == '=' && stackArray[arryPos-1] == ')') ||
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   813
                      (c == '0' && stackArray[arryPos-1] == '=') ||
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   814
					  (c == '(' || c == ')' )||
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   815
					  ( possibleVirtualFunc == true ||virtualFunc == true)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   816
					 ) // can be a virtual function or normal function which might be exported
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   817
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   818
				if(temp.length() > 0) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   819
					temp = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   820
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   821
				if( (possibleVirtualFunc == true && (  c!= '0' && c != ' ' && c != '\t' && int(c) != 10) ) ||
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   822
					(virtualFunc == true && (c!= ';' && c != ' ' && c != '\t' && int(c) != 10)) )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   823
				{ // if other than space and '0', then set posVirtual func to false
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   824
					// or if other than space and ';', then set Virtual func to false
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   825
					outputBuffer += flush;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   826
					outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   827
					flush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   828
					possibleVirtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   829
					virtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   830
					continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   831
				}
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   832
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   833
				else if( c == '=') // possible virtual function
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   834
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   835
					flush = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   836
					possibleVirtualFunc = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   837
					virtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   838
					stackArray[arryPos] = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   839
					arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   840
					continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   841
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   842
				else if (possibleVirtualFunc == true)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   843
				{				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   844
					flush += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   845
					if ( c == '0')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   846
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   847
						virtualFunc = true; // pure virtual function
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   848
						possibleVirtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   849
						stackArray[arryPos] = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   850
						arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   851
					}					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   852
					continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   853
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   854
				else if (c == '(' || c == ')')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   855
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   856
					flush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   857
					stackArray[arryPos] = c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   858
					arryPos++;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   859
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   860
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   861
			} 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   862
			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   863
			if (c == ';')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   864
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   865
				arraychar = '\0';
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   866
				// first check for inline function and delete the entry from stack for this func
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   867
				bool isinline = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   868
				bool nonExpFun = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   869
				bool removeEntry = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   870
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   871
				for (int i = arryPos-1; i >= 0; i-- )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   872
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   873
					if ( stackArray[i] == 'i') // inline function with inline keyword
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   874
						isinline = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   875
					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   876
					else if (stackArray[i] == '{')// check if the function is inline
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   877
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   878
						if (stackArray[i-1] != 'c' && stackArray[i-1] != 's' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   879
							  && stackArray[i-1] != 'e' && stackArray[i-1] != 'u')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   880
							nonExpFun = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   881
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   882
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   883
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   884
				// end of struct/class/enum
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   885
				if (stackArray[arryPos-1] == '}' && temp == "}"   ) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   886
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   887
					//if(!isinline && !nonExpFun)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   888
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   889
					int cnt = arryPos-1;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   890
					bool flag = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   891
					for (int i = cnt; i>=0; i--)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   892
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   893
						if (stackArray[i] == 'c' || stackArray[i] == 's' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   894
							   || stackArray[i] == 'e' || stackArray[i] == 'u')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   895
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   896
							flag = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   897
						}	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   898
						stackArray[i] = '\0';		
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   899
						arryPos--;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   900
						if( flag )	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   901
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   902
							break;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   903
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   904
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   905
					outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   906
					temp = "";
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   907
3
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   908
					if(stackArray[0] == '\0') // check if exported class\struct is ended .. 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   909
						                      // set state to searching and continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   910
						state = EStateSearching;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   911
					continue;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   912
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   913
				}				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   914
				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   915
				if(stackArray[arryPos-1] == '('&& nonExpFun == false && isinline == false) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   916
					// not function, can be a for loop, so reset the stackArray ...
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   917
				{				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   918
					outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   919
					removeEntry = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   920
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   921
				else if(stackArray[arryPos-1] == ')'  ) 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   922
					// some exported function can be "abcd( xyz(0), pqr(0))"
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   923
				{	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   924
					if( nonExpFun == false && isinline == false )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   925
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   926
						outputBuffer += " ";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   927
						outputBuffer += attribstr;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   928
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   929
					outputBuffer += c;	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   930
					if (nonExpFun == false)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   931
					removeEntry = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   932
				}			
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   933
				else if( (stackArray[arryPos-1] == '0' && stackArray[arryPos-2] == '=' && virtualFunc == true) )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   934
				{ // can be a virtual function or normal function which is definitely exported
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   935
					if(!isinline && !nonExpFun)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   936
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   937
						outputBuffer += " ";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   938
						outputBuffer += attribstr;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   939
						outputBuffer += " ";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   940
					}					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   941
					outputBuffer += flush;					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   942
					outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   943
					flush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   944
					if(nonExpFun == false)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   945
						removeEntry = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   946
					virtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   947
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   948
				else	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   949
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   950
					outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   951
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   952
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   953
				if(removeEntry == true)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   954
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   955
					int cnt = arryPos-1;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   956
					bool flag = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   957
					for (int i = cnt; i>=0; i--)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   958
					{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   959
						if (stackArray[i] == '{' && 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   960
							(stackArray[i-1] == 'c' || stackArray[i-1] == 's' 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   961
							|| stackArray[i-1] == 'e' || stackArray[i-1] == 'u') )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   962
							flag = true;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   963
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   964
						if(flag == false)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   965
						{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   966
							stackArray[i] = '\0';	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   967
							arryPos--;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   968
						}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   969
					}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   970
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   971
	
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   972
				if(stackArray[0] == '\0')
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   973
					state = EStateSearching;				
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   974
			} 
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   975
			else
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   976
			{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   977
				if(  virtualFunc == true )
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   978
				{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   979
					outputBuffer += flush;					
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   980
					flush = "";
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   981
                    virtualFunc = false;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   982
				}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   983
				outputBuffer += c;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   984
			}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   985
		} else if (state == EStateReplaceDone)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   986
		{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   987
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   988
		}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   989
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   990
	}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   991
	if (outputBuffer.length() != 0)
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   992
	{
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   993
		output << outputBuffer;
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   994
	}
ebe3f8f03b59 Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
noe\swadi
parents: 0
diff changeset
   995
	return ret;
0
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
// CPPParser::ReplaceExport
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1000
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1001
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1002
#if 0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1003
int CPPParser::ReplaceExport(string line, string& processedline)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1004
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1005
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1006
    if (processedline.length() == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1007
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1008
        string tofind = STR_EXPORT_HACK;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1009
        size_t idx = line.find(tofind);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1010
        if (idx != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1011
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1012
            unsigned int start = (unsigned int)idx + tofind.length();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1013
            int len = (int)line.length() - start;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1014
            string sub = line.substr(start+1, len-1);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1015
            int insertidx = (int)sub.rfind("=0;");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1016
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1017
            if (insertidx < 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1018
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1019
                insertidx = (int)sub.rfind("= 0;");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1020
                if (insertidx < 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1021
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1022
                    insertidx = (int)sub.rfind(';');
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1023
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1024
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1025
            if (insertidx > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1026
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1027
                sub.insert(insertidx, " __attribute((gccxml(\"exported\")))");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1028
            } else 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1029
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1030
                ret = 1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1031
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1032
            processedline.append(sub);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1033
        } else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1034
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1035
            if (processedline.find("};") != string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1036
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1037
                processedline.append(line);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1038
                ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1039
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1040
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1041
    } else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1042
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1043
        string sub = line;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1044
        int insertidx = (int)sub.rfind("=0;");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1045
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1046
        if (insertidx < 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1047
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1048
            insertidx = (int)sub.rfind("= 0;");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1049
            if (insertidx < 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1050
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1051
                insertidx = (int)sub.rfind(';');
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1052
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1053
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1054
        if (insertidx > 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1055
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1056
            sub.insert(insertidx, " __attribute((gccxml(\"exported\")))");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1057
            ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1058
        } else 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1059
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1060
            ret = 1;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1061
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1062
        processedline = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1063
        processedline.append(sub);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1064
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1065
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1066
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1067
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1068
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1069
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1070
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1071
// CPPParser::getEnv
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1072
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1073
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1074
char* CPPParser::getEnv(char* aEnvVarName)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1075
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1076
    char* ret = getenv(aEnvVarName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1077
    if (ret == NULL)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1078
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1079
        string s("Environment variable not defined: ");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1080
        s += aEnvVarName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1081
        throw(new HAException(s));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1082
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1083
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1084
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1085
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1086
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1087
// CPPParser::generateTempCPPFile
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
string CPPParser::generateTempCPPFile(const vector<string>& aFiles, string aVersion, vector<string>& aHeaders)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1091
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1092
    string headers = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1093
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1094
	if (!iForcedHeaders.empty())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1095
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1096
        // START -- Support for multiple forced headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1097
        list<pair<string, string> > fheaders = BBCFileUtils::extractFilenames(iForcedHeaders);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1098
        list<pair<string, string> >::iterator fheadersbegin = fheaders.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1099
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1100
        for(; fheadersbegin != fheaders.end(); fheadersbegin++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1101
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1102
            headers += "#include \"";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1103
            headers += fheadersbegin->first;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1104
            headers += "\"\n";           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1105
        } 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1106
		// END -- Support for multiple forced headers
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1107
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1108
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1109
    size_t filecount = aFiles.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1110
    int filehash = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1111
    string ret = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1112
    for (unsigned int i = 0; i < filecount; i++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1113
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1114
        // Append header folder to include vector
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1115
        //string& hdr = aFiles.at(i);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1116
        AppendHeader( aHeaders, aFiles.at(i) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1117
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1118
        string fn = aFiles.at(i);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1119
        headers += "#include \"";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1120
        headers += fn;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1121
        headers += "\"\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1122
        fn += "-";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1123
        fn += aVersion;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1124
        filehash += BBCFileUtils::quickHash(fn);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1125
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1126
    string temp;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1127
    itoa(filehash, temp, 10);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1128
    ret = iTempDir + DIR_SEPARATOR + temp + ".cpp";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1129
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1130
    ofstream output(ret.c_str(), ios::out);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1131
    output << headers;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1132
    output.close();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1133
    return ret;
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
// CPPParser::setForcedHeaders
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1138
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1139
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1140
void CPPParser::setForcedHeaders(const string& aHeaders)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1141
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1142
    iForcedHeaders = aHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1143
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1144
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1145
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1146
// CPPParser::setTemp
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1147
// Set temp file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1148
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1149
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1150
void CPPParser::setTemp(const string& aTempDir)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1151
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1152
    iTempDir = aTempDir;
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
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1156
// CPPParser::getMacroFilename
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1157
// Returns macro filename
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
string CPPParser::getMacroFilename()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1161
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1162
    return iMacroFilename;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1163
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1164
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1165
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1166
// CPPParser::getCompErrFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1167
// Returns compilation error filename
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1168
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1169
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1170
string CPPParser::getCompErrFile()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1171
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1172
    return iCompErrFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1173
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1174
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1175
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1176
// CPPParser::AppendHeader
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1177
// ----------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1178
//
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1179
void CPPParser::AppendHeader( vector<string>& aHeaders, string aFile )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1180
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1181
    string onlyFolder = aFile;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1182
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1183
    string::size_type idx = onlyFolder.rfind(DIR_SEPARATOR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1184
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1185
    // for other separation formats
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1186
    if (idx != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1187
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1188
        onlyFolder.erase( idx );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1189
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1190
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1191
    if (onlyFolder.size() == ANALYSER_HEADER_SIZE)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1192
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1193
        onlyFolder += APPEND_DIR_SEPARATOR;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1194
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1195
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1196
    bool notFound = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1197
    unsigned int size = (unsigned int)aHeaders.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1198
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1199
    for(unsigned int g = 0; g < size ; g++ )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1200
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1201
        if( aHeaders.at(g) == onlyFolder )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1202
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1203
            notFound = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1204
            size = (unsigned int)aHeaders.size();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1205
        }		
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1206
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1207
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1208
    if( notFound )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1209
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1210
        aHeaders.push_back( onlyFolder );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1211
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1212
}