Skip to content

Commit 43fd014

Browse files
committed
Refactor enumerable : with xtd concepts and enumerable_generator
1 parent 5e0dd20 commit 43fd014

5 files changed

Lines changed: 83 additions & 79 deletions

File tree

src/xtd.core/include/xtd/array.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,18 +206,20 @@ template<xtd::forward_iterable source_t>
206206
auto xtd::linq::enumerable::chunk(const source_t& source, xtd::usize size) -> xtd::collections::generic::enumerable_generator<xtd::array<typename xtd::raw_type<source_t>::value_type>> {
207207
if (size == 0) xtd::helpers::throw_helper::throws(xtd::helpers::exception_case::argument_out_of_range);
208208

209-
xtd::array<typename xtd::raw_type<source_t>::value_type> buffer;
210-
buffer.items().reserve(size);
209+
auto buffer = std::vector<typename xtd::raw_type<source_t>::value_type> {};
210+
buffer.reserve(size);
211+
211212
for (const auto& item : source) {
212-
buffer.items().push_back(item);
213+
buffer.push_back(item);
213214
if (buffer.size() == size) {
214-
co_yield buffer;
215-
buffer.items().clear();
215+
co_yield std::move(buffer);
216+
buffer = {};
217+
buffer.reserve(size);
216218
}
217219
}
218220

219221
if (!buffer.empty())
220-
co_yield buffer;
222+
co_yield std::move(buffer);
221223
}
222224

223225
template<typename source_t>

0 commit comments

Comments
 (0)