ClassHierarchyGraph.h

Go to the documentation of this file.
00001 #ifndef CLASS_HIERARCHY_GRAPH_H
00002 #define CLASS_HIERARCHY_GRAPH_H
00003 
00004 #include <vector>
00005 #include <map>
00006 #include <boost/unordered_set.hpp>
00007 
00008 class ClassHierarchyWrapper
00009 {
00010 public:
00011     typedef boost::unordered_set<SgClassDefinition*> ClassDefSet;
00012 
00013     typedef boost::unordered_map<std::string, ClassDefSet> MangledNameToClassDefsMap;
00014 
00015 private:
00016 
00017 
00019     MangledNameToClassDefsMap directParents;
00020 
00022     MangledNameToClassDefsMap directChildren;
00023 
00025     MangledNameToClassDefsMap ancestorClasses;
00026 
00028     MangledNameToClassDefsMap subclasses;
00029 
00030     SgIncidenceDirectedGraph* classGraph;
00031 
00032 public:
00033 
00034     ClassHierarchyWrapper(SgNode *node);
00035     const ClassDefSet& getSubclasses(SgClassDefinition *) const;
00036     const ClassDefSet& getDirectSubclasses(SgClassDefinition *) const;
00037     const ClassDefSet& getAncestorClasses(SgClassDefinition *) const;
00038 
00039 private:
00040 
00044     static void buildAncestorsMap(const MangledNameToClassDefsMap& parents, MangledNameToClassDefsMap& transitiveParents);
00045 };
00046 
00047 
00048 #endif

Generated on Wed May 16 06:17:53 2012 for ROSE by  doxygen 1.4.7