👌 replaced static_cast to CharType by conversion function #1286
This commit is contained in:
		
							parent
							
								
									9294e25c98
								
							
						
					
					
						commit
						b49f76931f
					
				
					 3 changed files with 212 additions and 162 deletions
				
			
		| 
						 | 
				
			
			@ -193,13 +193,13 @@ struct is_constructible_object_type_impl <
 | 
			
		|||
    static constexpr bool value =
 | 
			
		||||
        std::is_constructible<typename ConstructibleObjectType::key_type,
 | 
			
		||||
        typename object_t::key_type>::value and
 | 
			
		||||
        std::is_same<typename object_t::mapped_type,
 | 
			
		||||
        typename ConstructibleObjectType::mapped_type>::value or
 | 
			
		||||
        (has_from_json<BasicJsonType,
 | 
			
		||||
        (std::is_same<typename object_t::mapped_type,
 | 
			
		||||
         typename ConstructibleObjectType::mapped_type>::value or
 | 
			
		||||
         has_non_default_from_json <
 | 
			
		||||
         BasicJsonType,
 | 
			
		||||
         typename ConstructibleObjectType::mapped_type >::value);
 | 
			
		||||
         (has_from_json<BasicJsonType,
 | 
			
		||||
          typename ConstructibleObjectType::mapped_type>::value or
 | 
			
		||||
          has_non_default_from_json <
 | 
			
		||||
          BasicJsonType,
 | 
			
		||||
          typename ConstructibleObjectType::mapped_type >::value));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <typename BasicJsonType, typename ConstructibleObjectType>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,15 +43,15 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            case value_t::null:
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>(0xF6));
 | 
			
		||||
                oa->write_character(to_char_type(0xF6));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            case value_t::boolean:
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(j.m_value.boolean
 | 
			
		||||
                                    ? static_cast<CharType>(0xF5)
 | 
			
		||||
                                    : static_cast<CharType>(0xF4));
 | 
			
		||||
                                    ? to_char_type(0xF5)
 | 
			
		||||
                                    : to_char_type(0xF4));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -68,22 +68,22 @@ class binary_writer
 | 
			
		|||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x18));
 | 
			
		||||
                        oa->write_character(to_char_type(0x18));
 | 
			
		||||
                        write_number(static_cast<uint8_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x19));
 | 
			
		||||
                        oa->write_character(to_char_type(0x19));
 | 
			
		||||
                        write_number(static_cast<uint16_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x1A));
 | 
			
		||||
                        oa->write_character(to_char_type(0x1A));
 | 
			
		||||
                        write_number(static_cast<uint32_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x1B));
 | 
			
		||||
                        oa->write_character(to_char_type(0x1B));
 | 
			
		||||
                        write_number(static_cast<uint64_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -98,22 +98,22 @@ class binary_writer
 | 
			
		|||
                    }
 | 
			
		||||
                    else if (positive_number <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x38));
 | 
			
		||||
                        oa->write_character(to_char_type(0x38));
 | 
			
		||||
                        write_number(static_cast<uint8_t>(positive_number));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (positive_number <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x39));
 | 
			
		||||
                        oa->write_character(to_char_type(0x39));
 | 
			
		||||
                        write_number(static_cast<uint16_t>(positive_number));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (positive_number <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x3A));
 | 
			
		||||
                        oa->write_character(to_char_type(0x3A));
 | 
			
		||||
                        write_number(static_cast<uint32_t>(positive_number));
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0x3B));
 | 
			
		||||
                        oa->write_character(to_char_type(0x3B));
 | 
			
		||||
                        write_number(static_cast<uint64_t>(positive_number));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -128,22 +128,22 @@ class binary_writer
 | 
			
		|||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x18));
 | 
			
		||||
                    oa->write_character(to_char_type(0x18));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(j.m_value.number_unsigned));
 | 
			
		||||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x19));
 | 
			
		||||
                    oa->write_character(to_char_type(0x19));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(j.m_value.number_unsigned));
 | 
			
		||||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x1A));
 | 
			
		||||
                    oa->write_character(to_char_type(0x1A));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(j.m_value.number_unsigned));
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x1B));
 | 
			
		||||
                    oa->write_character(to_char_type(0x1B));
 | 
			
		||||
                    write_number(static_cast<uint64_t>(j.m_value.number_unsigned));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			@ -166,23 +166,23 @@ class binary_writer
 | 
			
		|||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x78));
 | 
			
		||||
                    oa->write_character(to_char_type(0x78));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x79));
 | 
			
		||||
                    oa->write_character(to_char_type(0x79));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x7A));
 | 
			
		||||
                    oa->write_character(to_char_type(0x7A));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_START
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint64_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x7B));
 | 
			
		||||
                    oa->write_character(to_char_type(0x7B));
 | 
			
		||||
                    write_number(static_cast<uint64_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_STOP
 | 
			
		||||
| 
						 | 
				
			
			@ -204,23 +204,23 @@ class binary_writer
 | 
			
		|||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x98));
 | 
			
		||||
                    oa->write_character(to_char_type(0x98));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x99));
 | 
			
		||||
                    oa->write_character(to_char_type(0x99));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x9A));
 | 
			
		||||
                    oa->write_character(to_char_type(0x9A));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_START
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint64_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0x9B));
 | 
			
		||||
                    oa->write_character(to_char_type(0x9B));
 | 
			
		||||
                    write_number(static_cast<uint64_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_STOP
 | 
			
		||||
| 
						 | 
				
			
			@ -243,23 +243,23 @@ class binary_writer
 | 
			
		|||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xB8));
 | 
			
		||||
                    oa->write_character(to_char_type(0xB8));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xB9));
 | 
			
		||||
                    oa->write_character(to_char_type(0xB9));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xBA));
 | 
			
		||||
                    oa->write_character(to_char_type(0xBA));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_START
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint64_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xBB));
 | 
			
		||||
                    oa->write_character(to_char_type(0xBB));
 | 
			
		||||
                    write_number(static_cast<uint64_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                // LCOV_EXCL_STOP
 | 
			
		||||
| 
						 | 
				
			
			@ -287,15 +287,15 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            case value_t::null: // nil
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>(0xC0));
 | 
			
		||||
                oa->write_character(to_char_type(0xC0));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            case value_t::boolean: // true and false
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(j.m_value.boolean
 | 
			
		||||
                                    ? static_cast<CharType>(0xC3)
 | 
			
		||||
                                    : static_cast<CharType>(0xC2));
 | 
			
		||||
                                    ? to_char_type(0xC3)
 | 
			
		||||
                                    : to_char_type(0xC2));
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -314,25 +314,25 @@ class binary_writer
 | 
			
		|||
                    else if (j.m_value.number_unsigned <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // uint 8
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xCC));
 | 
			
		||||
                        oa->write_character(to_char_type(0xCC));
 | 
			
		||||
                        write_number(static_cast<uint8_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_unsigned <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // uint 16
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xCD));
 | 
			
		||||
                        oa->write_character(to_char_type(0xCD));
 | 
			
		||||
                        write_number(static_cast<uint16_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_unsigned <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // uint 32
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xCE));
 | 
			
		||||
                        oa->write_character(to_char_type(0xCE));
 | 
			
		||||
                        write_number(static_cast<uint32_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_unsigned <= (std::numeric_limits<uint64_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // uint 64
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xCF));
 | 
			
		||||
                        oa->write_character(to_char_type(0xCF));
 | 
			
		||||
                        write_number(static_cast<uint64_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -347,28 +347,28 @@ class binary_writer
 | 
			
		|||
                             j.m_value.number_integer <= (std::numeric_limits<int8_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // int 8
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xD0));
 | 
			
		||||
                        oa->write_character(to_char_type(0xD0));
 | 
			
		||||
                        write_number(static_cast<int8_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer >= (std::numeric_limits<int16_t>::min)() and
 | 
			
		||||
                             j.m_value.number_integer <= (std::numeric_limits<int16_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // int 16
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xD1));
 | 
			
		||||
                        oa->write_character(to_char_type(0xD1));
 | 
			
		||||
                        write_number(static_cast<int16_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer >= (std::numeric_limits<int32_t>::min)() and
 | 
			
		||||
                             j.m_value.number_integer <= (std::numeric_limits<int32_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // int 32
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xD2));
 | 
			
		||||
                        oa->write_character(to_char_type(0xD2));
 | 
			
		||||
                        write_number(static_cast<int32_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                    else if (j.m_value.number_integer >= (std::numeric_limits<int64_t>::min)() and
 | 
			
		||||
                             j.m_value.number_integer <= (std::numeric_limits<int64_t>::max)())
 | 
			
		||||
                    {
 | 
			
		||||
                        // int 64
 | 
			
		||||
                        oa->write_character(static_cast<CharType>(0xD3));
 | 
			
		||||
                        oa->write_character(to_char_type(0xD3));
 | 
			
		||||
                        write_number(static_cast<int64_t>(j.m_value.number_integer));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -385,25 +385,25 @@ class binary_writer
 | 
			
		|||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // uint 8
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xCC));
 | 
			
		||||
                    oa->write_character(to_char_type(0xCC));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(j.m_value.number_integer));
 | 
			
		||||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // uint 16
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xCD));
 | 
			
		||||
                    oa->write_character(to_char_type(0xCD));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(j.m_value.number_integer));
 | 
			
		||||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // uint 32
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xCE));
 | 
			
		||||
                    oa->write_character(to_char_type(0xCE));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(j.m_value.number_integer));
 | 
			
		||||
                }
 | 
			
		||||
                else if (j.m_value.number_unsigned <= (std::numeric_limits<uint64_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // uint 64
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xCF));
 | 
			
		||||
                    oa->write_character(to_char_type(0xCF));
 | 
			
		||||
                    write_number(static_cast<uint64_t>(j.m_value.number_integer));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			@ -428,19 +428,19 @@ class binary_writer
 | 
			
		|||
                else if (N <= (std::numeric_limits<uint8_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // str 8
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xD9));
 | 
			
		||||
                    oa->write_character(to_char_type(0xD9));
 | 
			
		||||
                    write_number(static_cast<uint8_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // str 16
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDA));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDA));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // str 32
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDB));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDB));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -463,13 +463,13 @@ class binary_writer
 | 
			
		|||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // array 16
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDC));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDC));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // array 32
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDD));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDD));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -493,13 +493,13 @@ class binary_writer
 | 
			
		|||
                else if (N <= (std::numeric_limits<uint16_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // map 16
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDE));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDE));
 | 
			
		||||
                    write_number(static_cast<uint16_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
                else if (N <= (std::numeric_limits<uint32_t>::max)())
 | 
			
		||||
                {
 | 
			
		||||
                    // map 32
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(0xDF));
 | 
			
		||||
                    oa->write_character(to_char_type(0xDF));
 | 
			
		||||
                    write_number(static_cast<uint32_t>(N));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -532,7 +532,7 @@ class binary_writer
 | 
			
		|||
            {
 | 
			
		||||
                if (add_prefix)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('Z'));
 | 
			
		||||
                    oa->write_character(to_char_type('Z'));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -542,8 +542,8 @@ class binary_writer
 | 
			
		|||
                if (add_prefix)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(j.m_value.boolean
 | 
			
		||||
                                        ? static_cast<CharType>('T')
 | 
			
		||||
                                        : static_cast<CharType>('F'));
 | 
			
		||||
                                        ? to_char_type('T')
 | 
			
		||||
                                        : to_char_type('F'));
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -570,7 +570,7 @@ class binary_writer
 | 
			
		|||
            {
 | 
			
		||||
                if (add_prefix)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('S'));
 | 
			
		||||
                    oa->write_character(to_char_type('S'));
 | 
			
		||||
                }
 | 
			
		||||
                write_number_with_ubjson_prefix(j.m_value.string->size(), true);
 | 
			
		||||
                oa->write_characters(
 | 
			
		||||
| 
						 | 
				
			
			@ -583,7 +583,7 @@ class binary_writer
 | 
			
		|||
            {
 | 
			
		||||
                if (add_prefix)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('['));
 | 
			
		||||
                    oa->write_character(to_char_type('['));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                bool prefix_required = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -600,14 +600,14 @@ class binary_writer
 | 
			
		|||
                    if (same_prefix)
 | 
			
		||||
                    {
 | 
			
		||||
                        prefix_required = false;
 | 
			
		||||
                        oa->write_character(static_cast<CharType>('$'));
 | 
			
		||||
                        oa->write_character(to_char_type('$'));
 | 
			
		||||
                        oa->write_character(first_prefix);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (use_count)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('#'));
 | 
			
		||||
                    oa->write_character(to_char_type('#'));
 | 
			
		||||
                    write_number_with_ubjson_prefix(j.m_value.array->size(), true);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -618,7 +618,7 @@ class binary_writer
 | 
			
		|||
 | 
			
		||||
                if (not use_count)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>(']'));
 | 
			
		||||
                    oa->write_character(to_char_type(']'));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			@ -628,7 +628,7 @@ class binary_writer
 | 
			
		|||
            {
 | 
			
		||||
                if (add_prefix)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('{'));
 | 
			
		||||
                    oa->write_character(to_char_type('{'));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                bool prefix_required = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -645,14 +645,14 @@ class binary_writer
 | 
			
		|||
                    if (same_prefix)
 | 
			
		||||
                    {
 | 
			
		||||
                        prefix_required = false;
 | 
			
		||||
                        oa->write_character(static_cast<CharType>('$'));
 | 
			
		||||
                        oa->write_character(to_char_type('$'));
 | 
			
		||||
                        oa->write_character(first_prefix);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (use_count)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('#'));
 | 
			
		||||
                    oa->write_character(to_char_type('#'));
 | 
			
		||||
                    write_number_with_ubjson_prefix(j.m_value.object->size(), true);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -667,7 +667,7 @@ class binary_writer
 | 
			
		|||
 | 
			
		||||
                if (not use_count)
 | 
			
		||||
                {
 | 
			
		||||
                    oa->write_character(static_cast<CharType>('}'));
 | 
			
		||||
                    oa->write_character(to_char_type('}'));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                break;
 | 
			
		||||
| 
						 | 
				
			
			@ -729,7 +729,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('i'));  // int8
 | 
			
		||||
                oa->write_character(to_char_type('i'));  // int8
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<uint8_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -737,7 +737,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('U'));  // uint8
 | 
			
		||||
                oa->write_character(to_char_type('U'));  // uint8
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<uint8_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -745,7 +745,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('I'));  // int16
 | 
			
		||||
                oa->write_character(to_char_type('I'));  // int16
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int16_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -753,7 +753,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('l'));  // int32
 | 
			
		||||
                oa->write_character(to_char_type('l'));  // int32
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int32_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -761,7 +761,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('L'));  // int64
 | 
			
		||||
                oa->write_character(to_char_type('L'));  // int64
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int64_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -782,7 +782,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('i'));  // int8
 | 
			
		||||
                oa->write_character(to_char_type('i'));  // int8
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int8_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -790,7 +790,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('U'));  // uint8
 | 
			
		||||
                oa->write_character(to_char_type('U'));  // uint8
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<uint8_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -798,7 +798,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('I'));  // int16
 | 
			
		||||
                oa->write_character(to_char_type('I'));  // int16
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int16_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -806,7 +806,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('l'));  // int32
 | 
			
		||||
                oa->write_character(to_char_type('l'));  // int32
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int32_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -814,7 +814,7 @@ class binary_writer
 | 
			
		|||
        {
 | 
			
		||||
            if (add_prefix)
 | 
			
		||||
            {
 | 
			
		||||
                oa->write_character(static_cast<CharType>('L'));  // int64
 | 
			
		||||
                oa->write_character(to_char_type('L'));  // int64
 | 
			
		||||
            }
 | 
			
		||||
            write_number(static_cast<int64_t>(n));
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -908,22 +908,22 @@ class binary_writer
 | 
			
		|||
 | 
			
		||||
    static constexpr CharType get_cbor_float_prefix(float /*unused*/)
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<CharType>(0xFA);  // Single-Precision Float
 | 
			
		||||
        return to_char_type(0xFA);  // Single-Precision Float
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static constexpr CharType get_cbor_float_prefix(double /*unused*/)
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<CharType>(0xFB);  // Double-Precision Float
 | 
			
		||||
        return to_char_type(0xFB);  // Double-Precision Float
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<CharType>(0xCA);  // float 32
 | 
			
		||||
        return to_char_type(0xCA);  // float 32
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<CharType>(0xCB);  // float 64
 | 
			
		||||
        return to_char_type(0xCB);  // float 64
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
 | 
			
		||||
| 
						 | 
				
			
			@ -936,6 +936,31 @@ class binary_writer
 | 
			
		|||
        return 'D';  // float 64
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template < typename C = CharType,
 | 
			
		||||
               enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = nullptr >
 | 
			
		||||
    static constexpr CharType to_char_type(std::uint8_t x) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        return *reinterpret_cast<char*>(&x);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template < typename C = CharType,
 | 
			
		||||
               enable_if_t < std::is_signed<C>::value and std::is_unsigned<char>::value > * = nullptr >
 | 
			
		||||
    static CharType to_char_type(std::uint8_t x) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
 | 
			
		||||
        static_assert(std::is_pod<CharType>::value, "CharType must be POD");
 | 
			
		||||
        CharType result;
 | 
			
		||||
        std::memcpy(&result, &x, sizeof(x));
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<typename C = CharType,
 | 
			
		||||
             enable_if_t<std::is_unsigned<C>::value>* = nullptr>
 | 
			
		||||
    static constexpr CharType to_char_type(std::uint8_t x) noexcept
 | 
			
		||||
    {
 | 
			
		||||
        return x;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  private:
 | 
			
		||||
    /// whether we can assume little endianess
 | 
			
		||||
    const bool is_little_endian = binary_reader<BasicJsonType>::little_endianess();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue