Skip to content

Add node_type/yaml_version_type enum class APIs #388

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

Merged
merged 6 commits into from
Sep 1, 2024

Conversation

fktn-k
Copy link
Owner

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

This PR has added two new enum classes, node_type and yaml_version_type.
They are added to replace existing fkyaml::basic_node::node_t and fkyaml::basic_node::yaml_version_t type aliases whose aliased types are actually declared in the fkyaml::detail(private) namespace but exposed to library users.
The exposing of those enum classes as public APIs obscures the boundary between the fkyaml(public) and fkyaml::detail(private) namespaces, which might also cause unexpected backward incompatibilities.

To resolve the above issue, this PR has introduced the above two new enum classes, adding some APIs and deprecating some other APIs which uses the mentioned type aliases:

New API Deprecated API
fkyaml::basic_node::basic_node(const fkyaml::node_type) fkyaml::basic_node::basic_node(const fkyaml::basic_node::node_t)
fkyaml::node_type fkyaml::basic_node::get_type() fkyaml::basic_node::node_t fkyaml::basic_node::type()
fkyaml::yaml_version_type fkyaml::basic_node::get_yaml_version_type() fkyaml::basic_node::yaml_version_t fkyaml::basic_node::get_yaml_version()
void fkyaml::basic_node::set_yaml_version_type(const fkyaml::yaml_version_type) void fkyaml::basic_node::set_yaml_version(const fkyaml::basic_node::yaml_version_t)

Although all the deprecated APIs still work as before except for compile-time deprecation warnings, it's highly recommended to replace those usages with new APIs since they're planned to be removed in version 0.4.0.
See the Deprecation notes in each deprecated API reference page for the migration guide.


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 new feature new feature possibly with public API changes label Sep 1, 2024
@fktn-k fktn-k added this to the Release v0.3.12 milestone Sep 1, 2024
Copy link

github-actions bot commented Sep 1, 2024

:octocat: Upload Coverage Event Notification

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

Name fkYAML_coverage.pr388.zip
ID 1879599270
URL https://github.com/fktn-k/fkYAML/actions/runs/10655543647/artifacts/1879599270

@fktn-k fktn-k merged commit 6680244 into develop Sep 1, 2024
165 checks passed
@fktn-k fktn-k deleted the add_independent_enum_apis branch September 1, 2024 16:41
@fktn-k fktn-k self-assigned this Sep 1, 2024
@fktn-k fktn-k mentioned this pull request Sep 26, 2024
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature new feature possibly with public API changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant