cleanup(libsinsp): introduce param->as<std::string>(), add error for unsupported types #1893
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.
What type of PR is this?
/kind cleanup
Any specific area of the project related to this PR?
/area libsinsp
Does this PR require a change in the driver versions?
No
What this PR does / why we need it:
Addressing feedback received.
A contributor tried to set up a test with something like
evt->get_param(1)->as<std::string>()
and was confused by the fact that (1)std::string
was not directly supported and (2) this did not result in a compilation error but in a runtime error which was hard to understand, as the engine tried to reinterpret a char string as anstd::string
basically setting the raw bytes of the string object and then erroring out because of the wrong size.So to make it easier to work with this this PR does two things:
std::string
/milestone 0.18.0
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Code that does
some_stuct->some_string = evt->get_param(N)->as<std::string>()
does not copy the string. It creates it once and then, if necessary uses the move assignment operator.Does this PR introduce a user-facing change?: