Merge branch 'develop' of https://github.com/nlohmann/json into binary_type
This commit is contained in:
		
						commit
						c0cf67ead3
					
				
					 5 changed files with 212 additions and 9 deletions
				
			
		|  | @ -11886,6 +11886,7 @@ class json_ref | |||
| #include <cstring> // memcpy
 | ||||
| #include <limits> // numeric_limits
 | ||||
| #include <string> // string
 | ||||
| #include <cmath> // isnan, isinf
 | ||||
| 
 | ||||
| // #include <nlohmann/detail/input/binary_reader.hpp>
 | ||||
| 
 | ||||
|  | @ -12184,8 +12185,35 @@ class binary_writer | |||
| 
 | ||||
|             case value_t::number_float: | ||||
|             { | ||||
|                 oa->write_character(get_cbor_float_prefix(j.m_value.number_float)); | ||||
|                 write_number(j.m_value.number_float); | ||||
|                 if (std::isnan(j.m_value.number_float)) | ||||
|                 { | ||||
|                     // NaN is 0xf97e00 in CBOR
 | ||||
|                     oa->write_character(to_char_type(0xF9)); | ||||
|                     oa->write_character(to_char_type(0x7E)); | ||||
|                     oa->write_character(to_char_type(0x00)); | ||||
|                 } | ||||
|                 else if (std::isinf(j.m_value.number_float)) | ||||
|                 { | ||||
|                     // Infinity is 0xf97c00, -Infinity is 0xf9fc00
 | ||||
|                     oa->write_character(to_char_type(0xf9)); | ||||
|                     oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC)); | ||||
|                     oa->write_character(to_char_type(0x00)); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     if (j.m_value.number_float >= std::numeric_limits<float>::lowest() and | ||||
|                             j.m_value.number_float <= std::numeric_limits<float>::max() and | ||||
|                             static_cast<double>(static_cast<float>(j.m_value.number_float)) == j.m_value.number_float) | ||||
|                     { | ||||
|                         oa->write_character(get_cbor_float_prefix(static_cast<float>(j.m_value.number_float))); | ||||
|                         write_number(static_cast<float>(j.m_value.number_float)); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         oa->write_character(get_cbor_float_prefix(j.m_value.number_float)); | ||||
|                         write_number(j.m_value.number_float); | ||||
|                     } | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
| 
 | ||||
|  | @ -22670,7 +22698,7 @@ class basic_json | |||
|           - break (0xFF) | ||||
| 
 | ||||
|     @param[in] j  JSON value to serialize | ||||
|     @return MessagePack serialization as byte vector | ||||
|     @return CBOR serialization as byte vector | ||||
| 
 | ||||
|     @complexity Linear in the size of the JSON value @a j. | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue