diff options
author | Martin Liska <mliska@suse.cz> | 2019-10-22 11:58:27 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-10-22 09:58:27 +0000 |
commit | 076222782e4558e0bd22711c6fdcc0faf0882daf (patch) | |
tree | 3cbd3dcafcbcaf3939736dfe771309b5915a6263 /gcc/json.cc | |
parent | fc25649ccd251d9a6c2e27ac821276caaea986e4 (diff) | |
download | gcc-076222782e4558e0bd22711c6fdcc0faf0882daf.zip gcc-076222782e4558e0bd22711c6fdcc0faf0882daf.tar.gz gcc-076222782e4558e0bd22711c6fdcc0faf0882daf.tar.bz2 |
Come up with json::integer_number and use it in GCOV.
2019-10-22 Martin Liska <mliska@suse.cz>
* diagnostic-format-json.cc (json_from_expanded_location):
Use json::integer_number.
* gcov.c (output_intermediate_json_line): Use new
json::integer_number.
(output_json_intermediate_file): Likewise.
* json.cc (number::print): Move to ...
(float_number::print): ... this.
(integer_number::print): New.
(test_writing_numbers): Move to ...
(test_writing_float_numbers): ... this.
(test_writing_integer_numbers): New.
(json_cc_tests): Register test_writing_integer_numbers.
* json.h (class value): Add forward declaration
for float_number and integer_number.
(enum kind): Add JSON_INTEGER and JSON_FLOAT.
(class number): Move to ...
(class float_number): ... this.
(class integer_number): New.
* optinfo-emit-json.cc (optrecord_json_writer::impl_location_to_json):
Use json::integer_number.
(optrecord_json_writer::location_to_json): Likewise.
(optrecord_json_writer::profile_count_to_json): Likewise.
(optrecord_json_writer::pass_to_json): Likewise.
From-SVN: r277284
Diffstat (limited to 'gcc/json.cc')
-rw-r--r-- | gcc/json.cc | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/gcc/json.cc b/gcc/json.cc index 512e2e5..bec6fc5 100644 --- a/gcc/json.cc +++ b/gcc/json.cc @@ -154,18 +154,31 @@ array::append (value *v) m_elements.safe_push (v); } -/* class json::number, a subclass of json::value, wrapping a double. */ +/* class json::float_number, a subclass of json::value, wrapping a double. */ -/* Implementation of json::value::print for json::number. */ +/* Implementation of json::value::print for json::float_number. */ void -number::print (pretty_printer *pp) const +float_number::print (pretty_printer *pp) const { char tmp[1024]; snprintf (tmp, sizeof (tmp), "%g", m_value); pp_string (pp, tmp); } +/* class json::integer_number, a subclass of json::value, wrapping a long. */ + +/* Implementation of json::value::print for json::integer_number. */ + +void +integer_number::print (pretty_printer *pp) const +{ + char tmp[1024]; + snprintf (tmp, sizeof (tmp), "%ld", m_value); + pp_string (pp, tmp); +} + + /* class json::string, a subclass of json::value. */ /* json::string's ctor. */ @@ -297,11 +310,22 @@ test_writing_arrays () /* Verify that JSON numbers are written correctly. */ static void -test_writing_numbers () +test_writing_float_numbers () +{ + assert_print_eq (float_number (0), "0"); + assert_print_eq (float_number (42), "42"); + assert_print_eq (float_number (-100), "-100"); + assert_print_eq (float_number (123456789), "1.23457e+08"); +} + +static void +test_writing_integer_numbers () { - assert_print_eq (number (0), "0"); - assert_print_eq (number (42), "42"); - assert_print_eq (number (-100), "-100"); + assert_print_eq (integer_number (0), "0"); + assert_print_eq (integer_number (42), "42"); + assert_print_eq (integer_number (-100), "-100"); + assert_print_eq (integer_number (123456789), "123456789"); + assert_print_eq (integer_number (-123456789), "-123456789"); } /* Verify that JSON strings are written correctly. */ @@ -337,7 +361,8 @@ json_cc_tests () test_object_get (); test_writing_objects (); test_writing_arrays (); - test_writing_numbers (); + test_writing_float_numbers (); + test_writing_integer_numbers (); test_writing_strings (); test_writing_literals (); } |