Files
swift-mirror/tools/SourceKit/lib/SwiftLang/SwiftInvocation.h
Ben Langmuir 350441d1e3 Fix ThreadSafeRefCountedBase*::Release()
C++ atomic's fetch_sub returns the previous value, where we want to
check the new value. This was causing massive memory leaks in SourceKit.

For ThreadSafeRefCountedBase, just switch to the one in LLVM that's
already correct.  We should move the VPTR one to LLVM as well and then
we can get rid of this header.

rdar://problem/27358273
2016-07-21 16:25:44 -07:00

47 lines
1.3 KiB
C++

//===--- SwiftInvocation.h - ------------------------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://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 <string>
#include <vector>
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<SwiftInvocation> {
public:
~SwiftInvocation();
struct Implementation;
Implementation &Impl;
void applyTo(swift::CompilerInvocation &CompInvok) const;
void raw(std::vector<std::string> &Args, std::string &PrimaryFile) const;
private:
SwiftInvocation(Implementation &Impl) : Impl(Impl) { }
friend class SwiftASTManager;
};
} // namespace SourceKit.
#endif