+template <> struct GraphTraits<const DomTreeNode *> {
+ typedef const DomTreeNode NodeType;
+ typedef NodeType::const_iterator ChildIteratorType;
+
+ static NodeType *getEntryNode(NodeType *N) {
+ return N;
+ }
+ static inline ChildIteratorType child_begin(NodeType *N) {
+ return N->begin();
+ }
+ static inline ChildIteratorType child_end(NodeType *N) {
+ return N->end();
+ }
+
+ typedef df_iterator<const DomTreeNode *> nodes_iterator;
+
+ static nodes_iterator nodes_begin(const DomTreeNode *N) {
+ return df_begin(getEntryNode(N));
+ }
+
+ static nodes_iterator nodes_end(const DomTreeNode *N) {
+ return df_end(getEntryNode(N));
+ }
+};
+