zcov: / include/clang/AST/StmtGraphTraits.h


Files: 1 Branches Taken: 0.0% 0 / 4
Generated: 2010-02-10 01:31 Branches Executed: 0.0% 0 / 4
Line Coverage: 0.0% 0 / 11


Programs: 1 Runs 2897


       1                 : //===--- StmtGraphTraits.h - Graph Traits for the class Stmt ----*- C++ -*-===//
       2                 : //
       3                 : //                     The LLVM Compiler Infrastructure
       4                 : //
       5                 : // This file is distributed under the University of Illinois Open Source
       6                 : // License. See LICENSE.TXT for details.
       7                 : //
       8                 : //===----------------------------------------------------------------------===//
       9                 : //
      10                 : //  This file defines a template specialization of llvm::GraphTraits to
      11                 : //  treat ASTs (Stmt*) as graphs
      12                 : //
      13                 : //===----------------------------------------------------------------------===//
      14                 : 
      15                 : #ifndef LLVM_CLANG_AST_STMT_GRAPHTRAITS_H
      16                 : #define LLVM_CLANG_AST_STMT_GRAPHTRAITS_H
      17                 : 
      18                 : #include "clang/AST/Stmt.h"
      19                 : #include "llvm/ADT/GraphTraits.h"
      20                 : #include "llvm/ADT/DepthFirstIterator.h"
      21                 : 
      22                 : namespace llvm {
      23                 : 
      24                 : //template <typename T> struct GraphTraits;
      25                 : 
      26                 : 
      27                 : template <> struct GraphTraits<clang::Stmt*> {
      28                 :   typedef clang::Stmt                       NodeType;
      29                 :   typedef clang::Stmt::child_iterator       ChildIteratorType;
      30                 :   typedef llvm::df_iterator<clang::Stmt*>   nodes_iterator;
      31                 : 
      32                 :   static NodeType* getEntryNode(clang::Stmt* S) { return S; }
      33                 : 
      34                 :   static inline ChildIteratorType child_begin(NodeType* N) {
      35                 :     if (N) return N->child_begin();
      36                 :     else return ChildIteratorType();
      37                 :   }
      38                 : 
      39                 :   static inline ChildIteratorType child_end(NodeType* N) {
      40                 :     if (N) return N->child_end();
      41                 :     else return ChildIteratorType();
      42                 :   }
      43                 : 
      44                 :   static nodes_iterator nodes_begin(clang::Stmt* S) {
      45                 :     return df_begin(S);
      46                 :   }
      47                 : 
      48                 :   static nodes_iterator nodes_end(clang::Stmt* S) {
      49                 :     return df_end(S);
      50                 :   }
      51                 : };
      52                 : 
      53                 : 
      54                 : template <> struct GraphTraits<const clang::Stmt*> {
      55                 :   typedef const clang::Stmt                       NodeType;
      56                 :   typedef clang::Stmt::const_child_iterator       ChildIteratorType;
      57                 :   typedef llvm::df_iterator<const clang::Stmt*>   nodes_iterator;
      58                 : 
      59                0:   static NodeType* getEntryNode(const clang::Stmt* S) { return S; }
      60                 : 
      61                0:   static inline ChildIteratorType child_begin(NodeType* N) {
                        0: branch 0 not taken
                        0: branch 1 not taken
      62                0:     if (N) return N->child_begin();
      63                0:     else return ChildIteratorType();
      64                 :   }
      65                 : 
      66                0:   static inline ChildIteratorType child_end(NodeType* N) {
                        0: branch 0 not taken
                        0: branch 1 not taken
      67                0:     if (N) return N->child_end();
      68                0:     else return ChildIteratorType();
      69                 :   }
      70                 : 
      71                0:   static nodes_iterator nodes_begin(const clang::Stmt* S) {
      72                0:     return df_begin(S);
      73                 :   }
      74                 : 
      75                0:   static nodes_iterator nodes_end(const clang::Stmt* S) {
      76                0:     return df_end(S);
      77                 :   }
      78                 : };
      79                 : 
      80                 : 
      81                 : } // end namespace llvm
      82                 : 
      83                 : #endif

Generated: 2010-02-10 01:31 by zcov