MCPcopy Create free account
hub / github.com/ccache/ccache / insert

Method insert

src/ccache/util/bytes.cpp:129–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

127}
128
129void
130Bytes::insert(const void* pos, const void* data, size_t size) noexcept
131{
132 if (size == 0) {
133 return;
134 }
135 const size_t offset = reinterpret_cast<const uint8_t*>(pos) - m_data.get();
136 if (m_size + size > m_capacity) {
137 m_capacity = std::max(2 * m_capacity, m_size + size);
138 // In C++20, use std::make_unique_for_overwrite instead.
139 auto new_data = std::unique_ptr<uint8_t[]>(new uint8_t[m_capacity]);
140 if (offset > 0) {
141 std::memcpy(new_data.get(), m_data.get(), offset);
142 }
143 if (m_size > offset) {
144 std::memcpy(
145 new_data.get() + offset + size, m_data.get() + offset, m_size - offset);
146 }
147 m_data = std::move(new_data);
148 } else if (m_size > offset) {
149 std::memmove(
150 m_data.get() + offset + size, m_data.get() + offset, m_size - offset);
151 }
152 std::memcpy(m_data.get() + offset, data, size);
153 m_size += size;
154}
155
156void
157Bytes::push_back(uint8_t value) noexcept

Callers

nothing calls this directly

Calls 1

getMethod · 0.45

Tested by

no test coverage detected