| 325 | } |
| 326 | |
| 327 | uint8_t *ResizeAnyVector(const reflection::Schema &schema, uoffset_t newsize, |
| 328 | const VectorOfAny *vec, uoffset_t num_elems, |
| 329 | uoffset_t elem_size, std::vector<uint8_t> *flatbuf, |
| 330 | const reflection::Object *root_table) { |
| 331 | auto delta_elem = static_cast<int>(newsize) - static_cast<int>(num_elems); |
| 332 | auto delta_bytes = delta_elem * static_cast<int>(elem_size); |
| 333 | auto vec_start = |
| 334 | reinterpret_cast<const uint8_t *>(vec) - vector_data(*flatbuf); |
| 335 | auto start = static_cast<uoffset_t>(vec_start + sizeof(uoffset_t) + |
| 336 | elem_size * num_elems); |
| 337 | if (delta_bytes) { |
| 338 | if (delta_elem < 0) { |
| 339 | // Clear elements we're throwing away, since some might remain in the |
| 340 | // buffer. |
| 341 | auto size_clear = -delta_elem * elem_size; |
| 342 | memset(vector_data(*flatbuf) + start - size_clear, 0, size_clear); |
| 343 | } |
| 344 | ResizeContext(schema, start, delta_bytes, flatbuf, root_table); |
| 345 | WriteScalar(vector_data(*flatbuf) + vec_start, newsize); // Length field. |
| 346 | // Set new elements to 0.. this can be overwritten by the caller. |
| 347 | if (delta_elem > 0) { |
| 348 | memset(vector_data(*flatbuf) + start, 0, delta_elem * elem_size); |
| 349 | } |
| 350 | } |
| 351 | return vector_data(*flatbuf) + start; |
| 352 | } |
| 353 | |
| 354 | const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf, |
| 355 | const uint8_t *newbuf, size_t newlen) { |
no test coverage detected