diff --git a/sprout/range/algorithm/find_difference.hpp b/sprout/range/algorithm/find_difference.hpp new file mode 100644 index 00000000..fbfd6581 --- /dev/null +++ b/sprout/range/algorithm/find_difference.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_FIND_DIFFERENCE_HPP +#define SPROUT_RANGE_ALGORITHM_FIND_DIFFERENCE_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // find_difference + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_difference(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::find_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_difference(Range1&& range1, Range2&& range2) { + return sprout::find_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_FIND_DIFFERENCE_HPP diff --git a/sprout/range/algorithm/find_intersection.hpp b/sprout/range/algorithm/find_intersection.hpp new file mode 100644 index 00000000..1f6419bb --- /dev/null +++ b/sprout/range/algorithm/find_intersection.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_FIND_INTERSECTION_HPP +#define SPROUT_RANGE_ALGORITHM_FIND_INTERSECTION_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // find_intersection + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_intersection(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::find_intersection( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_intersection(Range1&& range1, Range2&& range2) { + return sprout::find_intersection( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_FIND_INTERSECTION_HPP diff --git a/sprout/range/algorithm/find_symmetric_difference.hpp b/sprout/range/algorithm/find_symmetric_difference.hpp new file mode 100644 index 00000000..4ee06164 --- /dev/null +++ b/sprout/range/algorithm/find_symmetric_difference.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_FIND_SYMMETRIC_DIFFERENCE_HPP +#define SPROUT_RANGE_ALGORITHM_FIND_SYMMETRIC_DIFFERENCE_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // find_symmetric_difference + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_symmetric_difference(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::find_symmetric_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + find_symmetric_difference(Range1&& range1, Range2&& range2) { + return sprout::find_symmetric_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_FIND_SYMMETRIC_DIFFERENCE_HPP diff --git a/sprout/range/algorithm/next_difference.hpp b/sprout/range/algorithm/next_difference.hpp new file mode 100644 index 00000000..7d88d714 --- /dev/null +++ b/sprout/range/algorithm/next_difference.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_NEXT_DIFFERENCE_HPP +#define SPROUT_RANGE_ALGORITHM_NEXT_DIFFERENCE_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // next_difference + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_difference(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::next_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_difference(Range1&& range1, Range2&& range2) { + return sprout::next_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_NEXT_DIFFERENCE_HPP diff --git a/sprout/range/algorithm/next_intersection.hpp b/sprout/range/algorithm/next_intersection.hpp new file mode 100644 index 00000000..e0f4935d --- /dev/null +++ b/sprout/range/algorithm/next_intersection.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_NEXT_INTERSECTION_HPP +#define SPROUT_RANGE_ALGORITHM_NEXT_INTERSECTION_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // next_intersection + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_intersection(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::next_intersection( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_intersection(Range1&& range1, Range2&& range2) { + return sprout::next_intersection( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_NEXT_INTERSECTION_HPP diff --git a/sprout/range/algorithm/next_symmetric_difference.hpp b/sprout/range/algorithm/next_symmetric_difference.hpp new file mode 100644 index 00000000..3826aa3e --- /dev/null +++ b/sprout/range/algorithm/next_symmetric_difference.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_NEXT_SYMMETRIC_DIFFERENCE_HPP +#define SPROUT_RANGE_ALGORITHM_NEXT_SYMMETRIC_DIFFERENCE_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // next_symmetric_difference + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_symmetric_difference(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::next_symmetric_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_symmetric_difference(Range1&& range1, Range2&& range2) { + return sprout::next_symmetric_difference( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_NEXT_SYMMETRIC_DIFFERENCE_HPP diff --git a/sprout/range/algorithm/next_union.hpp b/sprout/range/algorithm/next_union.hpp new file mode 100644 index 00000000..883d6c4b --- /dev/null +++ b/sprout/range/algorithm/next_union.hpp @@ -0,0 +1,47 @@ +#ifndef SPROUT_RANGE_ALGORITHM_NEXT_UNION_HPP +#define SPROUT_RANGE_ALGORITHM_NEXT_UNION_HPP + +#include +#include +#include +#include +#include +#include + +namespace sprout { + namespace range { + // + // next_union + // + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_union(Range1&& range1, Range2&& range2, Compare comp) { + return sprout::next_union( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)), + comp + ); + } + + template + inline SPROUT_CONSTEXPR sprout::pair< + typename sprout::range::lvalue_iterator::type, + typename sprout::range::lvalue_iterator::type + > + next_union(Range1&& range1, Range2&& range2) { + return sprout::next_union( + sprout::begin(sprout::forward(range1)), + sprout::end(sprout::forward(range1)), + sprout::begin(sprout::forward(range2)), + sprout::end(sprout::forward(range2)) + ); + } + } // namespace range +} // namespace sprout + +#endif // #ifndef SPROUT_RANGE_ALGORITHM_NEXT_UNION_HPP diff --git a/sprout/range/algorithm/non_modifying.hpp b/sprout/range/algorithm/non_modifying.hpp index a7434e5f..44b68764 100644 --- a/sprout/range/algorithm/non_modifying.hpp +++ b/sprout/range/algorithm/non_modifying.hpp @@ -43,5 +43,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include #endif // #ifndef SPROUT_RANGE_ALGORITHM_NON_MODIFYIING_HPP