void do_double_value(double value, uint8_t precision) override { begin_value(); if (is_nan(value) && format_.replace_nan()) { bos_.write(format_.nan_replacement()); } else if (is_pos_inf(value) && format_.replace_pos_inf()) { bos_.write(format_.pos_inf_replacement()); } else if (is_neg_inf(value) && format_.replace_neg_inf()) { bos_.write(format_.neg_inf_replacement()); } //else if (format_.floatfield() != 0) //{ //std::basic_ostringstream<CharT> os; //os.imbue(std::locale::classic()); //os.setf(format_.floatfield(), std::ios::floatfield); //os << std::showpoint << std::setprecision(format_.precision()) << value; //*os_ << os.str(); //} else { fp_.print(value,precision,bos_); } end_value(); }
void do_double_value(double value) override { begin_value(); if (is_nan(value) && format_.replace_nan()) { *os_ << format_.nan_replacement(); } else if (is_pos_inf(value) && format_.replace_pos_inf()) { *os_ << format_.pos_inf_replacement(); } else if (is_neg_inf(value) && format_.replace_neg_inf()) { *os_ << format_.neg_inf_replacement(); } else if (format_.floatfield() != 0) { std::basic_ostringstream<Char> os; os.imbue(std::locale::classic()); os.setf(format_.floatfield(), std::ios::floatfield); os << std::showpoint << std::setprecision(format_.precision()) << value; *os_ << os.str(); } else { std::basic_string<Char> buf = float_to_string<Char>(value,format_.precision()); *os_ << buf; } end_value(); }
void do_bool_value(bool value) override { begin_value(); *os_ << (value ? json_char_traits<Char,sizeof(Char)>::true_literal() : json_char_traits<Char,sizeof(Char)>::false_literal()); end_value(); }
void do_ulonglong_value(unsigned long long value) override { begin_value(); *os_ << value; end_value(); }
void do_longlong_value(long long value) override { begin_value(); *os_ << value; end_value(); }
void do_null_value() override { begin_value(); *os_ << json_char_traits<Char,sizeof(Char)>::null_literal(); end_value(); }
virtual void write_bool(bool value) { begin_value(); os_ << (value ? json_char_traits<Char,sizeof(Char)>::true_literal() : json_char_traits<Char,sizeof(Char)>::false_literal()); end_value(); }
virtual void write_ulonglong(unsigned long long value) { begin_value(); os_ << value; end_value(); }
virtual void write_longlong(long long value) { begin_value(); os_ << value; end_value(); }
virtual void write_null() { begin_value(); os_ << json_char_traits<Char,sizeof(Char)>::null_literal(); end_value(); }
void do_null_value() override { begin_value(); auto buf = json_literals<CharT>::null_literal(); bos_.write(buf.first,buf.second); end_value(); }
void do_string_value(const Char* value, size_t length) override { begin_value(); os_->put('\"'); escape_string<Char>(value, length, format_, *os_); os_->put('\"'); end_value(); }
virtual void write_string(const Char* value, size_t length) { begin_value(); os_.put('\"'); escape_string<Char>(value, length, format_, os_); os_.put('\"'); end_value(); }
void do_string_value(const CharT* value, size_t length) override { begin_value(); bos_. put('\"'); escape_string<CharT>(value, length, format_, bos_); bos_. put('\"'); end_value(); }
void do_bool_value(bool value) override { begin_value(); if (value) { auto buf = json_literals<CharT>::true_literal(); bos_.write(buf.first,buf.second); } else { auto buf = json_literals<CharT>::false_literal(); bos_.write(buf.first,buf.second); } end_value(); }
void do_uinteger_value(uint64_t value) override { begin_value(); print_uinteger(value,bos_); end_value(); }