ROSE 0.11.145.147
arrIndexLabeler.h
1#include <featureTests.h>
2#ifdef ROSE_ENABLE_SOURCE_ANALYSIS
3
4#ifndef ARR_INDEX_LABELER_H
5#define ARR_INDEX_LABELER_H
6
7#include <sage3.h>
8#include <list>
9
10namespace arrIndexLabeler {
11
12// labels the portion of the AST rooted at root with annotations that identify the various portions
13// the read/write sides of SgAssignOp nodes (if they are)
14void addArrayIndexAnnotations(SgNode* root);
15
16// returns true if the given node is part of an array index expression and false otherwise
17bool isArrayIndex(SgNode* n);
18
19// returns true the given SgPntrArrRefExp node this is a top-level SgPntrArrRefExp that is not part
20// of a larger SgPntrArrRefExp
21// (i.e. given a[b[i][j]][k][l], it is either a[b[i][j]][k][l] or b[i][j])
22bool isTopArrayRefExp(const SgNode* n);
23
24// returns the SgExpression node that contains the name of the array in the given SgPntrArrRefExp or
25// NULL if the node is not a SgPntrArrRefExp
26SgExpression* getArrayNameExp(SgNode* n);
27
28// returns the dimensionality of the array reference in the given SgPntrArrRefExp
29int getArrayDim(SgPntrArrRefExp* n);
30
31// returns the list of index expressionf in the given SgPntrArrRefExp
32 std::list<SgExpression*>& getArrayIndexExprs(SgPntrArrRefExp* n);
33}
34#endif
35#endif
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes,...
This class represents the base class for all IR nodes within Sage III.