MCPcopy Create free account
hub / github.com/danielaparker/jsoncons / visit_end_object

Function visit_end_object

include/jsoncons_ext/csv/csv_encoder.hpp:339–488  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

337 }
338
339 JSONCONS_VISITOR_RETURN_TYPE visit_end_object(const ser_context&, std::error_code& ec) override
340 {
341 JSONCONS_ASSERT(!stack_.empty());
342
343 switch (stack_.back().item_kind_)
344 {
345 case stack_item_kind::flat_object:
346 case stack_item_kind::object:
347 if (parent(stack_).item_kind_ == stack_item_kind::row_mapping || parent(stack_).item_kind_ == stack_item_kind::flat_row_mapping)
348 {
349 if (stack_[0].count_ == 0)
350 {
351 bool first = true;
352 for (std::size_t i = 0; i < column_paths_.size(); ++i)
353 {
354 auto it = column_path_name_map_.find(column_paths_[i]);
355 if (it != column_path_name_map_.end())
356 {
357 if (!first)
358 {
359 sink_.push_back(field_delimiter_);
360 }
361 else
362 {
363 first = false;
364 }
365 sink_.append(it->second.data(), it->second.length());
366 }
367 }
368 sink_.append(line_delimiter_.data(), line_delimiter_.length());
369 }
370 for (std::size_t i = 0; i < column_paths_.size(); ++i)
371 {
372 if (i > 0)
373 {
374 sink_.push_back(field_delimiter_);
375 }
376 auto it = column_path_value_map_.find(column_paths_[i]);
377 if (it != column_path_value_map_.end())
378 {
379 sink_.append(it->second.data(), it->second.length());
380 it->second.clear();
381 }
382 }
383 sink_.append(line_delimiter_.data(), line_delimiter_.length());
384 }
385 break;
386 case stack_item_kind::column_mapping:
387 {
388 // Write header
389 {
390 bool first = true;
391 for (std::size_t i = 0; i < column_paths_.size(); ++i)
392 {
393 auto it = column_path_name_map_.find(column_paths_[i]);
394 if (it != column_path_name_map_.end())
395 {
396 if (!first)

Callers

nothing calls this directly

Calls 13

pop_backMethod · 0.80
emptyMethod · 0.45
backMethod · 0.45
sizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
appendMethod · 0.45
dataMethod · 0.45
lengthMethod · 0.45
clearMethod · 0.45
cbeginMethod · 0.45

Tested by

no test coverage detected