Skip to content

Commit 242ec15

Browse files
committed
Improve json_encoder
1 parent ae202a7 commit 242ec15

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

include/jsoncons/json_encoder.hpp

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -215,22 +215,22 @@ namespace detail {
215215
return k;
216216
}
217217

218-
static const CharT colon[1];
219-
static const CharT colon_space[2];
220-
static const CharT space_colon[2];
221-
static const CharT space_colon_space[3];
222-
static const CharT comma[1];
223-
static const CharT comma_space[2];
224-
static const CharT space_comma[2];
225-
static const CharT space_comma_space[3];
226-
static const CharT left_brace[1];
227-
static const CharT right_brace[1];
228-
static const CharT left_brace_space[2];
229-
static const CharT space_right_brace[2];
230-
static const CharT left_bracket[1];
231-
static const CharT right_bracket[1];
232-
static const CharT left_bracket_space[2];
233-
static const CharT space_right_bracket[2];
218+
static std::array<CharT,1> colon;
219+
static std::array<CharT,2> colon_space;
220+
static std::array<CharT,2> space_colon;
221+
static std::array<CharT,3> space_colon_space;
222+
static std::array<CharT,1> comma;
223+
static std::array<CharT,2> comma_space;
224+
static std::array<CharT,2> space_comma;
225+
static std::array<CharT,3> space_comma_space;
226+
static std::array<CharT,1> left_brace;
227+
static std::array<CharT,1> right_brace;
228+
static std::array<CharT,2> left_brace_space;
229+
static std::array<CharT,2> space_right_brace;
230+
static std::array<CharT,1> left_bracket;
231+
static std::array<CharT,1> right_bracket;
232+
static std::array<CharT,2> left_bracket_space;
233+
static std::array<CharT,2> space_right_bracket;
234234
public:
235235
using allocator_type = Allocator;
236236
using char_type = CharT;
@@ -366,52 +366,52 @@ namespace detail {
366366
switch (options.spaces_around_colon())
367367
{
368368
case spaces_option::space_after:
369-
colon_str_ = jsoncons::basic_string_view<CharT>(colon_space, sizeof(colon_space));
369+
colon_str_ = jsoncons::basic_string_view<CharT>(colon_space.data(), colon_space.size());
370370
break;
371371
case spaces_option::space_before:
372-
colon_str_ = jsoncons::basic_string_view<CharT>(space_colon, sizeof(space_colon));
372+
colon_str_ = jsoncons::basic_string_view<CharT>(space_colon.data(), space_colon.size());
373373
break;
374374
case spaces_option::space_before_and_after:
375-
colon_str_ = jsoncons::basic_string_view<CharT>(space_colon_space, sizeof(space_colon_space));
375+
colon_str_ = jsoncons::basic_string_view<CharT>(space_colon_space.data(), space_colon_space.size());
376376
break;
377377
default:
378-
colon_str_ = jsoncons::basic_string_view<CharT>(colon, sizeof(colon));
378+
colon_str_ = jsoncons::basic_string_view<CharT>(colon.data(), colon.size());
379379
break;
380380
}
381381
switch (options.spaces_around_comma())
382382
{
383383
case spaces_option::space_after:
384-
comma_str_ = jsoncons::basic_string_view<CharT>(comma_space, sizeof(comma_space));
384+
comma_str_ = jsoncons::basic_string_view<CharT>(comma_space.data(), colon_space.size());
385385
break;
386386
case spaces_option::space_before:
387-
comma_str_ = jsoncons::basic_string_view<CharT>(space_comma, sizeof(space_comma));
387+
comma_str_ = jsoncons::basic_string_view<CharT>(space_comma.data(), space_comma.size());
388388
break;
389389
case spaces_option::space_before_and_after:
390-
comma_str_ = jsoncons::basic_string_view<CharT>(space_comma_space, sizeof(space_comma_space));
390+
comma_str_ = jsoncons::basic_string_view<CharT>(space_comma_space.data(), space_comma_space.size());
391391
break;
392392
default:
393-
comma_str_ = jsoncons::basic_string_view<CharT>(comma, sizeof(comma));
393+
comma_str_ = jsoncons::basic_string_view<CharT>(comma.data(), comma.size());
394394
break;
395395
}
396396
if (options.pad_inside_object_braces())
397397
{
398-
open_brace_str_ = jsoncons::basic_string_view<CharT>(left_brace_space, sizeof(left_brace_space));
399-
close_brace_str_ = jsoncons::basic_string_view<CharT>(space_right_brace, sizeof(space_right_brace));
398+
open_brace_str_ = jsoncons::basic_string_view<CharT>(left_brace_space.data(), left_brace_space.size());
399+
close_brace_str_ = jsoncons::basic_string_view<CharT>(space_right_brace.data(), space_right_brace.size());
400400
}
401401
else
402402
{
403-
open_brace_str_ = jsoncons::basic_string_view<CharT>(left_brace, sizeof(left_brace));
404-
close_brace_str_ = jsoncons::basic_string_view<CharT>(right_brace, sizeof(right_brace));
403+
open_brace_str_ = jsoncons::basic_string_view<CharT>(left_brace.data(), left_brace.size());
404+
close_brace_str_ = jsoncons::basic_string_view<CharT>(right_brace.data(), right_brace.size());
405405
}
406406
if (options.pad_inside_array_brackets())
407407
{
408-
open_bracket_str_ = jsoncons::basic_string_view<CharT>(left_bracket_space, sizeof(left_bracket_space));
409-
close_bracket_str_ = jsoncons::basic_string_view<CharT>(space_right_bracket, sizeof(space_right_bracket));
408+
open_bracket_str_ = jsoncons::basic_string_view<CharT>(left_bracket_space.data(), left_bracket_space.size());
409+
close_bracket_str_ = jsoncons::basic_string_view<CharT>(space_right_bracket.data(), space_right_bracket.size());
410410
}
411411
else
412412
{
413-
open_bracket_str_ = jsoncons::basic_string_view<CharT>(left_bracket, sizeof(left_bracket));
414-
close_bracket_str_ = jsoncons::basic_string_view<CharT>(right_bracket, sizeof(right_bracket));
413+
open_bracket_str_ = jsoncons::basic_string_view<CharT>(left_bracket.data(), left_bracket.size());
414+
close_bracket_str_ = jsoncons::basic_string_view<CharT>(right_bracket.data(), right_bracket.size());
415415
}
416416
}
417417

