Lines Matching refs:std
51 explicit binary_writer(output_adapter_t<CharType> adapter) : oa(std::move(adapter))
116 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
118 else if (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
121 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
123 else if (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())
126 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
128 else if (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())
131 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
136 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
146 write_number(static_cast<std::uint8_t>(0x20 + positive_number));
148 else if (positive_number <= (std::numeric_limits<std::uint8_t>::max)())
151 write_number(static_cast<std::uint8_t>(positive_number));
153 else if (positive_number <= (std::numeric_limits<std::uint16_t>::max)())
156 write_number(static_cast<std::uint16_t>(positive_number));
158 else if (positive_number <= (std::numeric_limits<std::uint32_t>::max)())
161 write_number(static_cast<std::uint32_t>(positive_number));
166 write_number(static_cast<std::uint64_t>(positive_number));
176 write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
178 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
181 write_number(static_cast<std::uint8_t>(j.m_value.number_unsigned));
183 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
186 write_number(static_cast<std::uint16_t>(j.m_value.number_unsigned));
188 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
191 write_number(static_cast<std::uint32_t>(j.m_value.number_unsigned));
196 write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
203 if (std::isnan(j.m_value.number_float))
210 else if (std::isinf(j.m_value.number_float))
230 write_number(static_cast<std::uint8_t>(0x60 + N));
232 else if (N <= (std::numeric_limits<std::uint8_t>::max)())
235 write_number(static_cast<std::uint8_t>(N));
237 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
240 write_number(static_cast<std::uint16_t>(N));
242 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
245 write_number(static_cast<std::uint32_t>(N));
248 else if (N <= (std::numeric_limits<std::uint64_t>::max)())
251 write_number(static_cast<std::uint64_t>(N));
268 write_number(static_cast<std::uint8_t>(0x80 + N));
270 else if (N <= (std::numeric_limits<std::uint8_t>::max)())
273 write_number(static_cast<std::uint8_t>(N));
275 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
278 write_number(static_cast<std::uint16_t>(N));
280 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
283 write_number(static_cast<std::uint32_t>(N));
286 else if (N <= (std::numeric_limits<std::uint64_t>::max)())
289 write_number(static_cast<std::uint64_t>(N));
305 if (j.m_value.binary->subtype() <= (std::numeric_limits<std::uint8_t>::max)())
307 write_number(static_cast<std::uint8_t>(0xd8));
308 write_number(static_cast<std::uint8_t>(j.m_value.binary->subtype()));
310 else if (j.m_value.binary->subtype() <= (std::numeric_limits<std::uint16_t>::max)())
312 write_number(static_cast<std::uint8_t>(0xd9));
313 write_number(static_cast<std::uint16_t>(j.m_value.binary->subtype()));
315 else if (j.m_value.binary->subtype() <= (std::numeric_limits<std::uint32_t>::max)())
317 write_number(static_cast<std::uint8_t>(0xda));
318 write_number(static_cast<std::uint32_t>(j.m_value.binary->subtype()));
320 else if (j.m_value.binary->subtype() <= (std::numeric_limits<std::uint64_t>::max)())
322 write_number(static_cast<std::uint8_t>(0xdb));
323 write_number(static_cast<std::uint64_t>(j.m_value.binary->subtype()));
331 write_number(static_cast<std::uint8_t>(0x40 + N));
333 else if (N <= (std::numeric_limits<std::uint8_t>::max)())
336 write_number(static_cast<std::uint8_t>(N));
338 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
341 write_number(static_cast<std::uint16_t>(N));
343 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
346 write_number(static_cast<std::uint32_t>(N));
349 else if (N <= (std::numeric_limits<std::uint64_t>::max)())
352 write_number(static_cast<std::uint64_t>(N));
370 write_number(static_cast<std::uint8_t>(0xA0 + N));
372 else if (N <= (std::numeric_limits<std::uint8_t>::max)())
375 write_number(static_cast<std::uint8_t>(N));
377 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
380 write_number(static_cast<std::uint16_t>(N));
382 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
385 write_number(static_cast<std::uint32_t>(N));
388 else if (N <= (std::numeric_limits<std::uint64_t>::max)())
391 write_number(static_cast<std::uint64_t>(N));
441 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
443 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
447 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
449 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
453 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
455 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
459 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
461 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
465 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
473 write_number(static_cast<std::int8_t>(j.m_value.number_integer));
475 else if (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() &&
476 j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
480 write_number(static_cast<std::int8_t>(j.m_value.number_integer));
482 else if (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() &&
483 j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
487 write_number(static_cast<std::int16_t>(j.m_value.number_integer));
489 else if (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() &&
490 j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
494 write_number(static_cast<std::int32_t>(j.m_value.number_integer));
496 else if (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() &&
497 j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
501 write_number(static_cast<std::int64_t>(j.m_value.number_integer));
512 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
514 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())
518 write_number(static_cast<std::uint8_t>(j.m_value.number_integer));
520 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())
524 write_number(static_cast<std::uint16_t>(j.m_value.number_integer));
526 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())
530 write_number(static_cast<std::uint32_t>(j.m_value.number_integer));
532 else if (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
536 write_number(static_cast<std::uint64_t>(j.m_value.number_integer));
554 write_number(static_cast<std::uint8_t>(0xA0 | N));
556 else if (N <= (std::numeric_limits<std::uint8_t>::max)())
560 write_number(static_cast<std::uint8_t>(N));
562 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
566 write_number(static_cast<std::uint16_t>(N));
568 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
572 write_number(static_cast<std::uint32_t>(N));
589 write_number(static_cast<std::uint8_t>(0x90 | N));
591 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
595 write_number(static_cast<std::uint16_t>(N));
597 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
601 write_number(static_cast<std::uint32_t>(N));
620 if (N <= (std::numeric_limits<std::uint8_t>::max)())
622 std::uint8_t output_type{};
659 write_number(static_cast<std::uint8_t>(N));
662 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
664 std::uint8_t output_type = use_ext
669 write_number(static_cast<std::uint16_t>(N));
671 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
673 std::uint8_t output_type = use_ext
678 write_number(static_cast<std::uint32_t>(N));
684 write_number(static_cast<std::int8_t>(j.m_value.binary->subtype()));
702 write_number(static_cast<std::uint8_t>(0x80 | (N & 0xF)));
704 else if (N <= (std::numeric_limits<std::uint16_t>::max)())
708 write_number(static_cast<std::uint16_t>(N));
710 else if (N <= (std::numeric_limits<std::uint32_t>::max)())
714 write_number(static_cast<std::uint32_t>(N));
808 const bool same_prefix = std::all_of(j.begin() + 1, j.end(),
814 std::vector<CharType> bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type
816 if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end()))
906 const bool same_prefix = std::all_of(j.begin(), j.end(),
912 std::vector<CharType> bjdx = {'[', '{', 'S', 'H', 'T', 'F', 'N', 'Z'}; // excluded markers in bjdata optimized type
914 if (same_prefix && !(use_bjdata && std::find(bjdx.begin(), bjdx.end(), first_prefix) != bjdx.end()))
960 static std::size_t calc_bson_entry_header_size(const string_t& name, const BasicJsonType& j)
965 JSON_THROW(out_of_range::create(409, concat("BSON key cannot contain code point U+0000 (at byte ", std::to_string(it), ")"), &j));
976 const std::uint8_t element_type)
1007 static std::size_t calc_bson_string_size(const string_t& value)
1009 return sizeof(std::int32_t) + value.size() + 1ul;
1020 write_number<std::int32_t>(static_cast<std::int32_t>(value.size() + 1ul), true);
1037 static std::size_t calc_bson_integer_size(const std::int64_t value)
1039 return (std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)()
1040 ? sizeof(std::int32_t)
1041 : sizeof(std::int64_t);
1048 const std::int64_t value)
1050 if ((std::numeric_limits<std::int32_t>::min)() <= value && value <= (std::numeric_limits<std::int32_t>::max)())
1053 write_number<std::int32_t>(static_cast<std::int32_t>(value), true);
1058 write_number<std::int64_t>(static_cast<std::int64_t>(value), true);
1065 static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept
1067 return (value <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
1068 ? sizeof(std::int32_t)
1069 : sizeof(std::int64_t);
1078 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
1081 write_number<std::int32_t>(static_cast<std::int32_t>(j.m_value.number_unsigned), true);
1083 else if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
1086 write_number<std::int64_t>(static_cast<std::int64_t>(j.m_value.number_unsigned), true);
1090 JSON_THROW(out_of_range::create(407, concat("integer number ", std::to_string(j.m_value.number_unsigned), " cannot be represented by BSON as it does not fit int64"), &j));
1107 static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value)
1109 std::size_t array_index = 0ul;
1111 const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), static_cast<std::size_t>(0), [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type & el)
1113 return result + calc_bson_element_size(std::to_string(array_index++), el);
1116 return sizeof(std::int32_t) + embedded_document_size + 1ul;
1122 static std::size_t calc_bson_binary_size(const typename BasicJsonType::binary_t& value)
1124 return sizeof(std::int32_t) + value.size() + 1ul;
1134 write_number<std::int32_t>(static_cast<std::int32_t>(calc_bson_array_size(value)), true);
1136 std::size_t array_index = 0ul;
1140 write_bson_element(std::to_string(array_index++), el);
1154 write_number<std::int32_t>(static_cast<std::int32_t>(value.size()), true);
1155 write_number(value.has_subtype() ? static_cast<std::uint8_t>(value.subtype()) : static_cast<std::uint8_t>(0x00));
1164 static std::size_t calc_bson_element_size(const string_t& name,
1259 static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value)
1261 std::size_t document_size = std::accumulate(value.begin(), value.end(), static_cast<std::size_t>(0),
1267 return sizeof(std::int32_t) + document_size + 1ul;
1276 write_number<std::int32_t>(static_cast<std::int32_t>(calc_bson_object_size(value)), true);
1319 template<typename NumberType, typename std::enable_if<
1320 std::is_floating_point<NumberType>::value, int>::type = 0>
1333 template<typename NumberType, typename std::enable_if<
1334 std::is_unsigned<NumberType>::value, int>::type = 0>
1339 if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
1345 write_number(static_cast<std::uint8_t>(n), use_bjdata);
1347 else if (n <= (std::numeric_limits<std::uint8_t>::max)())
1353 write_number(static_cast<std::uint8_t>(n), use_bjdata);
1355 else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
1361 write_number(static_cast<std::int16_t>(n), use_bjdata);
1363 else if (use_bjdata && n <= static_cast<uint64_t>((std::numeric_limits<uint16_t>::max)()))
1369 write_number(static_cast<std::uint16_t>(n), use_bjdata);
1371 else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
1377 write_number(static_cast<std::int32_t>(n), use_bjdata);
1379 else if (use_bjdata && n <= static_cast<uint64_t>((std::numeric_limits<uint32_t>::max)()))
1385 write_number(static_cast<std::uint32_t>(n), use_bjdata);
1387 else if (n <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
1393 write_number(static_cast<std::int64_t>(n), use_bjdata);
1395 else if (use_bjdata && n <= (std::numeric_limits<uint64_t>::max)())
1401 write_number(static_cast<std::uint64_t>(n), use_bjdata);
1412 for (std::size_t i = 0; i < number.size(); ++i)
1414 oa->write_character(to_char_type(static_cast<std::uint8_t>(number[i])));
1420 template < typename NumberType, typename std::enable_if <
1421 std::is_signed<NumberType>::value&&
1422 !std::is_floating_point<NumberType>::value, int >::type = 0 >
1427 if ((std::numeric_limits<std::int8_t>::min)() <= n && n <= (std::numeric_limits<std::int8_t>::max)())
1433 write_number(static_cast<std::int8_t>(n), use_bjdata);
1435 else if (static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint8_t>::max)()))
1441 write_number(static_cast<std::uint8_t>(n), use_bjdata);
1443 else if ((std::numeric_limits<std::int16_t>::min)() <= n && n <= (std::numeric_limits<std::int16_t>::max)())
1449 write_number(static_cast<std::int16_t>(n), use_bjdata);
1451 else if (use_bjdata && (static_cast<std::int64_t>((std::numeric_limits<std::uint16_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint16_t>::max)())))
1459 else if ((std::numeric_limits<std::int32_t>::min)() <= n && n <= (std::numeric_limits<std::int32_t>::max)())
1465 write_number(static_cast<std::int32_t>(n), use_bjdata);
1467 else if (use_bjdata && (static_cast<std::int64_t>((std::numeric_limits<std::uint32_t>::min)()) <= n && n <= static_cast<std::int64_t>((std::numeric_limits<std::uint32_t>::max)())))
1475 else if ((std::numeric_limits<std::int64_t>::min)() <= n && n <= (std::numeric_limits<std::int64_t>::max)())
1481 write_number(static_cast<std::int64_t>(n), use_bjdata);
1493 for (std::size_t i = 0; i < number.size(); ++i)
1495 oa->write_character(to_char_type(static_cast<std::uint8_t>(number[i])));
1516 if ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
1520 if ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())
1524 if ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
1528 if (use_bjdata && ((std::numeric_limits<std::uint16_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)()))
1532 if ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
1536 if (use_bjdata && ((std::numeric_limits<std::uint32_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)()))
1540 if ((std::numeric_limits<std::int64_t>::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())
1550 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int8_t>::max)()))
1554 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint8_t>::max)()))
1558 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int16_t>::max)()))
1562 if (use_bjdata && j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint16_t>::max)()))
1566 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int32_t>::max)()))
1570 if (use_bjdata && j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::uint32_t>::max)()))
1574 if (j.m_value.number_unsigned <= static_cast<std::uint64_t>((std::numeric_limits<std::int64_t>::max)()))
1578 if (use_bjdata && j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())
1620 std::map<string_t, CharType> bjdtype = {{"uint8", 'U'}, {"int8", 'i'}, {"uint16", 'u'}, {"int16", 'I'},
1633 std::size_t len = (value.at(key).empty() ? 0 : 1);
1636 len *= static_cast<std::size_t>(el.m_value.number_unsigned);
1658 write_number(static_cast<std::uint8_t>(el.m_value.number_unsigned), true);
1665 write_number(static_cast<std::int8_t>(el.m_value.number_integer), true);
1672 write_number(static_cast<std::uint16_t>(el.m_value.number_unsigned), true);
1679 write_number(static_cast<std::int16_t>(el.m_value.number_integer), true);
1686 write_number(static_cast<std::uint32_t>(el.m_value.number_unsigned), true);
1693 write_number(static_cast<std::int32_t>(el.m_value.number_integer), true);
1700 write_number(static_cast<std::uint64_t>(el.m_value.number_unsigned), true);
1707 write_number(static_cast<std::int64_t>(el.m_value.number_integer), true);
1748 std::array<CharType, sizeof(NumberType)> vec{};
1749 std::memcpy(vec.data(), &n, sizeof(NumberType));
1755 std::reverse(vec.begin(), vec.end());
1767 if (static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
1768 static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
1794 enable_if_t < std::is_signed<C>::value && std::is_signed<char>::value > * = nullptr >
1795 static constexpr CharType to_char_type(std::uint8_t x) noexcept
1801 enable_if_t < std::is_signed<C>::value && std::is_unsigned<char>::value > * = nullptr >
1802 static CharType to_char_type(std::uint8_t x) noexcept
1804 static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t");
1805 static_assert(std::is_trivial<CharType>::value, "CharType must be trivial");
1807 std::memcpy(&result, &x, sizeof(x));
1812 enable_if_t<std::is_unsigned<C>::value>* = nullptr>
1813 static constexpr CharType to_char_type(std::uint8_t x) noexcept
1820 std::is_signed<C>::value &&
1821 std::is_signed<char>::value &&
1822 std::is_same<char, typename std::remove_cv<InputCharType>::type>::value