summaryrefslogtreecommitdiff
path: root/graphics/asymptote/LspCpp/src/jsonrpc/Context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/LspCpp/src/jsonrpc/Context.cpp')
-rwxr-xr-xgraphics/asymptote/LspCpp/src/jsonrpc/Context.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/graphics/asymptote/LspCpp/src/jsonrpc/Context.cpp b/graphics/asymptote/LspCpp/src/jsonrpc/Context.cpp
new file mode 100755
index 0000000000..8d4094b41a
--- /dev/null
+++ b/graphics/asymptote/LspCpp/src/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 "LibLsp/JsonRpc/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 &currentContext() {
+ 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