]> rtime.felk.cvut.cz Git - boost-statechart-viewer.git/blob - bp.cpp
Fix my broken Makefile
[boost-statechart-viewer.git] / bp.cpp
1 #include <iostream>
2
3 #include "llvm/Support/raw_ostream.h"
4 #include "llvm/System/Host.h"
5
6 #include "clang/Frontend/DiagnosticOptions.h"
7 #include "clang/Frontend/TextDiagnosticPrinter.h"
8
9 #include "clang/Basic/LangOptions.h"
10 #include "clang/Basic/FileSystemOptions.h"
11
12 #include "clang/Basic/SourceManager.h"
13 #include "clang/Lex/HeaderSearch.h"
14 #include "clang/Basic/FileManager.h"
15
16 #include "clang/Frontend/HeaderSearchOptions.h"
17 #include "clang/Frontend/Utils.h"
18
19 #include "clang/Basic/TargetOptions.h"
20 #include "clang/Basic/TargetInfo.h"
21
22 #include "clang/Lex/Preprocessor.h"
23 #include "clang/Frontend/PreprocessorOptions.h"
24 #include "clang/Frontend/FrontendOptions.h"
25
26 #include "clang/Basic/IdentifierTable.h"
27 #include "clang/Basic/Builtins.h"
28
29 #include "clang/AST/ASTContext.h"
30 #include "clang/AST/ASTConsumer.h"
31 #include "clang/Sema/Sema.h"
32 #include "clang/AST/DeclBase.h"
33 #include "clang/AST/Type.h"
34 #include "clang/AST/Decl.h"
35 #include "clang/Sema/Lookup.h"
36 #include "clang/Sema/Ownership.h"
37 #include "clang/AST/DeclGroup.h"
38
39 #include "clang/Parse/Parser.h"
40
41 #include "clang/Parse/ParseAST.h"
42
43
44 using namespace clang;
45
46 class FindStates : public ASTConsumer
47 {
48         public:
49         virtual void HandleTopLevelDecl(DeclGroupRef DGR)
50         {
51         for (DeclGroupRef::iterator i = DGR.begin(), e = DGR.end(); i != e; ++i) 
52         {
53                 const Decl *D = *i;
54                 const NamedDecl *ND = dyn_cast<NamedDecl>(D);
55                 if (const TagDecl *TD = dyn_cast<TagDecl>(D))
56                 if(TD->isStruct()) //je to struktura?
57                         llvm::errs() << "Novy stav: " << ND->getNameAsString() <<"\n";
58         }
59         /* TODO
60         Zjistit, zda je dedena?
61         Pokud ANO, tak projit strom dolu 
62         */
63         }
64 };
65
66 int main(int argc, char *argv[])
67 {
68        DiagnosticOptions diagnosticOptions;
69        TextDiagnosticPrinter *tdp = new TextDiagnosticPrinter(llvm::outs(), diagnosticOptions);
70        DiagnosticClient *dc;
71        llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> dis;
72        Diagnostic diag(dis,dc);
73        LangOptions lang;
74
75        FileSystemOptions fileSysOpt;
76        FileManager fm (fileSysOpt);
77
78        SourceManager sm ( diag, fm);
79        HeaderSearch *headers = new HeaderSearch(fm);
80        
81        HeaderSearchOptions hsopts;
82        TargetOptions to;
83
84        //init.AddDefaultSystemIncludePaths(lang);
85        //init.Realize();
86        TargetInfo *ti = TargetInfo::CreateTargetInfo(diag, to);
87        Preprocessor *pp = new Preprocessor(diag, lang, *ti, sm, *headers);
88        FrontendOptions f;
89        PreprocessorOptions ppio;
90        InitializePreprocessor(*pp, ppio,hsopts,f);
91
92        const FileEntry *file = fm.getFile("test.cpp");
93        sm.createMainFileID(file);
94
95        IdentifierTable tab(lang);
96        SelectorTable sel;
97        Builtin::Context builtins(*ti);
98        FindStates c;
99        ASTContext ctx(lang, sm, *ti, tab, sel, builtins,0);
100        ParseAST(*pp, &c, ctx, false, true);
101
102        return 0;
103
104
105 }