Skip to content

Commit

Permalink
Fixed a few small mistakes
Browse files Browse the repository at this point in the history
  • Loading branch information
Rouslan committed Oct 27, 2023
1 parent 8e07325 commit dc67be9
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
cache: 'pip'
cache-dependency-path: '${{ github.workspace }}/doc/requirements.txt'
- name: Install Python Dependencies
run: python -m pip install -r repo/polyops/doc/requirements.txt
run: python -m pip install -r ${{ github.workspace }}/doc/requirements.txt
- name: Install Doxygen
uses: awalsh128/cache-apt-pkgs-action@latest
with:
Expand Down
2 changes: 1 addition & 1 deletion include/poly_ops/base.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ template<typename T> struct point_t {

/** Construct `point_t` from any point-like object */
template<point<T> U> constexpr point_t(const U &b)
noexcept(noexcept(point_t(point_ops<U>::get_x(b)),point_ops<U>::get_y(b)))
noexcept(noexcept(point_t(point_ops<U>::get_x(b),point_ops<U>::get_y(b))))
: _data{point_ops<U>::get_x(b),point_ops<U>::get_y(b)} {}

constexpr point_t &operator=(const point_t &b) noexcept(std::is_nothrow_copy_constructible_v<T>) = default;
Expand Down
35 changes: 21 additions & 14 deletions include/poly_ops/clip.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ template<typename Coord,typename Index=std::size_t> struct null_tracker;

/**
* `null_tracker` is stateless. The clipper data types use
* `[[no_unique_address]]` after pointers to trackers, so an empty struct is
* used instead of a real pointer for `null_tracker`.
* `[[no_unique_address]]` on pointers to trackers, so an empty struct is used
* instead of a real pointer for `null_tracker`.
*/
template<typename Coord,typename Index> struct null_tracker_ptr {
null_tracker<Coord,Index> operator*() const noexcept;
Expand Down Expand Up @@ -1419,10 +1419,10 @@ template<typename Coord,typename Index=std::size_t,typename Tracker=null_tracker
namespace detail {

template<typename Tracker,typename LPoints,bool IsPtr> struct tracked_points {
Tracker _tracker;
[[no_unique_address]] LPoints lpoints;
[[no_unique_address]] Tracker _tracker;
LPoints lpoints;

auto tracker() noexcept {
auto tracker() const noexcept {
if constexpr(IsPtr) { return _tracker; }
else { return &_tracker; }
}
Expand Down Expand Up @@ -1509,6 +1509,13 @@ template<typename R,typename F> struct range_facade {

auto begin() noexcept { return iterator_facade<std::ranges::iterator_t<R>,F>{std::ranges::begin(base),&fun}; }
auto end() noexcept { return iterator_facade<std::ranges::iterator_t<R>,F>{std::ranges::end(base),&fun}; }

auto begin() const noexcept requires std::is_invocable_v<const F,std::ranges::range_value_t<R>> {
return iterator_facade<std::ranges::iterator_t<const R>,const F>{std::ranges::begin(base),&fun};
}
auto end() const noexcept requires std::is_invocable_v<const F,std::ranges::range_value_t<R>> {
return iterator_facade<std::ranges::iterator_t<const R>,const F>{std::ranges::end(base),&fun};
}
};

template<typename R,typename F> range_facade(R &&base,F &&fun)
Expand All @@ -1524,7 +1531,7 @@ auto make_temp_polygon_tree_range(
return range_facade(
top,
[tl=make_tracked_points(tracker,lpoints)]
(const temp_polygon<Index> *poly) mutable {
(const temp_polygon<Index> *poly) {
return temp_polygon_proxy<Coord,Index,Tracker>(tl.lpoints,*poly,tl.tracker());
});
}
Expand All @@ -1543,8 +1550,8 @@ template<typename Coord,typename Index=std::size_t,typename Tracker=null_tracker
private:
friend class temp_polygon_proxy<Coord,Index,Tracker>;

tracker_ptr tracker;
[[no_unique_address]] const detail::loop_point<Index,Coord> *lpoints;
[[no_unique_address]] tracker_ptr tracker;
const detail::loop_point<Index,Coord> *lpoints;
Index i;

/* Loops have the same "i" value for "begin()" and "end()" thus a different
Expand Down Expand Up @@ -1626,7 +1633,7 @@ class temp_polygon_proxy : public std::ranges::view_interface<temp_polygon_proxy

/** Return a range representing the children of this polygon. */
auto inner_loops() const noexcept {
return detail::make_temp_polygon_tree_range<Index,Coord,Tracker>(lpoints,data.children,tracker);
return detail::make_temp_polygon_tree_range<Index,Coord,Tracker>(lpoints,data.children,*tracker);
}
};

Expand All @@ -1649,7 +1656,7 @@ template<typename Index,typename Coord,typename Tracker> auto make_temp_polygon_
return range_facade(
std::move(top),
[tl=make_tracked_points(std::forward<Tracker>(tracker),std::move(lpoints)),loops=std::move(loops)]
(const temp_polygon<Index> *poly) mutable {
(const temp_polygon<Index> *poly) {
return temp_polygon_proxy<Coord,Index,Tracker>(tl.lpoints.data(),*poly,tl.tracker());
});
}
Expand All @@ -1662,7 +1669,7 @@ template<typename Index,typename Coord,typename Tracker> auto make_temp_polygon_
return range_facade(
std::move(loops),
[tl=make_tracked_points(std::forward<Tracker>(tracker),std::move(lpoints))]
(const temp_polygon<Index> &poly) mutable {
(const temp_polygon<Index> &poly) {
return temp_polygon_proxy<Coord,Index,Tracker>(tl.lpoints.data(),poly,tl.tracker());
});
}
Expand All @@ -1675,7 +1682,7 @@ template<typename Index,typename Coord,typename Tracker> auto make_temp_polygon_
return range_facade(
loops,
[tl=make_tracked_points(std::forward<Tracker>(tracker),lpoints.data())]
(const temp_polygon<Index> &poly) mutable {
(const temp_polygon<Index> &poly) {
return temp_polygon_proxy<Coord,Index,Tracker>(tl.lpoints,poly,tl.tracker());
});
}
Expand Down Expand Up @@ -2368,8 +2375,8 @@ void clipper<Coord,Index>::reset() {
*/
template<coordinate Coord,std::integral Index,point_tracker<Coord,Index> Tracker> class tclipper {
public:
Tracker tracker;
[[no_unique_address]] clipper<Coord,Index> base;
[[no_unique_address]] Tracker tracker;
clipper<Coord,Index> base;

explicit tclipper(std::pmr::memory_resource *_contig_mem=nullptr) requires(std::is_default_constructible_v<Tracker>) :
base{_contig_mem} {}
Expand Down

0 comments on commit dc67be9

Please sign in to comment.