Exemple #1
0
URI::URI(uri_identifier_code_t id, const Span<const uint8_t> &uri_field) :
    _uri(uri_field.size() ? new uint8_t[uri_id_code_size + uri_field.size()] : NULL),
    _uri_size(uri_id_code_size + uri_field.size())
{
    _uri[uri_id_index] = id;
    memcpy(_uri + uri_field_index, uri_field.data(), uri_field.size());
}
Exemple #2
0
void Text::set_text(
    encoding_t text_encoding,
    const Span<const uint8_t> &language_code,
    const Span<const uint8_t> &text
)
{
    delete[] _text_record;

    _text_record_size = header_size + language_code.size() + text.size();
    _text_record = new uint8_t[_text_record_size];

    // build the header
    _text_record[header_index] = 0;
    if (text_encoding == UTF16) {
        _text_record[header_index] |= utf16_encoding_bit;
    }
    _text_record[header_index] |= language_code.size();

    // language code
    memcpy(_text_record + language_code_index, language_code.data(), language_code.size());

    // actual text
    memcpy(_text_record + language_code_index + language_code.size(), text.data(), text.size());
}
void testRuntimeSpan(Span sp)
{
    ASSERT_NOEXCEPT(std::as_bytes(sp));

    auto spBytes = std::as_bytes(sp);
    using SB = decltype(spBytes);
    ASSERT_SAME_TYPE(const std::byte, typename SB::element_type);

    if (sp.extent == std::dynamic_extent)
        assert(spBytes.extent == std::dynamic_extent);
    else
        assert(spBytes.extent == sizeof(typename Span::element_type) * sp.extent);

    assert((void *) spBytes.data() == (void *) sp.data());
    assert(spBytes.size() == sp.size_bytes());
}
Exemple #4
0
void URI::set_uri(
    uri_identifier_code_t id,
    const Span<const uint8_t> &uri_field
)
{
    delete[] _uri;

    if (uri_field.empty()) {
        _uri = NULL;
        _uri_size = 0;
        return;
    }

    _uri = new uint8_t[uri_id_code_size + uri_field.size()];
    _uri_size = uri_id_code_size + uri_field.size();
    _uri[uri_id_index] = id;
    memcpy(_uri + uri_field_index, uri_field.data(), uri_field.size());
}
Exemple #5
0
 void set_payload(Span new_load)
 {
   pckt_->set_data_end(pckt_->ip_header_length() + header_size() + new_load.size());
   memcpy(payload().data(), new_load.data(), payload().size());
 }
Exemple #6
0
void testRuntimeSpan(Span sp)
{
    _LIBCPP_ASSERT(sp.back(), "");
    assert(std::addressof(sp.back()) == sp.data() + sp.size() - 1);
}
Exemple #7
0
constexpr bool testConstexprSpan(Span sp)
{
    _LIBCPP_ASSERT(sp.back(), "");
    return std::addressof(sp.back()) == sp.data() + sp.size() - 1;
}