File tree Expand file tree Collapse file tree 3 files changed +15
-7
lines changed Expand file tree Collapse file tree 3 files changed +15
-7
lines changed Original file line number Diff line number Diff line change @@ -32,7 +32,11 @@ lsp_endpoint_handler::~lsp_endpoint_handler() = default;
3232
3333lsp_endpoint::lsp_endpoint (lsp_endpoint_handler* handler,
3434 lsp_endpoint_remote* remote)
35- : remote_ (remote), handler_ (handler) {}
35+ : remote_ (remote),
36+ handler_ (handler),
37+ json_parser_ (std::make_unique< ::simdjson::ondemand::parser>()) {}
38+
39+ lsp_endpoint::~lsp_endpoint () = default ;
3640
3741void lsp_endpoint::message_parsed (string8_view message) {
3842 trace_writer* tw =
@@ -53,7 +57,8 @@ void lsp_endpoint::message_parsed(string8_view message) {
5357 reinterpret_cast <const char *>(message.data ()), message.size ());
5458 ::simdjson::ondemand::document message_document;
5559 ::simdjson::error_code parse_error;
56- this ->json_parser_ .iterate(padded_message).tie (message_document, parse_error);
60+ this ->json_parser_ ->iterate(padded_message)
61+ .tie (message_document, parse_error);
5762 if (parse_error != ::simdjson::error_code::SUCCESS) {
5863 byte_buffer error_json;
5964 this ->write_json_parse_error_response (error_json);
Original file line number Diff line number Diff line change 99#else
1010
1111#include < cstddef>
12+ #include < memory>
1213#include < quick-lint-js/assert.h>
1314#include < quick-lint-js/container/byte-buffer.h>
1415#include < quick-lint-js/json.h>
1718#include < quick-lint-js/port/have.h>
1819#include < quick-lint-js/port/unreachable.h>
1920#include < quick-lint-js/port/warning.h>
20- #include < quick-lint-js/simdjson.h>
21- #include < simdjson.h>
21+ #include < quick-lint-js/simdjson-fwd.h>
2222#include < tuple>
2323#include < utility>
2424#include < vector>
@@ -114,6 +114,10 @@ class lsp_endpoint : private lsp_message_parser<lsp_endpoint> {
114114 // better.
115115 explicit lsp_endpoint (lsp_endpoint_handler* handler,
116116 lsp_endpoint_remote* remote);
117+ ~lsp_endpoint ();
118+
119+ lsp_endpoint (const lsp_endpoint&) = delete ;
120+ lsp_endpoint& operator =(const lsp_endpoint&) = delete ;
117121
118122 using message_parser::append;
119123
@@ -130,9 +134,7 @@ class lsp_endpoint : private lsp_message_parser<lsp_endpoint> {
130134
131135 lsp_endpoint_remote* remote_;
132136 lsp_endpoint_handler* handler_;
133- // TODO(strager): Make this a pointer so we can avoid #include-ing
134- // <simdjson.h>.
135- ::simdjson::ondemand::parser json_parser_;
137+ std::unique_ptr< ::simdjson::ondemand::parser> json_parser_;
136138
137139 friend message_parser;
138140};
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ namespace QUICK_LINT_JS_SIMDJSON_IMPLEMENTATION_NAMESPACE {
2424namespace ondemand {
2525class array ;
2626class object ;
27+ class parser ;
2728class value ;
2829}
2930}
You can’t perform that action at this time.
0 commit comments