clang
22.0.0git
include
clang
Driver
LazyDetector.h
Go to the documentation of this file.
1
//===--- LazyDetector.h - Lazy ToolChain Detection --------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_CLANG_DRIVER_LAZYDETECTOR_H
10
#define LLVM_CLANG_DRIVER_LAZYDETECTOR_H
11
12
#include "
clang/Driver/Tool.h
"
13
#include "
clang/Driver/ToolChain.h
"
14
#include <optional>
15
16
namespace
clang
{
17
18
/// Simple wrapper for toolchain detector with costly initialization. This
19
/// delays the creation of the actual detector until its first usage.
20
21
template
<
class
T>
class
LazyDetector
{
22
const
driver::Driver
&D;
23
llvm::Triple Triple;
24
const
llvm::opt::ArgList &Args;
25
26
std::optional<T> Detector;
27
28
public
:
29
LazyDetector
(
const
driver::Driver
&D,
const
llvm::Triple &Triple,
30
const
llvm::opt::ArgList &Args)
31
: D(D), Triple(Triple), Args(Args) {}
32
T
*
operator->
() {
33
if
(!Detector)
34
Detector.emplace(D, Triple, Args);
35
return
&*Detector;
36
}
37
const
T
*
operator->
()
const
{
38
return
const_cast<
T
const
*
>
(
39
const_cast<
LazyDetector
&
>
(*this).operator->());
40
}
41
};
42
43
}
// end namespace clang
44
45
#endif
// LLVM_CLANG_DRIVER_LAZYDETECTOR_H
ToolChain.h
Tool.h
clang::LazyDetector::LazyDetector
LazyDetector(const driver::Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args)
Definition
LazyDetector.h:29
clang::LazyDetector::operator->
T * operator->()
Definition
LazyDetector.h:32
clang::LazyDetector::operator->
const T * operator->() const
Definition
LazyDetector.h:37
clang::driver::Driver
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
Definition
Driver.h:99
clang
The JSON file list parser is used to communicate input to InstallAPI.
Definition
CalledOnceCheck.h:17
clang::T
const FunctionProtoType * T
Definition
RecursiveASTVisitor.h:1414
Generated on
for clang by
1.14.0