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;
32
32
33
33
lsp_endpoint::lsp_endpoint (lsp_endpoint_handler* handler,
34
34
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 ;
36
40
37
41
void lsp_endpoint::message_parsed (string8_view message) {
38
42
trace_writer* tw =
@@ -53,7 +57,8 @@ void lsp_endpoint::message_parsed(string8_view message) {
53
57
reinterpret_cast <const char *>(message.data ()), message.size ());
54
58
::simdjson::ondemand::document message_document;
55
59
::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);
57
62
if (parse_error != ::simdjson::error_code::SUCCESS) {
58
63
byte_buffer error_json;
59
64
this ->write_json_parse_error_response (error_json);
Original file line number Diff line number Diff line change 9
9
#else
10
10
11
11
#include < cstddef>
12
+ #include < memory>
12
13
#include < quick-lint-js/assert.h>
13
14
#include < quick-lint-js/container/byte-buffer.h>
14
15
#include < quick-lint-js/json.h>
17
18
#include < quick-lint-js/port/have.h>
18
19
#include < quick-lint-js/port/unreachable.h>
19
20
#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>
22
22
#include < tuple>
23
23
#include < utility>
24
24
#include < vector>
@@ -114,6 +114,10 @@ class lsp_endpoint : private lsp_message_parser<lsp_endpoint> {
114
114
// better.
115
115
explicit lsp_endpoint (lsp_endpoint_handler* handler,
116
116
lsp_endpoint_remote* remote);
117
+ ~lsp_endpoint ();
118
+
119
+ lsp_endpoint (const lsp_endpoint&) = delete ;
120
+ lsp_endpoint& operator =(const lsp_endpoint&) = delete ;
117
121
118
122
using message_parser::append;
119
123
@@ -130,9 +134,7 @@ class lsp_endpoint : private lsp_message_parser<lsp_endpoint> {
130
134
131
135
lsp_endpoint_remote* remote_;
132
136
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_;
136
138
137
139
friend message_parser;
138
140
};
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ namespace QUICK_LINT_JS_SIMDJSON_IMPLEMENTATION_NAMESPACE {
24
24
namespace ondemand {
25
25
class array ;
26
26
class object ;
27
+ class parser ;
27
28
class value ;
28
29
}
29
30
}
You can’t perform that action at this time.
0 commit comments