apicompatanamdw/compatanalysercmd/headeranalyser/src/PlatformData.h
author noe\swadi
Mon, 26 Apr 2010 16:28:13 +0530
changeset 3 ebe3f8f03b59
parent 0 638b9c697799
permissions -rw-r--r--
Compatibility Analyser updated to version 2.8.4. Support for Qt code analysis added.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
/*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
* Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
* Description:  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    18
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    19
#ifndef PLATFORMDATA_H
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define PLATFORMDATA_H
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include <xercesc/dom/DOM.hpp>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
#include <string>
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 <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
class Component;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
class PlatformData;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
typedef vector<string> IncludePaths;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
#define PLATFORM_ELEMENT_COMPONENT      "component"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
#define PLATFORM_ELEMENT_HEADER         "hdr"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
#define PLATFORM_ELEMENT_PROJECT        "prj"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
#define PLATFORM_ELEMENT_SOURCE         "src"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
#define PLATFORM_ELEMENT_FILENAME       "fname"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
#define PLATFORM_ELEMENT_RELPATH        "path"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
#define PLATFORM_ELEMENT_INCLUDEPATH    "incpath"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
#define PLATFORM_ELEMENT_INCLUDE        "inc"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
#define PLATFORM_ELEMENT_FORCEDINCLUDE  "finc"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
#define PLATFORM_IGNORED_COMPONENT     "excluded header list"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
#define PLATFORM_ELEMENT_API_NAME      "api"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
 * Abstract base class for all the elements that are parsed from the 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
 * platform's XML description.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
class ParsedElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
    ParsedElement();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
    virtual ~ParsedElement();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
     * Initializes the element. This must be called before finalizing the element.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
     * @param node Pointer to the DOM node containing the data for the element.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
     * @param platform Pointer to the platform in which this element belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
     * @return true if the initialization was successful, false otherwise.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
    virtual bool Initialize(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
     * For debugging purposes. Prints the data of an element to standard output.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
     * @param indentSpaces Number of indentation spaces to get hierarchical print.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
     * @return string object containing the element's data.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
    virtual string PrettyPrint(int indentSpaces = 0) const = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
     * Processes the attributes of an XML element.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
     * @param node Pointer to the element's DOM data.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    virtual void ProcessAttributes(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node) = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
     * Processes the child elements of an XML element.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
     * @param node Pointer to the element's DOM data.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
     * @param platform Pointer to the platform in which this element belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
    virtual bool ProcessChildElement(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform) = 0;
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
     * Adds this element to the given platform. NOTE! When the addition
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
     * is successful, the platform takes the ownership of this element.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
     * But when the addition is unsuccessful the caller must take care of
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
     * the object deallocation.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
     * @param platform Pointer to the platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
     * @return true, if the addition was successful. False otherwise. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
    virtual bool AddToPlatform(PlatformData* platform) = 0;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    // Platform's root directory. Given in application parameters (i.e BASELINEDIR or CURRENTDIR).
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    string iRootDir;
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
typedef vector<ParsedElement*> ElementVector;
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
 * ComponentFile is a base class for files inside a component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
class ComponentFile : public ParsedElement
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
public:
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
     * Default constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
    ComponentFile();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   114
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   115
     * @param ID Unique file id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   116
     * @param comp Pointer to the <code>Component</code> in which this file belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   117
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   118
    ComponentFile(const string& ID, Component* comp);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   119
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   120
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   121
     * Copy constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
     * @param rhs Reference to the <code>ComponentFile</code> from which the data is copied.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
    ComponentFile(const ComponentFile& rhs);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    virtual ~ComponentFile();
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
     * Returns the file id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
     * @return Reference to a <code>string</code> object representing the file id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
    virtual const string& ID() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
     * Returns the file name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
     * @return Reference to a <code>string</code> object representing the file name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
    virtual const string& FileName() const;        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
     * Returns the path of the file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
     * @return Reference to a <code>string</code> object representing the path.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
    virtual const string& Path() const;
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
     * Sets the file id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
     * @param ID Reference to a <code>string</code> represeting the file id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
    virtual void SetID(const string& ID);
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
     * Sets the file name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   157
     * @param name Reference to a <code>string</code> represeting the file name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   158
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
    virtual void SetFileName(const string& name);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   161
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   162
     * Sets the path.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   163
     * @param path Reference to a <code>string</code> represeting the path.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    virtual void SetPath(const string& path);
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
     * Returns the owner component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   169
     * @return Pointer to the component in which this file belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   170
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   171
    virtual Component* GetComponent() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
     * Sets the owner component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
     * Pointer to the <code>Component</code> object. Does not take the ownership.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
    virtual void SetComponent(Component* comp);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
     * Assignment operator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
    virtual const ComponentFile& operator= (const ComponentFile& rhs);
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
     * Comparison operator
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
    virtual bool operator== (const ComponentFile& rhs) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
     * Returns the include directives defined for this element
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
     * @return Reference to the <code>std::vector</code> containing include directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
    virtual const vector<string>& Includes() const;
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
     * Adds include directive (string) to the object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
     * @param incHdr name of the header to be included
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    virtual void AddInclude(const string& incHdr);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
     * Adds include directives to the object
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
     * @param incs Reference to the <code>std::vector</code> containing the include directives.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    virtual void SetIncludes(const vector<string>& incs);
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
     * Returns the include paths used in compilation of the project
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
     * @return Reference to a <code>vector</code> containing <code>string</code>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
     * objects that represent the include paths.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
    const vector<string>& IncludePaths() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
     * Adds an include path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
     * @param incPath Reference to a <code>string</code> object representing
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
     * the include path.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
    void AddIncludePath(const string& incPath);   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
     * Returns the forced include used in compilation of the component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
     * @return a string object representing the forced include.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
    string ForcedInclude();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
	/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
     * Returns pair of string , with API name and category
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
	pair<string,string>& APIinfo();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
    // From ParsedElement:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
    virtual void ProcessAttributes(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    virtual bool ProcessChildElement(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
    string iID; // File id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
    string iName; // File name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
    string iPath; // Path
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
	pair<string,string> iApiInfo; // API info for the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
    Component* iComponent; // Component, does not own the pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
    vector<string> iIncludes; // Include directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
    vector<string> iIncludePaths; // Include paths
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
    string iForcedInclude; // Forced include
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
typedef vector<ComponentFile*> FileList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
 * This class represents the project. Project belongs to one component and
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
 * has a list of include and source paths as well as the source files 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   254
 * belonging to the project.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   255
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   256
class Project : public ComponentFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   257
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   258
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   259
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   260
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   261
     * Default constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   262
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   263
    Project();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   264
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   265
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   266
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   267
     * @param prjID Project file id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   268
     * @param comp Pointer to the <code>Component</code> object in which 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   269
     * this project belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   270
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   271
    Project(const string& prjID, Component* comp);
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
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   275
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   276
    virtual ~Project();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   277
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   278
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   279
     * Returns the list of <code>Source</code> objects contained by this project
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   280
     * @return Reference to the list of <code>Source</code> objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   281
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   282
    const FileList& Sources() const;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   283
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   284
    // From ParsedElement:    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   285
    virtual string PrettyPrint(int indentSpaces = 0) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   286
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   287
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   288
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   289
    // From ParsedElement:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   290
    virtual bool AddToPlatform(PlatformData* platform);    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   291
    virtual bool ProcessChildElement(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   292
    FileList iSourceObjs; // Source objects belonging to this project
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   293
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   294
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   295
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   296
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   297
 * This class represents the header file, which belongs to one component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   298
 * It has a analysis status telling whether the header should be ignored
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   299
 * from the analysis or it is just being analyzed or the analysis is ready.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   300
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   301
class Header : public ComponentFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   302
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   303
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   304
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   305
    enum STATUS {
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   306
        HDR_STATUS_UNDEF = 0, // Undefined status
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   307
        HDR_STATUS_IGNORE, // Header should be ignored from the analysis
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   308
        HDR_STATUS_TO_BE_ANALYZED, // Header will be analyzed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   309
        HDR_STATUS_READY, // Analysis for the header is ready
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   310
        HDR_STATUS_INVALID,// Invalid header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   311
        HDR_STATUS_FAILED // Analysis and/or compilation failed
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
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   315
     * Default constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   316
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   317
    Header();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   318
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   319
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   320
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   321
     * @param hdrID Header file id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   322
     * @param comp Pointer to the component in which this header belongs.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   323
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   324
    Header(const string& hdrID, Component* comp);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   325
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   326
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   327
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   328
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   329
    virtual ~Header();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   330
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   331
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   332
     * Returns the status of the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   333
     * @return Status of the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   334
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   335
    STATUS Status() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   336
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   337
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   338
     * Sets the status of the header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   339
     * @param s Status of the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   340
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   341
    void SetStatus(STATUS s);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   342
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   343
    // From ParsedElement:    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   344
    virtual string PrettyPrint(int indentSpaces = 0) const;  
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   345
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   346
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   347
     * Returns pointer to the cached include directives. Once the include directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   348
     * are fetched by <code>PlatformData</code>, they are cached for further use to
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   349
     * speed up the analysis.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   350
     *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   351
     * @return Pointer to the <code>std::vector</code> containing cached include
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   352
     * directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   353
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   354
    const vector<string>* CachedIncludes() const;
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
     * Returns pointer to the cached include paths. Once the include paths
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   358
     * are fetched by <code>PlatformData</code>, they are cached for further use to
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   359
     * speed up the analysis.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   360
     *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   361
     * @return Pointer to the <code>std::vector</code> containing cached include
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   362
     * paths
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   363
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   364
    const vector<string>* CachedIncludePaths() const;
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
     * Returns the cached forced include directive. Once the forced include directive
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   368
     * is fetched by <code>PlatformData</code>, it is cached for further use to
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   369
     * speed up the analysis.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   370
     *
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   371
     * @return cached forced include
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   372
     * directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   373
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   374
    string CachedForcedInclude() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   375
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   376
	 /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   377
     * Returns the cached source object for the header. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   378
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   379
	string CachedSource() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   380
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   381
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   382
    /** 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   383
     * Sets cached include directives. Takes the ownership of the given pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   384
     * @param Pointer to the include directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   385
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   386
    void SetCachedIncludes(vector<string>* incs);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   387
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   388
    /** 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   389
     * Sets cached include paths. Takes the ownership of the given pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   390
     * @param Pointer to the include directives
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   391
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   392
    void SetCachedIncludePaths(vector<string>* incPaths);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   393
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   394
    /** 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   395
     * Sets cached forced include directive.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   396
     * @param Forced include directive
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   397
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   398
    void SetCachedForcedInclude(string finc);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   399
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   400
	/** 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   401
     * Sets cached soource file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   402
     * @param source File
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   403
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   404
	void SetCachedSourceFile (string srcObj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   405
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   406
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   407
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   408
    // From ParsedElement:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   409
    virtual void ProcessAttributes(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node);    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   410
    virtual bool AddToPlatform(PlatformData* platform);        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   411
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   412
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   413
    STATUS iStatus; // Header's status
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   414
    vector<string>* iCachedIncludes; // Cached additional include directives. Owns the pointer!!
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   415
    vector<string>* iCachedIncludePaths; // Cached include paths. Owns the pointer!!
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   416
    string iCachedForcedInclude; // Cached forced include.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   417
	string iCacheSrcObj;
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
 * This class represents the source file belonging to a component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   422
 * It has a list of include directives.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   423
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   424
class Source : public ComponentFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   425
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   426
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   427
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   428
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   429
     * Default constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   430
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   431
    Source();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   432
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   433
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   434
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   435
     * @param srcID Source file id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   436
     * @param comp Pointer to the component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   437
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   438
    Source(const string& srcID, Component* comp);
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
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   442
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   443
    virtual ~Source();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   444
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   445
    // From ParsedElement:    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   446
    virtual string PrettyPrint(int indentSpaces = 0) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   447
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   448
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   449
    // From ParsedElement:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   450
    virtual bool AddToPlatform(PlatformData* platform);        
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
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   454
 * Component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   455
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   456
class Component : public ComponentFile
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   457
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   458
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   459
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   460
     * Default constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   461
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   462
    Component();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   463
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   464
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   465
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   466
     * @param compID Unique component ID
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   467
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   468
    Component(const string& compID, Component* comp);
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
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   472
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   473
    virtual ~Component();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   474
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   475
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   476
     * Returns the header objects belonging to this component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   477
     * @return Header objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   478
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   479
    const FileList& Headers() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   480
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   481
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   482
     * Returns the header objects belonging to this component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   483
     * @return Header objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   484
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   485
    FileList& Headers();
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
     * Returns the project objects belonging to this component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   489
     * @return Project objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   490
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   491
    const FileList& Projects() const;
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
     * Returns the project objects belonging to this component.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   495
     * @return Project objects.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   496
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   497
    FileList& Projects();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   498
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   499
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   500
     * Adds <code>Header</code> object to the component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   501
     * @param hdr Pointer to the <code>Header</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   502
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   503
    void AddHeader(ComponentFile* hdr); 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   504
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   505
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   506
     * Adds <code>Project</code> object to the component
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   507
     * @param hdr Pointer to the <code>Project</code> object.
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 AddProject(ComponentFile* prj);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   510
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   511
    // From ParsedElement:    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   512
    virtual string PrettyPrint(int indentSpaces = 0) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   513
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   514
protected:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   515
    // From ParsedElement:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   516
    virtual bool AddToPlatform(PlatformData* platform);   
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   517
    virtual bool ProcessChildElement(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, PlatformData* platform);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   518
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   519
    FileList iHeaders; // Header objects
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   520
    FileList iProjects; // Project objects
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   521
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   522
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   523
typedef map<string, ComponentFile*> CFileMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   524
typedef map<string, Component*> ComponentList;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   525
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   526
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   527
 * PlatformData class represents the platform specific data that is needed
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   528
 * in compilation of platform's header files.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   529
 * This class contains methods that offer different views to the platform data
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   530
 * in order to enable efficient data processing for the clients.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   531
 */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   532
