apicompatanamdw/compatanalysercmd/headeranalyser/src/NodeIndex.h
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530 (2010-09-27)
changeset 20 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
#ifndef __NODE_INDEX_H_
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
#define __NODE_INDEX_H_
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
#include "CmdGlobals.h"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
#ifdef __WIN__
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
#pragma warning(disable:4786)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
#endif
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
#include <assert.h>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
#include <map>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
#include <list>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
#include <xercesc/dom/DOM.hpp>
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
using namespace std;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
XERCES_CPP_NAMESPACE_USE
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
//The access specifiers in class
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
enum TAccess
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
    EAccessGlobal,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
    EAccessPublic,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
    EAccessProtected,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
    EAccessPrivate,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
    EAccessHidden
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
// The compare function for the fully qualified name that takes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
// into account the identity of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
struct compareFQName
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
bool operator()(
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
    const pair<const XMLCh *,const XMLCh *>&  p1,
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
    const pair<const XMLCh *,const XMLCh *>&  p2) const;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
// General compare function for XMLCh
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
struct ltstr
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
  bool operator()(const XMLCh * s1,const XMLCh * s2) const;
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
// Struct for data members
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
struct DataMember
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
	string iName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
	DOMNode* iNode;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
	int iOffset;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
	TAccess iAccess;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
	int iLineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
	DataMember(string name,DOMNode* node, int offset, TAccess access, int lineNo):
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
	iName(name),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
	iNode(node),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
	iOffset(offset),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
	iAccess(access),
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
	iLineNo(lineNo)
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
	DataMember(const DataMember& other)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
		this->operator=(other);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
	}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
	const DataMember & operator=(const DataMember& other)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
	{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
		iName = other.iName;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
		iNode = other.iNode;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
		iOffset = other.iOffset;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
		iAccess = other.iAccess;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
		iLineNo = other.iLineNo;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
		return *this;
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
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
/**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
* The NodeIndex class indexes the nodes of the XML node tree by 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
* the fully qualified name and node ID.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
class NodeIndex
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
    typedef map< pair<const XMLCh *,const XMLCh *> , DOMNode*, compareFQName > fqnamemap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
    typedef map< const XMLCh *,pair<const XMLCh*,bool>, ltstr > fileidmap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
	typedef vector<pair<string,DOMNode*> > vtable_t;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
	typedef map< string, vtable_t > vtableindex_t;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
	typedef vector<DataMember> dtable_t;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107
	typedef map< string, dtable_t > dtableindex_t;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   108
public:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   109
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   110
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   111
    * Clears the node map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   112
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   113
    void clear();
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
    * Add the node with its id to the map
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 AddNodeIdToMap(DOMNode * node);
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
    * Add the node with fully qualified name to the map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   122
    * @param node current DOMNode pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   123
    * @param fqname fully qualified name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   124
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   125
    void AddNodeFQNameToMap(DOMNode * node, const pair<const XMLCh*,const XMLCh*>& fqname);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   126
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   127
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   128
    * Add the file node to file map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   129
    * @param id the node id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   130
    * @param file filepair to add
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   131
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   132
    void AddFileNodeToMap(const XMLCh* id,pair<const XMLCh*,bool> file);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   133
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   134
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   135
    * Finds the node with id.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   136
    * @param root DOMNode pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   137
    * @param id of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   138
    * @return NULL if not found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   139
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   140
    DOMNode * FindNodeById(DOMNode * root, const XMLCh* id);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   141
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   142
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   143
    * Finds the node with fully qualified name.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   144
    * @param root DOMNode pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   145
    * @param FQName fullu qualified name of the node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   146
    * @return pointer to DOMnode or NULL if not found
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   147
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   148
    DOMNode * FindNodeByFQName(DOMNode * root, pair<const XMLCh*,const XMLCh* > FQName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   149
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   150
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   151
    * Returns the file pair <filename,tobeanalysed> by file id
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   152
    * @param fileid id to search
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   153
    * @return found filepair
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   154
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   155
    const pair<const XMLCh*,bool>& FindFileByFileId(const XMLCh* fileid);
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
    * Dumps the tables (for debugging)
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   159
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   160
    void DumpTables();
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
    * Adds a virtual function to the table vtable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   164
    * @param vtable virtual table name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   165
    * @param functionsig function signature
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   166
    * @param node pointer to DOMNode
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   167
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   168
	void AddVirtualFunction(const string& vtable,const string& functionsig, DOMNode* node);
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
    * Gets the virtual table vtable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   172
    * @param vtable virtual table name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   173
    * @return virtual table pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   174
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   175
	const vtable_t* GetVirtualTable(const string& vtable);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   176
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   177
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   178
    * Add empty virtual table
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   179
    * @param vtable virtual table name
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   180
    * @return virtual table pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   181
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   182
	const vtable_t*	AddEmptyVirtualTable(const string& vtable);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   183
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   184
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   185
    * Adds a data member to the table vtable
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   186
    * @param parentNode Node iterator pointing to the parent node.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   187
    * @param parentName Name of the parent node.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   188
    * @param memberName name of the data table
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   189
    * @param memberNode
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   190
    * @param index offset value of member
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   191
    * @param access how restricted the access of member is
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   192
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   193
	void AddDataMember(const HANodeIterator& parentNode, const string& parentName, const string& memberName, DOMNode* memberNode, int index, TAccess access,int lineNo);
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
    * Gets the data member table
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   197
    * @param node Node iterator pointing to the node whose members should be returned.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   198
    * @param nodeName Name of the node.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   199
    * @return table pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   200
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   201
	const dtable_t* GetDataMemberTable(const HANodeIterator& node, const string& nodeName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   202
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   203
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   204
    * Add empty data member table
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   205
    * @param node Reference to the node of the object, whose members will 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   206
    * get the new (empty) table entry
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   207
    * @param nodeName Name of the node.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   208
    * @return data table pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   209
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   210
	const dtable_t* AddEmptyDataMemberTable(const HANodeIterator& node, const string& nodeName);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   211
	
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   212
//Private methods
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   213
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   214
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   215
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   216
    * Search from the tree
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   217
    * @param root DOM root node
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   218
    * @param id to search
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   219
    * @return id table pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   220
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   221
    DOMNode * FindNodeByIdFromTree(DOMNode * root, const XMLCh* id);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   222
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   223
    /**
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   224
    * Inserts data member entry to the given table.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   225
    * @param parentName Name of the data member's parent.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   226
    * @param member Data member to be inserted to the data table.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   227
    * @param dataTable Reference to the data table.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   228
    */
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   229
    void InsertDataMember(const string& parentName, const DataMember& member, dtableindex_t& dataTable);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   230
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   231
//Private member variables
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   232
private:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   233
        
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   234
    //! Maps node id string to node pointer
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   235
    map< const XMLCh *,DOMNode*,ltstr > iIdToNodeMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   236
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   237
    //! Maps filename to list of nodes declared in that file
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   238
    fileidmap iIdToFileMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   239
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   240
    //! File node map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   241
    fqnamemap iFQNameToNodeMap;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   242
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   243
    //! VTable map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   244
    vtableindex_t iVTableIndex;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   245
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   246
    //! DTable map
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   247
    dtableindex_t iDTableIndex;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   248
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   249
    //! Data table for anonymous classes
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   250
    dtableindex_t iAnonymousTable;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   251
};
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   252
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   253
#endif