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

feat(geometry): Allow operator<< on surfaces without detector elements #3467

Closed

Conversation

paulgessinger
Copy link
Member

We previously disallowed this, but this is only necessary if we have a detector element. Arguably, specifically for printing it can sometimes be inconvenient to have to pass around a geometry context just for this.

We previously disallowed this, but this is only necessary if we have a
detector element. Arguably, specifically for printing it can sometimes
be inconvenient to have to pass around a geometry context just for this.
@paulgessinger paulgessinger added this to the next milestone Aug 1, 2024
@paulgessinger
Copy link
Member Author

This is convenient, but might not be 100% clean in all cases.

Thoughts @andiwand, @benjaminhuth, @asalzburger ?

// Using a default context is ONLY safe, if the surface does not have an
// associated detector element, which we ensure right above.
Acts::GeometryContext defaultContext;
os << srf.toStream(defaultContext);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there should also be a toStream overload without context which then drives the exception also allowing for overrides later

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This requires implementing it on all derived surface types. I'm not sure that's needed, and they would likely also call each other internally to avoid copying code. Does that make sense?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we could default it to your behavior here and give the surface the opportunity to specialize but maybe this does not have any use case anyways

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see your point. I guess the only reason using toStream over operator<< is that with toStream you can in fact pass a geometry context.

@github-actions github-actions bot added the Component - Core Affects the Core module label Aug 1, 2024
@andiwand
Copy link
Contributor

andiwand commented Aug 1, 2024

I guess this could be surprising using the << for any surface but the exception should communicate this well so no objections form my side

@paulgessinger
Copy link
Member Author

@andiwand That's exactly correct. I'm debating myself if the trade-off of confusion is worth it.

@github-actions github-actions bot added the Stale label Aug 31, 2024
@paulgessinger paulgessinger modified the milestones: next, v37.0.0 Oct 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component - Core Affects the Core module Stale
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants