Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor node attributes management #389

Merged
merged 4 commits into from
Sep 5, 2024

Conversation

fktn-k
Copy link
Owner

@fktn-k fktn-k commented Sep 4, 2024

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 a fkyaml::detail::anchor_status_t & a uint32_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:

  • block style or flow style
  • single quoted, double quoted or plain string
  • decimal, octal, hexadecimal integer
  • etc...

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.

  • Changes are described in the pull request or in a referenced issue.
  • The test suite compiles and runs without any error.
  • The code coverage on your branch is 100%.
  • The documentation is updated if you added/changed a feature.

Please don't

  • The C++11 support varies between different compilers and versions. Please note the list of supported compilers. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with #ifdefs or other means.
  • Please refrain from proposing changes that would break YAML specifications. If you propose a conformant extension of YAML to be supported by the library, please motivate this extension.
  • Please do not open pull requests that address multiple issues.

@fktn-k fktn-k added the improvement refactoring or optimization without public API changes label Sep 4, 2024
@fktn-k fktn-k added this to the Release v0.3.12 milestone Sep 4, 2024
@fktn-k fktn-k self-assigned this Sep 4, 2024
Copy link

github-actions bot commented Sep 5, 2024

:octocat: Upload Coverage Event Notification

Coverage data has been uploaded for the commit e9eb78570f9bd115858ad8595b421ad4f104a15a.
You can download the artifact which contains the same file uploaded to the Coveralls and its HTML version.

Name fkYAML_coverage.pr389.zip
ID 1893837936
URL https://github.com/fktn-k/fkYAML/actions/runs/10711320045/artifacts/1893837936

@fktn-k fktn-k merged commit 50f5d9b into develop Sep 5, 2024
165 checks passed
@fktn-k fktn-k deleted the refactor_node_attributes_management branch September 5, 2024 00:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement refactoring or optimization without public API changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant