//===--- SwiftInvocation.h - ------------------------------------*- C++ -*-===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// #ifndef LLVM_SOURCEKIT_LIB_SWIFTLANG_SWIFTINVOCATION_H #define LLVM_SOURCEKIT_LIB_SWIFTLANG_SWIFTINVOCATION_H #include "swift/Basic/ThreadSafeRefCounted.h" #include #include namespace swift { class CompilerInvocation; } namespace SourceKit { class SwiftASTManager; /// Encompasses an invocation for getting an AST. This is used to control AST /// sharing among different requests. class SwiftInvocation : public llvm::ThreadSafeRefCountedBase { public: ~SwiftInvocation(); struct Implementation; Implementation &Impl; void applyTo(swift::CompilerInvocation &CompInvok) const; void raw(std::vector &Args, std::string &PrimaryFile) const; private: SwiftInvocation(Implementation &Impl) : Impl(Impl) { } friend class SwiftASTManager; }; } // namespace SourceKit #endif