@@ -1104,40 +1104,40 @@ namespace detail {
11041104
};
11051105

11061106
template <typename CharT, typename Sink, typename Allocator>
1107-
const CharT basic_json_encoder<CharT, Sink, Allocator>::colon[1] = {':'};
1107+
std::array<CharT,1> basic_json_encoder<CharT, Sink, Allocator>::colon = {':'};
11081108
template <typename CharT,typename Sink,typename Allocator>
1109-
const CharT basic_json_encoder<CharT,Sink,Allocator>::colon_space[2] = {':', ' '};
1109+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::colon_space = {':', ' '};
11101110
template <typename CharT,typename Sink,typename Allocator>
1111-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_colon[2] = {' ', ':'};
1111+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::space_colon = {' ', ':'};
11121112
template <typename CharT,typename Sink,typename Allocator>
1113-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_colon_space[3] = {' ', ':', ' '};
1113+
std::array<CharT,3> basic_json_encoder<CharT,Sink,Allocator>::space_colon_space = {' ', ':', ' '};
11141114

11151115
template <typename CharT, typename Sink, typename Allocator>
1116-
const CharT basic_json_encoder<CharT, Sink, Allocator>::comma[1] = {','};
1116+
std::array<CharT,1> basic_json_encoder<CharT, Sink, Allocator>::comma = {','};
11171117
template <typename CharT,typename Sink,typename Allocator>
1118-
const CharT basic_json_encoder<CharT,Sink,Allocator>::comma_space[2] = {',', ' '};
1118+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::comma_space = {',', ' '};
11191119
template <typename CharT,typename Sink,typename Allocator>
1120-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_comma[2] = {' ', ','};
1120+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::space_comma = {' ', ','};
11211121
template <typename CharT,typename Sink,typename Allocator>
1122-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_comma_space[3] = {' ', ',', ' '};
1122+
std::array<CharT,3> basic_json_encoder<CharT,Sink,Allocator>::space_comma_space = {' ', ',', ' '};
11231123

11241124
template <typename CharT, typename Sink, typename Allocator>
1125-
const CharT basic_json_encoder<CharT, Sink, Allocator>::left_brace[1] = {'{'};
1125+
std::array<CharT,1> basic_json_encoder<CharT, Sink, Allocator>::left_brace = {'{'};
11261126
template <typename CharT,typename Sink,typename Allocator>
1127-
const CharT basic_json_encoder<CharT,Sink,Allocator>::right_brace[1] = {'}'};
1127+
std::array<CharT,1> basic_json_encoder<CharT,Sink,Allocator>::right_brace = {'}'};
11281128
template <typename CharT,typename Sink,typename Allocator>
1129-
const CharT basic_json_encoder<CharT,Sink,Allocator>::left_brace_space[2] = {'{', ' '};
1129+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::left_brace_space = {'{', ' '};
11301130
template <typename CharT,typename Sink,typename Allocator>
1131-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_right_brace[2] = {' ', '}'};
1131+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::space_right_brace = {' ', '}'};
11321132

11331133
template <typename CharT, typename Sink, typename Allocator>
1134-
const CharT basic_json_encoder<CharT, Sink, Allocator>::left_bracket[1] = {'['};
1134+
std::array<CharT,1> basic_json_encoder<CharT, Sink, Allocator>::left_bracket = {'['};
11351135
template <typename CharT,typename Sink,typename Allocator>
1136-
const CharT basic_json_encoder<CharT,Sink,Allocator>::right_bracket[1] = {']'};
1136+
std::array<CharT,1> basic_json_encoder<CharT,Sink,Allocator>::right_bracket = {']'};
11371137
template <typename CharT,typename Sink,typename Allocator>
1138-
const CharT basic_json_encoder<CharT,Sink,Allocator>::left_bracket_space[2] = {'[', ' '};
1138+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::left_bracket_space = {'[', ' '};
11391139
template <typename CharT,typename Sink,typename Allocator>
1140-
const CharT basic_json_encoder<CharT,Sink,Allocator>::space_right_bracket[2] = {' ', ']'};
1140+
std::array<CharT,2> basic_json_encoder<CharT,Sink,Allocator>::space_right_bracket = {' ', ']'};
11411141

11421142
template <typename CharT,typename Sink=jsoncons::stream_sink<CharT>,typename Allocator=std::allocator<char>>
11431143
class basic_compact_json_encoder final : public basic_json_visitor<CharT>

0 commit comments

Comments
 (0)