static void encode(util::OctetStream& output, value_type tag) { std::size_t const preamble = tag.preamble() & 0xE0; std::size_t const number = tag.number(); if (number < 0x1F) { output.append(static_cast<util::OctetStream::value_type>(preamble | (number & 0x1F))); } else { output.append(static_cast<util::OctetStream::value_type>(preamble | 0x1F)); detail::encodeMultibyte(output, number); } }
static std::size_t encodedLength(value_type tag) { return 1U + ((tag.number() < 0x1F) ? 0U : detail::getMultiByteEncodedLength(tag.number())); }