#pragma once #include "Preamble.h" namespace clice { struct ParsedAST { clang::Sema& sema; clang::ASTContext& context; clang::Preprocessor& preproc; clang::FileManager& fileManager; clang::SourceManager& sourceManager; clang::syntax::TokenBuffer tokenBuffer; std::unique_ptr directive; std::unique_ptr action; std::unique_ptr instance; static std::unique_ptr build(llvm::StringRef filename, llvm::StringRef content, std::vector& args, Preamble* preamble = nullptr); clang::FileID getFileID(llvm::StringRef filename) const { auto entry = fileManager.getFileRef(filename); if(!entry) { // TODO: } return sourceManager.translateFile(entry.get()); } llvm::ArrayRef spelledTokens(clang::FileID fileID) const { return tokenBuffer.spelledTokens(fileID); } }; } // namespace clice