class PlatformData
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   533
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   534
public:
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
     * Constructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   538
     * @param pfVersion Platform version given in application parameters.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   539
     * @param rootDir Platform's root directory given in application parameters.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   540
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   541
    PlatformData(const string& pfVersion, const string& rootDir);
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
     * Destructor
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   545
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   546
    virtual ~PlatformData();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   547
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   548
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   549
     * Initializes the platform data. This method reads and parses the 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   550
     * platform data from the given file and sorts the data in private
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   551
     * containers for later use. 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   552
     * @param dataFileName Platform data file name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   553
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   554
    void Initialize(const string& dataFileName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   555
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   556
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   557
     * Returns headers sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   558
     * @return Reference to the <code>CFileMap</code> object containing the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   559
     * headers sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   560
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   561
    const CFileMap& HeadersById() const;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   562
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   563
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   564
     * Returns headers having the given status sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   565
     * @param hdrStatus Header status. All the headers having this status 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   566
     * are returned.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   567
     * @param Reference to the <code>CFileMap</code> object in which the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   568
     * the headers matching the hdrStatus are returned.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   569
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   570
    void HeadersByStatus(Header::STATUS hdrStatus, CFileMap& hdrFiles) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   571
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   572
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   573
     * Returns projects sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   574
     * @return Reference to the <code>CFileMap</code> object containing the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   575
     * projects sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   576
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   577
    const CFileMap& ProjectsById() const;
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
     * Returns projects sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   581
     * @return Reference to the <code>CFileMap</code> object containing the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   582
     * projects sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   583
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   584
    CFileMap& ProjectsById();
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
     * Returns sources sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   588
     * @return Reference to the <code>CFileMap</code> object containing the
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   589
     * sources sorted by their file ids.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   590
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   591
    const CFileMap& SourcesById() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   592
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   593
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   594
     * Gets include paths needed in compilation of the given header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   595
     * @param headerID ID of the header file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   596
     * @param incPaths Include paths needed in compilation of the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   597
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   598
    const vector<string>& IncludePathsForHeader(const string& headerID);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   599
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   600
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   601
     * Gets include paths needed in compilation of the given header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   602
     * @param headerObj Pointer to the header file object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   603
     * @param incPaths Include paths needed in compilation of the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   604
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   605
    const vector<string>& IncludePathsForHeader(Header* headerObj);
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
     * Gets additional include directives needed in compilation of the given header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   609
     * @param headerID ID of the header file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   610
     * @param incs Include directives needed in compilation of the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   611
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   612
    const vector<string>& IncludesForHeader(const string& headerID);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   613
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   614
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   615
     * Gets additional include directives needed in compilation of the given header
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   616
     * @param headerObj Pointer to the header file object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   617
     * @param incs Include directives needed in compilation of the header.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   618
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   619
    const vector<string>& IncludesForHeader(Header* headerObj, Header* baseHObj = NULL);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   620
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   621
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   622
     * Adds component to the component list. Takes the ownership of the pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   623
     * @param comp Pointer to the <code>Component</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   624
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   625
    bool AddComponent(Component* comp);
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
     * Adds project to the project list. Takes the ownership of the pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   629
     * @param prj Pointer to the <code>Project</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   630
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   631
    bool AddProject(Project* prj);
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
     * Adds header to the header list. Takes the ownership of the pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   635
     * @param hdr Pointer to the <code>Header</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   636
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   637
    bool AddHeader(Header* hdr);
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
     * Adds source to the source list. Takes the ownership of the pointer.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   641
     * @param src Pointer to the <code>Source</code> object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   642
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   643
    bool AddSource(Source* src);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   644
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   645
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   646
     * Factory method creating correct element type for the given <code>DOMNode</code>.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   647
     * @param node Pointer to the <code>DOMNode</code>.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   648
     * @return Pointer to the created object.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   649
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   650
    ParsedElement* CreateElement( XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node );
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   651
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   652
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   653
     * Returns the list of components
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   654
     * @return Reference to the component list
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   655
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   656
    const ComponentList& Components() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   657
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   658
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   659
     * Prints the elements read from the platform data file.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   660
     * For debugging purposes.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   661
     * @return string representing the platform data.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   662
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   663
    string PrettyPrint() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   664
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   665
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   666
     * Returns the root directory of the platform.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   667
     * @return Root directory string
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   668
     */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   669
    const string& GetRootDir() const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   670
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   671
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   672
    void IncludesFromSource(const Header* hObj, const Source* srcObj, vector<string>& includes) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   673
    vector<string> iDummyStringVector;    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   674
    void InitializeElements();    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   675
    ComponentList iCList; // All components in platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   676
    CFileMap iHeadersById; // All headers in platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   677
    CFileMap iSourcesById; // All sources in platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   678
    CFileMap iProjectsById; // All projects in platform
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   679
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   680
    // Pointer to DOMBuilder
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   681
    XERCES_CPP_NAMESPACE_QUALIFIER DOMBuilder* iDOMParser;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   682
    // Pointer to DOMDocument
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   683
    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* iDOMDoc;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   684
    // Pointer to DOM root node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   685
    XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* iDOMRootElement;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   686
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   687
    string iRootDir; // Root directory
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   688
    string iPfVersion; // Version string given in constructor.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   689
    string iVersionStr; // Read from the XML-file (versionid attribute)
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
#endif