-
Notifications
You must be signed in to change notification settings - Fork 1
Executor integration with filters #3
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
base: executors
Are you sure you want to change the base?
Conversation
6148799
to
5252e56
Compare
1df745d
to
8a2eb7b
Compare
a4cc8d9
to
8a2eb7b
Compare
Anything to review here or has the code arrived here after review? |
It's 1000 loc 😱 |
Feedback from quickly skimming at the code. Move all those C++17 traits you added to the common module. I'm sure they'll be useful in other locations of the library. |
Uh oh! Sorry didn't realize this became a huge PR. Will split this into 2 PRs. Most of the LOC are directly from the files from the executor repo. |
Sorry, but could you split this in 1 of 2 ways:
|
ff0ea6e
to
1f11251
Compare
Done
Will do that once best_fit is ready, during the final porting |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2 things for commit 1:
- Filter calls without executor should route to filter with best-fit executor: Please note as TODO somewhere
- PCLPointCLoud2 is not supported yet: either an oversight or needs to be documented well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM (apart from comments)
Please allow for a migration path too. We might need to have a discussion on this but for starters, I see 2 ways:
- Copy + rename old code
- Have 3 classes:
- EaseOfImpl: common code, hidden in detail namespace
- Legacy: no CRTP, new name, derived from EaseOfImpl
- New hierarchy: old name, derived from EaseOfImpl
Eg:
FilterImpl {};
// maybe we wouldn't mark this as deprecated since this might be a very simple class
// Plus it also prevents us from using -Werror on the CI
FilterLegacy: FilterImpl{};
template <class Derived>
Filter: FilterImpl{
void new_function() {
static_cast<Derived*>(this)->virtual_function();
}
};
template <class BaseClass>
ABCFilterImpl: BaseClass {};
// mark as deprecated
ABCFilterLegacy: ABCFilter<FilterLegacy>{
// code specific to making legacy work
};
ABCFilter: ABCFilter<Filter>{};
1f11251
to
caabb6f
Compare
No migration path needed. LGTM except:
|
Any more changes needed or we are good to go? |
22236ea
to
c28c5f0
Compare
ac3b32c
to
7820bf7
Compare
5c90541
to
7030725
Compare
c5d6bf1
to
8bd1938
Compare
a44d017
to
67a64f7
Compare
This is done so that the Base class can access protected/private members of the derived class using CRTP
6d88bfe
to
7c3b82c
Compare
This will serve as a base PR for all executor integration related aspects.
TODO:
Update: This will be the first PR to be merged into PCL, after this all the remaining PR's are to be merged.