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 collections and collection property access. #119

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

crud89
Copy link
Owner

@crud89 crud89 commented Jan 16, 2024

Describe the pull request

This PR improves interfaces and collection handling. The Enumerable container has been replaced in favor of std::generator and where possible references to the underlying arrays are returned. The basic design principle is to use Enumerable where no guarantee about the storage of elements can be made, i.e. where further transformation or filter is applied to a container before returning from it. If the array property maps to a contains relationship, the a reference to the array type is returned instead (which can hardly be beaten in terms of performance). Interfaces use generators to convert the concrete representation into interface pointers and yield them using this interface, so it is (as expected) most efficient to call specialized classes where possible. For inputs, generators can be used to create lazy-evaluated data streams. In some places, overloads have been added that allow to supply both: generators or spans.

@crud89 crud89 added Type: Requirement An implementation is required before the next release. Module: Build 🛠 Issues that involve the build process. labels Jan 16, 2024
@crud89 crud89 added this to the Alpha #04 milestone Jan 16, 2024
@crud89 crud89 self-assigned this Jan 16, 2024
@crud89
Copy link
Owner Author

crud89 commented Jan 16, 2024

Blocked until std::generator is available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Module: Build 🛠 Issues that involve the build process. Type: Requirement An implementation is required before the next release.
Projects
Status: Blocked
Development

Successfully merging this pull request may close these issues.

None yet

1 participant