Refactor node attributes management #389
Merged
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.
This PR has modified internal node attributes management.
The latest basic_node class hold a
fkyaml::node_type
to track the current node value type, and a pair of afkyaml::detail::anchor_status_t
& auint32_t
to reach an anchored node if the node itself is an alias node.Although node attributes requires 12 bytes (4 bytes each), they can be compressed into 4 bytes using bits, which is what is done in this PR.
Since this is just a refactoring of internal data management, nothing should change from the viewpoint of library users.
Actually this PR is a kind of preparation for per-node serialization style specification (stored with unused bits) like:
Note the above output style specification is not yet implemented, but is planned to be added until the next release.
Pull Request Checklist
Read the CONTRIBUTING.md file for detailed information.
Please don't
#ifdef
s or other means.