Chisel
StatsManager.h
Go to the documentation of this file.
1 #ifndef STATS_MANAGER_H
2 #define STATS_MANAGER_H
3 
4 #include <string>
5 
6 #include "clang/AST/ASTConsumer.h"
7 #include "clang/AST/RecursiveASTVisitor.h"
8 #include "clang/AST/Stmt.h"
9 
11 class StatsManager {
12 public:
13  static void ComputeStats(std::string &FileName);
14  static void Print();
15 
16  static int GetNumOfWords() { return NumOfWords; }
17  static int GetNumOfStatements() { return NumOfStatements; }
18  static int GetNumOfFunctions() { return NumOfFunctions; }
19 
20  static void IncreaseNumOfFunctions();
21  static void IncreaseNumOfStatements();
22 
23  static bool isCountableStatement(clang::Stmt *S);
24 
25 private:
26  StatsManager() {}
27  StatsManager(std::string &FileName);
28  ~StatsManager() {}
29 
30  static int NumOfWords;
31  static int NumOfStatements;
32  static int NumOfFunctions;
33 };
34 
35 class StatsVisitor;
36 
37 class StatsComputer : public clang::ASTConsumer {
38  friend class StatsVisitor;
39 
40 public:
41  StatsComputer() : Visitor(NULL) {}
42  ~StatsComputer() { delete Visitor; }
43 
44 private:
45  void Initialize(clang::ASTContext &Ctx);
46  bool HandleTopLevelDecl(clang::DeclGroupRef D);
47 
48  StatsManager *Manager;
49  StatsVisitor *Visitor;
50 };
51 
52 class StatsVisitor : public clang::RecursiveASTVisitor<StatsVisitor> {
53 public:
55 
56  bool VisitFunctionDecl(clang::FunctionDecl *FD);
57  bool VisitStmt(clang::Stmt *S);
58 };
59 
60 #endif // STATS_MANAGER_H
static bool isCountableStatement(clang::Stmt *S)
Definition: StatsManager.cpp:36
StatsVisitor()
Definition: StatsManager.h:54
clang::DeclGroupRef DeclGroupRef
Definition: LocalReduction.cpp:16
~StatsComputer()
Definition: StatsManager.h:42
Definition: StatsManager.h:37
clang::Stmt Stmt
Definition: LocalReduction.cpp:25
static void ComputeStats(std::string &FileName)
Definition: StatsManager.cpp:13
static void IncreaseNumOfStatements()
Definition: StatsManager.cpp:34
clang::FunctionDecl FunctionDecl
Definition: LocalReduction.cpp:18
static void Print()
Definition: StatsManager.cpp:27
Definition: StatsManager.h:52
static void IncreaseNumOfFunctions()
Definition: StatsManager.cpp:32
static int GetNumOfFunctions()
Definition: StatsManager.h:18
StatsComputer()
Definition: StatsManager.h:41
static int GetNumOfWords()
Definition: StatsManager.h:16
static int GetNumOfStatements()
Definition: StatsManager.h:17
Responsible for computing statistical information for a file.
Definition: StatsManager.h:11