clang-tools 19.0.0git
Context.cpp
Go to the documentation of this file.
1//===--- Context.cpp ---------------------------------------------*- 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#include "support/Context.h"
10#include <cassert>
11
12namespace clang {
13namespace clangd {
14
15Context Context::empty() { return Context(/*DataPtr=*/nullptr); }
16
17Context::Context(std::shared_ptr<const Data> DataPtr)
18 : DataPtr(std::move(DataPtr)) {}
19
20Context Context::clone() const { return Context(DataPtr); }
21
23 static thread_local auto C = Context::empty();
24 return C;
25}
26
28
30 std::swap(Replacement, currentContext());
31 return Replacement;
32}
33
34} // namespace clangd
35} // namespace clang
const Criteria C
A context is an immutable container for per-request data that must be propagated through layers that ...
Definition: Context.h:69
Context()=default
Same as Context::empty(), please use Context::empty() instead.
Context clone() const
Clone this context object.
Definition: Context.cpp:20
static const Context & current()
Returns the context for the current thread, creating it if needed.
Definition: Context.cpp:27
static Context swapCurrent(Context Replacement)
Definition: Context.cpp:29
static Context empty()
Returns an empty root context that contains no data.
Definition: Context.cpp:15
static Context & currentContext()
Definition: Context.cpp:22
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//