apicompatanamdw/compatanalysercmd/headeranalyser/src/PlatformData.cpp
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 a0eee409ff14
parent 0 638b9c697799
permissions -rw-r--r--
Updates to CompatibilityAnalyser - The Tool should now work with Symbian^4 - Some minor bug fixes related to Qt headers in the Symbian Platform
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
/*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
* Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
* Description:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    18
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    19
#include "CmdGlobals.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
#pragma warning(disable:4786)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#include <vector>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#include <algorithm>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#include "PlatformData.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
#include "XMLUtils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
#include "XMLStringConst.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
#include "Utils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
#include "BBCFileUtils.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
#include "HAException.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
const char* XML_FILE_ID_ATTRIBUTE = "id";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
 * Generic utility function, which checks whether the given object is
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
 * in the vector.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
template <typename C>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
inline bool IsObjectInVector(const vector<C>& v, const C& o)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
{ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
    return std::find(v.begin(), v.end(), o) != v.end();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
// Convert to proper dir-separator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
string& FixPathString(string& str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
    string::size_type dirSepInd = str.find_first_of("\\/");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
    if( dirSepInd != string::npos && str.at(dirSepInd) != DIR_SEPARATOR )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
    {        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
        replaceChar(str, str.at(dirSepInd), DIR_SEPARATOR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
    return str;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
ComponentFile::ComponentFile()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
iComponent(0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
ComponentFile::ComponentFile(const string& ID, Component* comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
: 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
iID(ID),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
iComponent(comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
ComponentFile::ComponentFile(const ComponentFile &rhs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
iID(rhs.ID()),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
iName(rhs.FileName()),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
iPath(rhs.Path()),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
iComponent(rhs.GetComponent())
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
/**
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
ComponentFile::~ComponentFile()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
const string& ComponentFile::ID() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    return iID;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
}
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
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
const string& ComponentFile::FileName() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
    return iName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
/**
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
const string& ComponentFile::Path() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
    return iPath;
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
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
void ComponentFile::SetID(const string& ID)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
    iID = ID;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
void ComponentFile::SetFileName(const string& name)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    iName = name;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
/**
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
void ComponentFile::SetPath(const string& path)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    iPath = path;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
Component* ComponentFile::GetComponent() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    return iComponent;
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
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
void ComponentFile::SetComponent(Component* comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    iComponent = comp;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   156
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
string ComponentFile::ForcedInclude()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
return iForcedInclude;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
pair<string,string>& ComponentFile::APIinfo()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    return iApiInfo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
const ComponentFile& ComponentFile::operator= (const ComponentFile& rhs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    if( &rhs != this )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
        iID = rhs.ID();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
        iName = rhs.FileName();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
        iPath = rhs.Path();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
        iComponent = rhs.GetComponent();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    return *this;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   183
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
bool ComponentFile::operator== (const ComponentFile& rhs) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
    return  iID == rhs.ID() &&
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
//            iName == rhs.iName &&
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
//            iPath == rhs.iPath &&
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
            iComponent == iComponent;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
}
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
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
void ComponentFile::ProcessAttributes(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    // Read "fileid"-attribute:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    const XMLCh* fileIdAttr = GetAttribute(node, XML_FILE_ID_ATTRIBUTE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
    if( fileIdAttr )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
        string str(toString(fileIdAttr));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
        iID = FixPathString(toLower(str));        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
 * Reads child elements from the parsed XML (DOM) data. This baseclass implementation
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
 * processes the "filename", "relativepath" and "include" elements, which are common 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
 * to all component files.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
bool ComponentFile::ProcessChildElement(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
{    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
    if( node->getNodeType() != DOMNode::ELEMENT_NODE )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
        return false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    bool properChild = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
    const XMLCh* elementtype = node->getNodeName();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
    if( elementtype )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
        string elemtypeStr(toString(elementtype));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
		//Handle the API info.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
		if( elemtypeStr == PLATFORM_ELEMENT_API_NAME )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
			XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* apiNode = (DOMElement*)node;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
			char* apiname = _X( apiNode->getAttribute( _X( "name" ) ) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
			char* apiCategory = _X( apiNode->getAttribute( _X( "category" ) ) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
			iApiInfo.first = apiname;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
			iApiInfo.second = apiCategory;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
			_XX(apiname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
			_XX(apiCategory);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
        if( elemtypeStr == PLATFORM_ELEMENT_INCLUDE )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
            // Handle include element
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
            const XMLCh* nodeVal = node->getTextContent();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
            if( nodeVal )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
                string tempStr(toString(nodeVal));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
                iIncludes.push_back(FixPathString(toLower(tempStr)));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
                properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
        else if( elemtypeStr == PLATFORM_ELEMENT_INCLUDEPATH )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
            // Include paths:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
            const XMLCh* nodeVal = node->getTextContent();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
            if( nodeVal )
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 tempStr(toString(nodeVal));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
                iIncludePaths.push_back(FixPathString(toLower(tempStr)));                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
                properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
        else if( elemtypeStr == PLATFORM_ELEMENT_FORCEDINCLUDE )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
            // Forced Include:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
            const XMLCh* nodeVal = node->getTextContent();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
            if( nodeVal )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
                iForcedInclude=toString(nodeVal);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
                properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
    return properChild;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   272
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   273
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   274
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
const vector<string>& ComponentFile::IncludePaths() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
    return iIncludePaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
void ComponentFile::AddIncludePath(const string& incPath)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
    if( IsObjectInVector<string>(iIncludePaths, incPath) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
        iIncludePaths.push_back(incPath);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
const vector<string>& ComponentFile::Includes() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
    return iIncludes;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
void ComponentFile::AddInclude(const string& incHdr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
    if( IsObjectInVector<string>(iIncludes, incHdr) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
        iIncludes.push_back(incHdr);
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
void ComponentFile::SetIncludes(const vector<string>& incs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
    iIncludes = incs;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
ParsedElement::ParsedElement()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
ParsedElement::~ParsedElement()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   312
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   313
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   314
 * Initializes the element using parsed XML (DOM) data. This method initiates
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
 * attribute processing, child element processing and adds the element to
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
 * the platform data object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
bool ParsedElement::Initialize(DOMNode* node, PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
    if( node == 0 || platform == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
        return false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
    iRootDir = platform->GetRootDir();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
    // Read and process attributes of xml-element:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
    ProcessAttributes(node);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
    // Process child elements:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
    DOMNodeList* childNodes = node->getChildNodes();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
    XMLSize_t childListLen = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
    if( childNodes )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
        childListLen = childNodes->getLength();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
        for( XMLSize_t cI = 0; cI < childListLen; ++cI )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
            DOMNode* childNode = childNodes->item(cI);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
            if( childNode )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
            {                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
                ProcessChildElement(childNode, platform);                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
    // Add this element to a proper container of the platform data object:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
    return AddToPlatform(platform);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
Project::Project()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   355
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   356
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   357
Project::Project(const string& prjID, Component* comp) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
: ComponentFile(prjID, comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
Project::~Project()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   365
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   366
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   367
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
 * Adds this project element to platform's project list.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
bool Project::AddToPlatform(PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
    return platform->AddProject(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
 * Processes the given child element. Project can have following
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
 * child elements:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
 *  - includepath
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
 *  - source
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
bool Project::ProcessChildElement(DOMNode* child, PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
{   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
    if( ComponentFile::ProcessChildElement(child, platform) == true )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
        return true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
    bool properChild = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
    const XMLCh* childtype = child->getNodeName();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
    if( childtype )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
        string childtypeStr(toString(childtype));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
        const XMLCh* nodeVal = child->getTextContent();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
        if( nodeVal )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
        {                        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
            if( childtypeStr == PLATFORM_ELEMENT_SOURCE )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
                Source* srcObj = new Source();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
                if( srcObj->Initialize(child, platform) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
                    iSourceObjs.push_back(srcObj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
                    properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
                }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
                else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
                    delete srcObj;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
    return properChild;
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
/**
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
const FileList& Project::Sources() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
    return iSourceObjs;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   418
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   419
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   420
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   421
string Project::PrettyPrint(int indentSpaces) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
    string ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
    ret += string("Project ID: ") + iID + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
    ret += "Sources:\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
    for( FileList::const_iterator s = iSourceObjs.begin(); s != iSourceObjs.end(); ++s )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
        ret += (*s)->PrettyPrint(indentSpaces+2);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   439
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   440
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   441
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
 * Header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
Header::Header()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
iCachedIncludes(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
iCachedIncludePaths(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
iCachedForcedInclude("")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   451
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   452
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   453
Header::Header(const string& hdrID, Component* comp) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
: 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
ComponentFile(hdrID, comp),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
iCachedIncludes(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
iCachedIncludePaths(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
iCachedForcedInclude("")
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
Header::~Header()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
{ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
    delete iCachedIncludes;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
    delete iCachedIncludePaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   469
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   470
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   471
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
Header::STATUS Header::Status() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   474
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   475
    return iStatus;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   476
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   477
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   478
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   479
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   480
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   481
void Header::SetStatus(Header::STATUS s)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   482
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   483
    iStatus = s;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   484
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   485
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   486
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   487
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   488
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   489
bool Header::AddToPlatform(PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   490
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   491
    return platform->AddHeader(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   492
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   493
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   494
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   495
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   496
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   497
string Header::PrettyPrint(int indentSpaces) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   498
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   499
    string ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   500
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   501
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   502
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   503
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   504
    ret += string("Header ID: ") + iID + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   505
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   506
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   507
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   508
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   509
void Header::ProcessAttributes(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   510
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   511
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   512
     * Header element uses absolute path as a key, since that way it is easier
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   513
     * to map this element to the filenames used in Analyser. Absolute path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   514
     * is calculated merging the root directories given in parameters (i.e BASELINEDIR
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   515
     * and CURRENTDIR).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   516
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   517
    const XMLCh* fileIdAttr = GetAttribute(node, XML_FILE_ID_ATTRIBUTE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   518
    if( fileIdAttr )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   519
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   520
        string tempStr(toString(fileIdAttr));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   521
        FixPathString(toLower(tempStr));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   522
        // Merge root and element directories.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   523
        // START -- Support for multiple header directories --
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   524
        list<pair<string, bool> > fullID = BBCFileUtils::MergeDirs(iRootDir, tempStr);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   525
        list<pair<string, bool> >::iterator fulliterbegin = fullID.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   526
        for(; fulliterbegin != fullID.end(); fulliterbegin++)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   527
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   528
          if( fulliterbegin->second )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   529
          {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   530
            iID = fulliterbegin->first;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   531
          }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   532
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   533
        // END -- Support for multiple header directories --
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   534
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   535
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   536
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   537
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   538
 * When IncludesForHeader() method of PlatformData is called, PlatformData
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   539
 * retrieves the additional include directives from all the sources in the 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   540
 * component and caches the include directives to Header object, so next 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   541
 * time the retrival is faster. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   542
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   543
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   544
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   545
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   546
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   547
const vector<string>* Header::CachedIncludes() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   548
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   549
    return iCachedIncludes;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   550
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   551
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   552
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   553
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   554
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   555
void Header::SetCachedIncludes(vector<string>* incs)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   556
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   557
    if( iCachedIncludes )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   558
        delete iCachedIncludes;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   559
    iCachedIncludes = incs;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   560
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   561
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   562
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   563
 * When IncludesPathsForHeader() method of PlatformData is called, PlatformData
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   564
 * retrieves the include paths from all the projects in the component and 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   565
 * caches the include paths to Header object, so next time the retrival is
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   566
 * faster.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   567
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   568
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   569
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   570
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   571
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   572
const vector<string>* Header::CachedIncludePaths() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   573
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   574
    return iCachedIncludePaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   575
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   576
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   577
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   578
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   579
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   580
void Header::SetCachedIncludePaths(vector<string>* incPaths)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   581
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   582
    if( iCachedIncludePaths )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   583
        delete iCachedIncludePaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   584
    iCachedIncludePaths = incPaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   585
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   586
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   587
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   588
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   589
 * When IncludesForHeader() method of PlatformData is called, PlatformData
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   590
 * retrieves the additional forced include directive from the component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   591
 * and caches the forced include directive to Header object, so next 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   592
 * time the retrival is faster. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   593
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   594
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   595
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   596
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   597
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   598
string Header::CachedForcedInclude() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   599
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   600
    return iCachedForcedInclude;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   601
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   602
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   603
string Header::CachedSource() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   604
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   605
	return iCacheSrcObj;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   606
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   607
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   608
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   609
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   610
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   611
void Header::SetCachedForcedInclude(string finc)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   612
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   613
    iCachedForcedInclude = finc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   614
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   615
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   616
void Header::SetCachedSourceFile (string srcObj)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   617
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   618
	iCacheSrcObj = srcObj;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   619
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   620
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   621
 * Source
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   622
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   623
Source::Source()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   624
{}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   625
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   626
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   627
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   628
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   629
Source::Source(const string& srcID, Component* comp) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   630
: ComponentFile(srcID, comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   631
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   632
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   633
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   634
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   635
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   636
Source::~Source()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   637
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   638
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   639
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   640
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   641
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   642
bool Source::AddToPlatform(PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   643
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   644
    return platform->AddSource(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   645
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   646
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   647
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   648
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   649
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   650
string Source::PrettyPrint(int indentSpaces) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   651
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   652
    string ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   653
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   654
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   655
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   656
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   657
    ret += string("Source ID: ") + iID + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   658
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   659
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   660
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   661
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   662
    ret += "Include directives:\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   663
    for( vector<string>::const_iterator inc = iIncludes.begin(); inc != iIncludes.end(); ++inc )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   664
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   665
        for( int i = 0; i < indentSpaces+2; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   666
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   667
            ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   668
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   669
        ret += *inc + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   670
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   671
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   672
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   673
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   674
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   675
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   676
 * Component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   677
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   678
Component::Component()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   679
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   680
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   681
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   682
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   683
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   684
Component::Component(const string& compID, Component* comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   685
: 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   686
ComponentFile(compID, comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   687
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   688
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   689
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   690
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   691
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   692
Component::~Component()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   693
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   694
   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   695
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   696
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   697
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   698
const FileList& Component::Headers() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   699
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   700
    return iHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   701
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   702
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   703
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   704
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   705
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   706
FileList& Component::Headers()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   707
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   708
    return iHeaders;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   709
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   710
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   711
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   712
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   713
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   714
const FileList& Component::Projects() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   715
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   716
    return iProjects;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   717
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   718
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   719
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   720
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   721
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   722
FileList& Component::Projects()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   723
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   724
    return iProjects;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   725
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   726
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   727
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   728
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   729
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   730
void Component::AddHeader(ComponentFile* hdr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   731
{ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   732
    if( IsObjectInVector<ComponentFile*>(iHeaders, hdr) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   733
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   734
        iHeaders.push_back(hdr);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   735
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   736
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   737
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   738
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   739
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   740
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   741
void Component::AddProject(ComponentFile* prj)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   742
{ 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   743
    if( IsObjectInVector<ComponentFile*>(iProjects, prj) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   744
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   745
        iProjects.push_back(prj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   746
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   747
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   748
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   749
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   750
 * Processes child elements. Component can have following child elements:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   751
 *  - Header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   752
 *  - Project reference
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   753
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   754
bool Component::ProcessChildElement(DOMNode* child, PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   755
{   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   756
    if( ComponentFile::ProcessChildElement(child, platform) == true )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   757
        return true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   758
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   759
    bool properChild = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   760
    const XMLCh* childtype = child->getNodeName();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   761
    if( childtype )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   762
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   763
        string childtypeStr(toString(childtype));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   764
        if( childtypeStr == PLATFORM_ELEMENT_HEADER )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   765
        {            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   766
            Header* hdr = new Header();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   767
			string headerID(this->ID());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   768
            if( hdr->Initialize(child, platform) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   769
			{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   770
				if(headerID == PLATFORM_IGNORED_COMPONENT )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   771
					hdr->SetStatus(Header::HDR_STATUS_IGNORE);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   772
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   773
				XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* hdrNode = (DOMElement*)child;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   774
				char* headername = _X( hdrNode->getAttribute( _X( "id" ) ) );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   775
				string header (headername);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   776
				header = FixPathString(toLower(header)); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   777
				int loc = header.find_last_of(DIR_SEPARATOR);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   778
				if(loc != -1 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   779
				{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   780
					// store header file name and path from header id tag only.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   781
					hdr->SetFileName(header.substr(loc+1,string::npos));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   782
					hdr->SetPath(header.substr(0,loc));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   783
				}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   784
				_XX(headername);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   785
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   786
				hdr->SetComponent(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   787
				iHeaders.push_back(hdr);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   788
				properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   789
			}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   790
            else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   791
            {                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   792
                delete hdr;                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   793
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   794
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   795
        else if( childtypeStr == PLATFORM_ELEMENT_PROJECT )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   796
        {            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   797
            Project* prj = new Project();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   798
            if (prj->Initialize(child, platform) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   799
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   800
                prj->SetComponent(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   801
                iProjects.push_back(prj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   802
                properChild = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   803
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   804
            else
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   805
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   806
                delete prj;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   807
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   808
        }       
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   809
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   810
    return properChild;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   811
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   812
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   813
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   814
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   815
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   816
bool Component::AddToPlatform(PlatformData* platform)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   817
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   818
    return platform->AddComponent(this);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   819
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   820
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   821
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   822
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   823
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   824
string Component::PrettyPrint(int indentSpaces) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   825
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   826
    string ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   827
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   828
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   829
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   830
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   831
    ret += string("Component ID: ") + iID + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   832
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   833
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   834
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   835
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   836
    ret += "Headers:\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   837
    for( FileList::const_iterator h = iHeaders.begin(); h != iHeaders.end(); ++h )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   838
    {        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   839
        ret += (*h)->PrettyPrint(indentSpaces+2);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   840
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   841
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   842
    for( int i = 0; i < indentSpaces; ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   843
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   844
        ret += " ";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   845
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   846
    ret += "Projects\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   847
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   848
    for( FileList::const_iterator p = iProjects.begin(); p != iProjects.end(); ++p )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   849
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   850
        ret += (*p)->PrettyPrint(indentSpaces+2);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   851
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   852
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   853
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   854
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   855
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   856
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   857
 * PlatformData contains all the elements defined in the platrofm input file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   858
 * It parses the XML-file and populates the internal containers. It also
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   859
 * has different kind of methods for retrieving the data and the associations
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   860
 * between elements.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   861
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   862
PlatformData::PlatformData(const string& pfVersion, const string& rootDir)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   863
:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   864
iDOMParser(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   865
iDOMDoc(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   866
iDOMRootElement(0),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   867
iPfVersion(pfVersion),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   868
iRootDir(rootDir)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   869
{ }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   870
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   871
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   872
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   873
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   874
PlatformData::~PlatformData()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   875
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   876
    if (iDOMParser != NULL)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   877
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   878
        iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   879
        iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   880
        iDOMParser = NULL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   881
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   882
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   883
    CFileMap::iterator i;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   884
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   885
    for( i = iHeadersById.begin(); i != iHeadersById.end(); ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   886
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   887
        delete i->second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   888
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   889
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   890
    for( i = iProjectsById.begin(); i != iProjectsById.end(); ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   891
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   892
        delete i->second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   893
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   894
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   895
    for( i = iSourcesById.begin(); i != iSourcesById.end(); ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   896
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   897
        delete i->second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   898
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   899
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   900
    for( ComponentList::iterator ic = iCList.begin(); ic != iCList.end(); ++ic )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   901
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   902
        delete ic->second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   903
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   904
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   905
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   906
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   907
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   908
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   909
void PlatformData::Initialize(const string& dataFileName)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   910
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   911
    // First read and parse the XML-file:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   912
    int ret = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   913
    if (iDOMParser != NULL) 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   914
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   915
        iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   916
        iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   917
        iDOMParser = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   918
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   919
    cout << "Parsing platform data for " << iPfVersion << "...";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   920
    try {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   921
        ret = ParseXMLFile(dataFileName, iDOMParser, iDOMDoc, iDOMRootElement);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   922
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   923
    catch (HAException&)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   924
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   925
        cout.flush();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   926
        cerr.flush();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   927
        cerr << "Failed!" << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   928
        if( iDOMParser )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   929
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   930
            iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   931
            iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   932
            iDOMParser = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   933
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   934
        throw;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   935
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   936
    cout << "Done." << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   937
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   938
    // Then traverse the DOM tree and populate the containers:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   939
    cout << "Initializing platform data for " << iPfVersion << "...";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   940
    try {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   941
        InitializeElements();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   942
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   943
    catch( HAException& )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   944
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   945
        cerr << "Failed." << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   946
        iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   947
        iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   948
        iDOMParser = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   949
        throw;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   950
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   951
    cout << "Done." << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   952
    iDOMParser->resetDocumentPool();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   953
    iDOMParser->release();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   954
    iDOMParser = 0;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   955
    cout << "Platform " << iPfVersion << " successfully initialized from platform " << iVersionStr << " data!"  << endl << endl;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   956
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   957
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   958
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   959
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   960
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   961
bool PlatformData::AddComponent(Component* comp)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   962
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   963
    return iCList.insert(make_pair<string, Component*>( comp->ID(), comp )).second;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   964
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   965
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   966
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   967
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   968
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   969
bool PlatformData::AddProject(Project* prj)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   970
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   971
    if( iProjectsById.insert(make_pair<string, ComponentFile*>(prj->ID(), prj)).second == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   972
        return false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   973
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   974
    return true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   975
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   976
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   977
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   978
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   979
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   980
bool PlatformData::AddSource(Source* src)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   981
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   982
    if( iSourcesById.insert(make_pair<string, ComponentFile*>(src->ID(), src)).second == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   983
        return false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   984
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   985
    return true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   986
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   987
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   988
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   989
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   990
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   991
bool PlatformData::AddHeader(Header* hdr)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   992
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   993
    if( iHeadersById.insert(make_pair<string, ComponentFile*>(hdr->ID(), hdr)).second == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   994
        return false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   995
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   996
    return true;
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
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1000
 * Factory method for creating element objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1001
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1002
ParsedElement* PlatformData::CreateElement( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1003
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1004
    const string elementType( toString( node->getNodeName() ));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1005
    ParsedElement* elem = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1006
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1007
    if( elementType == PLATFORM_ELEMENT_COMPONENT )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1008
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1009
        elem = new Component();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1010
    }                
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1011
    else if( elementType == PLATFORM_ELEMENT_PROJECT )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1012
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1013
        elem = new Project();            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1014
    }        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1015
    else if( elementType == PLATFORM_ELEMENT_SOURCE )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1016
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1017
        elem = new Source();            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1018
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1019
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1020
    return elem;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1021
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1022
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1023
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1024
 * Traverses through the DOM-tree and builds element objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1025
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1026
void PlatformData::InitializeElements()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1027
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1028
    if( iDOMDoc == 0 || iDOMRootElement == 0)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1029
        throw HAException(string("Platform ") + string(iPfVersion) + string(" initialization failed.\n"));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1030
    DOMNodeIterator* domIter = iDOMDoc->createNodeIterator(iDOMRootElement, DOMNodeFilter::SHOW_ELEMENT, NULL, true);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1031
    if( domIter == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1032
        throw HAException(string("Platform ") + string(iPfVersion) + string(" initialization failed.\n"));
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1033
    DOMNode* root = domIter->getRoot();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1034
    if( root )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1035
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1036
        const XMLCh* platformVersion = GetAttribute(root, KXMLPlatformVersion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1037
        if( platformVersion )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1038
            iVersionStr = toString(platformVersion);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1039
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1040
    DOMNode* nodeIter = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1041
    ParsedElement* elem = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1042
    while( (nodeIter = domIter->nextNode()) != 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1043
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1044
        elem = CreateElement(nodeIter);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1045
        if( elem && elem->Initialize(nodeIter, this) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1046
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1047
            delete elem;            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1048
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1049
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1050
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1051
    domIter->release();
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
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1055
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1056
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1057
const CFileMap& PlatformData::HeadersById() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1058
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1059
    return iHeadersById;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1060
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1061
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1062
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1063
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1064
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1065
const CFileMap& PlatformData::ProjectsById() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1066
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1067
    return iProjectsById;
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
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1072
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1073
CFileMap& PlatformData::ProjectsById()
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1074
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1075
    return iProjectsById;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1076
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1077
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1078
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1079
 * 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1080
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1081
const CFileMap& PlatformData::SourcesById() const
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 iSourcesById;
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
 * Finds include paths defined in the projects belonging to the 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1088
 * same component than the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1089
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1090
const vector<string>& PlatformData::IncludePathsForHeader(const string& headerID)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1091
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1092
    CFileMap::const_iterator hdrIter = iHeadersById.find(headerID);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1093
    if( hdrIter != iHeadersById.end() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1094
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1095
        Header* hdrObj = dynamic_cast<Header*>(hdrIter->second);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1096
        if( hdrObj )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1097
            return IncludePathsForHeader(hdrObj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1098
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1099
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1100
    return iDummyStringVector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1101
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1102
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1103
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1104
 * Finds include paths defined in the projects belonging to the 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1105
 * same component than the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1106
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1107
const vector<string>& PlatformData::IncludePathsForHeader(Header* hdrObj)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1108
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1109
    if( hdrObj == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1110
        return iDummyStringVector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1111
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1112
    // First try to find includes from the cache:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1113
    const vector<string>* cached = hdrObj->CachedIncludePaths();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1114
    if( cached )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1115
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1116
        return *cached;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1117
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1118
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1119
    auto_ptr<vector<string> > newVector(new vector<string>());        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1120
    Component* comp = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1121
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1122
    if( (comp = hdrObj->GetComponent()) != 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1123
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1124
        // First insert the include paths defined in component level:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1125
        newVector->insert(newVector->end(), comp->IncludePaths().begin(),  comp->IncludePaths().end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1126
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1127
        const FileList& prjs = comp->Projects();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1128
        for( FileList::const_iterator prj = prjs.begin(); prj != prjs.end(); ++prj )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1129
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1130
            Project* prjObj = dynamic_cast<Project*>(*prj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1131
            if( prjObj )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1132
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1133
                const vector<string>& iPaths = prjObj->IncludePaths();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1134
                vector<string>::const_iterator ip = iPaths.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1135
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1136
                for( ; ip != iPaths.end(); ++ip )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1137
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1138
                    if( !IsObjectInVector(*newVector, *ip) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1139
                    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1140
                        newVector->push_back(*ip);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1141
                    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1142
                }
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1147
    const vector<string>& hdrIncs = hdrObj->IncludePaths();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1148
    for( vector<string>::const_iterator i = hdrIncs.begin(); i != hdrIncs.end(); ++i )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1149
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1150
        if( !IsObjectInVector(*newVector, *i) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1151
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1152
            newVector->push_back(*i);
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
    // variable to track whether project has been found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1157
    bool found = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1158
    // Find a project in the platform data which includes the header under analysis and
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1159
    // add all paths in the mmp file as dependencies before compilation. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1160
    for( CFileMap::const_iterator pIter = iProjectsById.begin(); pIter != iProjectsById.end() && !found; ++pIter )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1161
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1162
        //First iterate over projects
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1163
        Project* prj = dynamic_cast<Project*>(pIter->second);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1164
        const FileList& src = prj->Sources();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1165
        FileList::const_iterator sIter = src.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1166
        for(;sIter != src.end() && !found; ++sIter)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1167
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1168
            // then search each source include in individual projects
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1169
            Source* so = dynamic_cast<Source*>(*sIter);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1170
            const vector<string>& inc = so->Includes();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1171
            vector<string>::const_iterator iIter = inc.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1172
            for(;iIter != inc.end() && !found; ++iIter)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1173
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1174
                string::size_type dirEnd = (*iIter).find_last_of('/\\');
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1175
                // IF header found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1176
                if( (dirEnd == string::npos && *iIter == hdrObj->FileName()) ||
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1177
                    (dirEnd != string::npos && string((*iIter).begin()+dirEnd+1, (*iIter).end()) == hdrObj->FileName()))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1178
                {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1179
                    const vector<string>& tmp = prj->IncludePaths();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1180
					if( IsObjectInVector<string>(tmp, hdrObj->Path()) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1181
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1182
						vector<string>::const_iterator str = tmp.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1183
						for(;str != prj->IncludePaths().end(); ++str)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1184
						{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1185
							// only include paths which are not already present
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1186
							if( !IsObjectInVector<string>(*newVector, *str) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1187
							{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1188
								newVector->insert(newVector->end(), *str);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1189
								found = true;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1190
							}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1191
						}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1192
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1193
                }
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
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1197
    hdrObj->SetCachedIncludePaths(newVector.release());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1198
    return *(hdrObj->CachedIncludePaths());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1199
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1200
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1201
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1202
 * Finds include directives used with this header when the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1203
 * is compiled. Algorithm finds the <code>Header</code> object using 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1204
 * the given ID and then calls overloaded <code>IncludesForHeader</code> 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1205
 * using the <code>Header</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1206
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1207
const vector<string>& PlatformData::IncludesForHeader( const string& headerID )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1208
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1209
    CFileMap::const_iterator hdrIter = iHeadersById.find(headerID);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1210
    if( hdrIter != iHeadersById.end() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1211
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1212
        Header* hObj = dynamic_cast<Header*>(hdrIter->second);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1213
        if( hObj )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1214
            return IncludesForHeader(hObj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1215
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1216
    return iDummyStringVector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1217
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1218
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1219
void PlatformData::IncludesFromSource(const Header* hObj, const Source* srcObj, vector<string>& includes) const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1220
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1221
    const vector<string>& includeDirectives = srcObj->Includes();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1222
    vector<string>::const_iterator inc = includeDirectives.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1223
    for( ; inc != includeDirectives.end(); ++inc )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1224
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1225
        string::size_type dirEnd = (*inc).find_last_of("/\\");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1226
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1227
        if( (dirEnd == string::npos && *inc == hObj->FileName()) ||
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1228
            (dirEnd != string::npos && string(inc->begin()+dirEnd+1, inc->end()) == hObj->FileName()))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1229
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1230
            // The header was found. Take all the preceding include directives:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1231
            for( vector<string>::const_iterator tempIt = includeDirectives.begin(); tempIt != inc; ++tempIt)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1232
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1233
                if( IsObjectInVector(includes, *tempIt) == false )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1234
                {                            
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1235
                    includes.push_back(*tempIt);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1236
                }        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1237
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1238
            break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1239
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1240
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1241
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1242
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1243
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1244
 * Finds include directives used with this header when the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1245
 * is compiled. Algorithm find first all the projects belonging
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1246
 * to the same component than the given <code>Header</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1247
 * Then it finds all the source files belonging to the projects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1248
 * Then it scans the source files and if a source file includes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1249
 * this header, all the preceding include directives in that source
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1250
 * file are inserted to the result vector.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1251
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1252
 * An example:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1253
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1254
 * Header, id: epoc32/include/hdr1.h, belongs to component c, which
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1255
 * contains one project p.mmp. Project p.mmp contains two source files:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1256
 * s1.cpp and s2.cpp. Source s1.cpp includes hdrX.h, hdrY.h and hdr1.h 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1257
 * (in that order). Source s2.cpp does not include the hdr1.h at all.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1258
 * The returned headers in above example would be hdrX.h and hdrY.h.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1259
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1260
const vector<string>& PlatformData::IncludesForHeader(Header* hObj, Header* baseHObj)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1261
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1262
	string tempSpurceObj;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1263
    if( hObj == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1264
        return iDummyStringVector;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1265
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1266
    if( hObj->CachedIncludes() != 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1267
        return *(hObj->CachedIncludes());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1268
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1269
           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1270
    // Start build new include list:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1271
    auto_ptr<vector<string> > newVector(new vector<string>());        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1272
    Component* comp = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1273
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1274
    if( (comp = hObj->GetComponent()) != 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1275
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1276
        //set the forced header for this header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1277
        hObj->SetCachedForcedInclude(comp->ForcedInclude());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1278
        // Insert include directives defined in component level:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1279
        newVector->insert(newVector->end(), comp->Includes().begin(), comp->Includes().end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1280
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1281
        // Then find all the sources that are including this header and get all the preceding include
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1282
        // directives from the sources. The shortest list will do.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1283
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1284
        const FileList& projects = comp->Projects(); // All the projects in this component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1285
        FileList::const_iterator fIter = projects.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1286
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1287
        // Get needed source files from the projects of this component:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1288
        FileList srcObjs;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1289
        for( ; fIter != projects.end(); ++fIter )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1290
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1291
            Project* prj = dynamic_cast<Project*>(*fIter);        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1292
            if( prj )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1293
            {                    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1294
                srcObjs.insert(srcObjs.end(), prj->Sources().begin(), prj->Sources().end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1295
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1296
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1297
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1298
        // Next we investigate the include directives of each source file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1299
        // and get all the headers that are included before the given 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1300
        // header file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1301
        auto_ptr<vector<string> > includesFromSrc(0);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1302
        for( FileList::iterator src = srcObjs.begin(); src != srcObjs.end(); ++src )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1303
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1304
            Source* srcObj = dynamic_cast<Source*>(*src);        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1305
            if( srcObj == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1306
                continue;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1307
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1308
            const vector<string>& includeDirectives = srcObj->Includes();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1309
            vector<string>::const_iterator inc = includeDirectives.begin();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1310
            auto_ptr<vector<string> > tmpIncludes(new vector<string>());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1311
           
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1312
            IncludesFromSource(hObj, srcObj, *tmpIncludes);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1313
            if( includesFromSrc.get() == 0 ||
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1314
                (tmpIncludes->size() > 0 && (tmpIncludes->size() < includesFromSrc->size() || includesFromSrc->size()==0) ))
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1315
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1316
				tempSpurceObj = srcObj->ID();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1317
                includesFromSrc = tmpIncludes; // Get the smallest possible set of additional includes.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1318
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1319
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1320
        if( includesFromSrc.get() )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1321
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1322
            newVector->insert(newVector->end(), includesFromSrc->begin(), includesFromSrc->end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1323
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1324
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1325
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1326
    if( newVector->size() == 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1327
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1328
        // No includes found. Let's try to find some source from other components. First one will do...
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1329
        for( CFileMap::const_iterator s = iSourcesById.begin(); s != iSourcesById.end(); ++s )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1330
        {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1331
            auto_ptr<vector<string> > tmpIncludes(new vector<string>());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1332
            Source* sO = dynamic_cast<Source*>(s->second);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1333
            if( sO )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1334
            {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1335
                IncludesFromSource(hObj, sO, *tmpIncludes);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1336
                if( tmpIncludes->size() > 0 )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1337
				{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1338
					string curSrc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1339
					string baseSrc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1340
					if ( baseHObj != NULL) // IncludesForHeader() is called for current sdk
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1341
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1342
						string::size_type loc = sO->ID().find_last_of('/\\');
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1343
						if(loc != string::npos )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1344
							curSrc = sO->ID().substr(loc+1 , string::npos);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1345
						loc = string::npos;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1346
						loc = baseHObj->CachedSource().find_last_of('/\\');
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1347
						if(loc != string::npos)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1348
							baseSrc = baseHObj->CachedSource().substr(loc+1, string::npos);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1349
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1350
					// If the header is of baseline sdk or the current headers source file name is same as baseline's source file,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1351
					// In both of these cases , the dependent headers will be taken from platform data file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1352
					if(baseHObj == NULL || (baseSrc.size() > 0 && baseSrc == curSrc) )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1353
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1354
						newVector->insert(newVector->end(), tmpIncludes->begin(), tmpIncludes->end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1355
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1356
					else // as current header's source file is not same as basiline's, so baseline's cacheinclude will be taken for current header too.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1357
					{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1358
						newVector->insert(newVector->end(), baseHObj->CachedIncludes()->begin(), baseHObj->CachedIncludes()->end());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1359
					}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1360
					break;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1361
				}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1362
            }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1363
        }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1364
    }    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1365
    hObj->SetCachedIncludes(newVector.release());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1366
	if(baseHObj == NULL) // IncludesForHeader() is called for baseline sdk, so get the source file name in cache
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1367
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1368
		hObj->SetCachedSourceFile(tempSpurceObj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1369
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1370
    return *(hObj->CachedIncludes());
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1371
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1372
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1373
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1374
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1375
string PlatformData::PrettyPrint() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1376
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1377
    string ret("PLATFORM version: ");
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1378
    ret += iVersionStr + "\n";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1379
   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1380
    for( ComponentList::const_iterator c = iCList.begin(); c != iCList.end(); ++c )
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1381
    {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1382
        ret += c->second->PrettyPrint();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1383
    }
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1384
    return ret;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1385
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1386
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1387
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1388
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1389
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1390
const ComponentList& PlatformData::Components() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1391
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1392
    return iCList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1393
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1394
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1395
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1396
 *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1397
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1398
const string& PlatformData::GetRootDir() const
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1399
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1400
    return iRootDir;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
  1401
}