1 #ifndef rose_adapter_INCLUDED
2 #define rose_adapter_INCLUDED
5 #include <iostream>
6 #include <string>
8 #include "abstract_handle.h"
9 namespace AbstractHandle
10 {
13  {
14  public:
15  virtual ~roseNode(){};
16  void* getNode() const {return (void*) mNode; }
17  virtual std::string getConstructTypeName() const;
18  virtual bool hasSourcePos() const;
19  virtual bool hasName() const;
20  virtual std::string getName() const;
23  virtual AbstractHandle::abstract_node* findNode(std::string construct_type_str, AbstractHandle::specifier mspecifier) const;
24  virtual std::string getFileName() const;
25  virtual AbstractHandle::source_position getStartPos() const;
26  virtual AbstractHandle::source_position getEndPos() const;
28  virtual size_t getNumbering (const AbstractHandle::abstract_node* another_node) const;
29  virtual std::string toString() const;
30  virtual bool operator == (const abstract_node & x) const;
31  ROSE_DLL_API friend roseNode* buildroseNode(SgNode* snode);
32  protected:
33  // hide constructors to enforce using the builder function instead
34  roseNode(){mNode =NULL;};
35  roseNode(SgNode* snode);
36  SgNode* mNode;
37  };
40  ROSE_DLL_API roseNode* buildroseNode(SgNode* snode);
42  ROSE_DLL_API abstract_handle * buildAbstractHandle(SgNode* snode);
45  ROSE_DLL_API SgLocatedNode* convertHandleToNode(const std::string& handle);
46 }
48 #endif
ROSE_DLL_API SgLocatedNode * convertHandleToNode(const std::string &handle)
Convert an abstract handle string to a located node in AST.
virtual bool hasSourcePos() const
If the node has meaningful line and column numbers associated with a file.
source position information:
String annotations to uniquely indicate any source constructs.
ROSE_DLL_API friend roseNode * buildroseNode(SgNode *snode)
A builder function to avoid duplicated building.
Concrete roseNode derived from abstract_node.
Definition: roseAdapter.h:12
ROSE_DLL_API roseNode * buildroseNode(SgNode *snode)
A builder function to avoid duplicated building.
virtual std::string getName() const
Get the name of the construct if it is named, like function name.
virtual size_t getNumbering(const AbstractHandle::abstract_node *another_node) const
Get the ordering of the construct relative to another construct in a higher scope Numbering start fro...
This class represents the base class for all IR nodes within Sage III.
Definition: Cxx_Grammar.h:8322
virtual bool hasName() const
If the node has legal names defined by language standards.
construct specifier could be used to specify a construct by name, position, numbering, labels, etc (e_name, foo) (e_position, 15)
virtual AbstractHandle::abstract_node * findNode(std::string construct_type_str, AbstractHandle::specifier mspecifier) const
Find a node of a given type, it also matches the specifier.
virtual AbstractHandle::abstract_node * getFileNode() const
Get the start source file position of the construct Get the abstract node for file containing the cur...
This class represents the notion of an expression or statement which has a position within the source...
ROSE_DLL_API abstract_handle * buildAbstractHandle(SgNode *snode)
A default builder function handles all details: file use name, others use numbering.
virtual std::string getConstructTypeName() const
Get the construct' s type name, like function.
void * getNode() const
Get the raw IR node associated with the current abstract node.
Definition: roseAdapter.h:16
Users should provide a concrete node implementation especially a constructor/builder to avoid duplica...
virtual AbstractHandle::abstract_node * getParent() const
Get parent node, used for generate parent handle automatically.