MCPcopy Create free account
hub / github.com/bytedance/Fastbot_Android / ResizeAnyVector

Function ResizeAnyVector

native/thirdpart/flatbuffers/reflection.cpp:327–352  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

325}
326
327uint8_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
354const uint8_t *AddFlatBuffer(std::vector<uint8_t> &flatbuf,
355 const uint8_t *newbuf, size_t newlen) {

Callers 1

ResizeVectorFunction · 0.85

Calls 3

vector_dataFunction · 0.85
ResizeContextClass · 0.85
WriteScalarFunction · 0.85

Tested by

no test coverage detected