diff options
Diffstat (limited to 'Build/source/utils/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp')
-rw-r--r-- | Build/source/utils/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp b/Build/source/utils/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp new file mode 100644 index 00000000000..5fb1ad4d45f --- /dev/null +++ b/Build/source/utils/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp @@ -0,0 +1,35 @@ +//===--- Context.cpp ---------------------------------------------*- C++-*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "Context.h" +#include <cassert> + +namespace lsp { + + +Context Context::empty() { return Context(/*dataPtr=*/nullptr); } + +Context::Context(std::shared_ptr<const Data> DataPtr) + : dataPtr(std::move(DataPtr)) {} + +Context Context::clone() const { return Context(dataPtr); } + +static Context ¤tContext() { + static thread_local auto c = Context::empty(); + return c; +} + +const Context &Context::current() { return currentContext(); } + +Context Context::swapCurrent(Context Replacement) { + std::swap(Replacement, currentContext()); + return Replacement; +} + + +} // lsp clang |