CPlusPlusGenerator: Avoid unnecessary copy by using a const ref to the input vector #356
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current version of
bebopc
generates, among others, decoding methods that take in an input byte vector by copy (i.e.std::vector<uint8_t>
), e.g. the Playground's "Hello World" sample (as of 2024/10/22 22:30 UTC):That can be quite inefficient depending on the input vector's size, compiler optimizations and/or the caller's use of e.g.
std::move()
.In addition, given that those calls boil down to calling the overloads that take
const uint8_t* sourceBuffer
anyway, it seems that there isn't any actual need for copying the input vector and manipulating a local mutable version of it.Therefore, I'd like to submit this patch to the C++ code generator which changes the input vector copy (i.e.
std::vector<uint8_t>
) into a const reference (i.e.const std::vector<uint8_t>&
).When applied to the "Hello world" example of the playground, the patched
bebopc
would generate methods that have the following prototypes:Thank you in advance for considering this PR!