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();
    }
Exemple #11
0
    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();
    }
Exemple #14
0
    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();
    }
Exemple #15
0
    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();
    }
Exemple #16
0
 void do_uinteger_value(uint64_t value) override
 {
     begin_value();
     print_uinteger(value,bos_);
     end_value();
 }