1 //===--- Context.cpp ---------------------------------------------*- C++-*-===//
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
7 //===----------------------------------------------------------------------===//
9 #include "support/Context.h"
15 Context
Context::empty() { return Context(/*DataPtr=*/nullptr); }
17 Context::Context(std::shared_ptr
<const Data
> DataPtr
)
18 : DataPtr(std::move(DataPtr
)) {}
20 Context
Context::clone() const { return Context(DataPtr
); }
22 static Context
¤tContext() {
23 static thread_local
auto C
= Context::empty();
27 const Context
&Context::current() { return currentContext(); }
29 Context
Context::swapCurrent(Context Replacement
) {
30 std::swap(Replacement
, currentContext());