xtd 0.2.0
Loading...
Searching...
No Matches
enumerable.hpp
Go to the documentation of this file.
1
4#pragma once
7
9namespace xtd {
11 namespace collections {
13 namespace generic {
15 namespace extensions {
31 template <class enumerable_t, class source_t>
32 class enumerable {
33 public:
35
38 using enumerable_type = enumerable_t;
40 using source_type = source_t;
42 template <class type_t>
44
46 template <class type_t>
49
51
59 source_t aggregate(const std::function<source_t(const source_t&, const source_t&)>& func) const {
61 }
62
69 source_t aggregate(const source_t& seed, const std::function<source_t(const source_t&, const source_t&)>& func) const {
70 return xtd::linq::enumerable::aggregate(base(), seed, func);
71 }
72
80 template<class accumulate_t>
81 accumulate_t aggregate(const accumulate_t& seed, const std::function<accumulate_t(const source_t&, const accumulate_t&)>& func) const {
82 return xtd::linq::enumerable::aggregate(base(), seed, func);
83 }
84
92 source_t aggregate(const source_t& seed, const std::function<source_t(const source_t&, const source_t&)>& func, const std::function<source_t(const source_t&)>& result_selector) const {
93 return xtd::linq::enumerable::aggregate(base(), seed, func, result_selector);
94 }
95
105 template<class result_t, class accumulate_t>
106 result_t aggregate(const accumulate_t& seed, const std::function<accumulate_t(const source_t&, const accumulate_t&)>& func, const std::function<result_t(const accumulate_t&)>& result_selector) const {
107 return xtd::linq::enumerable::aggregate(base(), seed, func, result_selector);
108 }
109
116 bool all(const std::function<bool(const source_t&)>& predicate) const {
118 }
119
125 bool any() const noexcept {
126 return xtd::linq::enumerable::any(base());
127 }
128
134 bool any(const std::function<bool(const source_t&)>& predicate) const {
136 }
137
144 auto append(const source_t& element) const noexcept {
145 return xtd::linq::enumerable::append(base(), element);
146 }
147
153 auto as_enumerable() const noexcept {
155 }
156
160 auto average() const noexcept {
161 return xtd::linq::enumerable::average(base());
162 }
163
168 template <class result_t>
169 auto cast() const noexcept {
171 }
172
178 auto chunk(size_t size) const {
179 return xtd::linq::enumerable::chunk(base(), size);
180 }
181
185 auto concat(const ienumerable<source_t>& second) const noexcept {
186 return xtd::linq::enumerable::concat(base(), second);
187 }
188
192 bool contains(const source_t& value) const noexcept {
193 return xtd::linq::enumerable::contains(base(), value);
194 }
195
200 bool contains(const source_t& value, const xtd::collections::generic::iequality_comparer<source_t>& comparer) const noexcept {
201 return xtd::linq::enumerable::contains(base(), value, comparer);
202 }
203
209 size_t count() const noexcept {
210 return xtd::linq::enumerable::count(base());
211 }
212
219 size_t count(const std::function<bool(const source_t&)>& predicate) const noexcept {
221 }
222
226 xtd::size count(const source_t& value) const noexcept {
227 return xtd::linq::enumerable::count(base(), value);
228 }
229
237 template <class key_t>
238 auto count_by(const std::function<key_t(const source_t&)>& key_selector) const noexcept {
239 return xtd::linq::enumerable::count_by<key_t, source_t>(base(), key_selector);
240 }
241
250 template <class key_t>
251 auto count_by(const std::function<key_t(const source_t&)>& key_selector, const iequality_comparer<key_t>& key_comparer) const noexcept {
252 return xtd::linq::enumerable::count_by<key_t, source_t>(base(), key_selector, key_comparer);
253 }
254
257 auto default_if_empty() const noexcept {
259 }
260
264 auto default_if_empty(const source_t& default_value) const noexcept {
265 return xtd::linq::enumerable::default_if_empty(base(), default_value);
266 }
267
270 auto distinct() const noexcept {
271 return xtd::linq::enumerable::distinct(base());
272 }
273
281
286 source_t first_or_default(const std::function<bool(const source_t&)>& predicate, const source_t& default_value) const noexcept {
287 return xtd::linq::enumerable::first_or_default(base(), predicate, default_value);
288 }
289
292 source_t first_or_default(const std::function<bool(const source_t&)>& predicate) const noexcept {
294 }
295
299 source_t first_or_default(const source_t default_value) const noexcept {
300 return xtd::linq::enumerable::first_or_default(base(), default_value);
301 }
302
305 source_t first_or_default() const noexcept {
307 }
308
314 auto order_by(const std::function<source_t(const source_t&)>& key_selector) const {
315 return xtd::linq::enumerable::order_by(base(), key_selector);
316 }
317
323 template<class key_t>
324 auto order_by_descending(const std::function<key_t(const source_t&)>& key_selector) const {
326 }
327
333 auto order_by_descending(const std::function<source_t(const source_t&)>& key_selector) const {
334 return xtd::linq::enumerable::order_by_descending(base(), key_selector);
335 }
336
342 template<class key_t>
343 auto order_by(const std::function<key_t(const source_t&)>& key_selector) const {
344 return xtd::linq::enumerable::order_by<key_t, source_t>(base(), key_selector);
345 }
346
355 template<class result_t>
356 auto select(const std::function<result_t(const source_t&)>& selector) const {
358 }
359
366 auto select(const std::function<source_t(const source_t&)>& selector) const {
367 return xtd::linq::enumerable::select(base(), selector);
368 }
369
377 template<class result_t>
378 auto select(const std::function<result_t(const source_t&, size_t index)>& selector) const {
380 }
381
388 auto select(const std::function<source_t(const source_t&, size_t index)>& selector) const {
389 return xtd::linq::enumerable::select(base(), selector);
390 }
391
397 const list<source_t>& to_list() const noexcept;
398
405 auto where(const std::function<bool(const source_t&)>& predicate) const {
407 }
408
414 auto where(const std::function<bool(const source_t&, size_t)>& predicate) const {
416 }
417
418
419 private:
420 const enumerable_t& base() const noexcept {return static_cast<const enumerable_t&>(*this);}
421 };
422 }
423 }
424 }
425}
426
427#define __XTD_CORE_INTERNAL__
429#undef __XTD_CORE_INTERNAL__
430#include "../ienumerable.hpp"
Contains opaque_xtd_linq_enumerable_collection <type_t> struct.
Provides a base class for implementations of the xtd::collections::generic::icomparer <type_t> generi...
Definition comparer.hpp:33
Provides a set of static methods for querying objects that implement ienumerable <type_t>.
Definition enumerable.hpp:32
size_t count() const noexcept
Returns the number of elements in current sequence.
Definition enumerable.hpp:209
auto select(const std::function< source_t(const source_t &, size_t index)> &selector) const
Projects each element of a sequence into a new form by incorporating the element's index.
Definition enumerable.hpp:388
result_t aggregate(const accumulate_t &seed, const std::function< accumulate_t(const source_t &, const accumulate_t &)> &func, const std::function< result_t(const accumulate_t &)> &result_selector) const
Applies an accumulator function over a sequence. The specified seed value is used as the initial accu...
Definition enumerable.hpp:106
auto order_by(const std::function< key_t(const source_t &)> &key_selector) const
Sorts the elements of a sequence in ascending order according to a key.
Definition enumerable.hpp:343
source_t aggregate(const std::function< source_t(const source_t &, const source_t &)> &func) const
Applies an accumulator function over a sequence.
Definition enumerable.hpp:59
bool any() const noexcept
Determines whether a sequence contains any elements.
Definition enumerable.hpp:125
accumulate_t aggregate(const accumulate_t &seed, const std::function< accumulate_t(const source_t &, const accumulate_t &)> &func) const
Applies an accumulator function over a sequence. The specified seed value is used as the initial accu...
Definition enumerable.hpp:81
source_t first_or_default(const source_t default_value) const noexcept
Returns the first element of the sequence that satisfies a condition or a default value if no such el...
Definition enumerable.hpp:299
auto where(const std::function< bool(const source_t &, size_t)> &predicate) const
Filters a sequence of values based on a predicate. Each element's index is used in the logic of the p...
Definition enumerable.hpp:414
source_t first_or_default(const std::function< bool(const source_t &)> &predicate) const noexcept
Returns the first element of the sequence that satisfies a condition or a default value if no such el...
Definition enumerable.hpp:292
typename xtd::linq::enumerable::list< type_t > list
Represents the list value type.
Definition enumerable.hpp:47
xtd::size count(const source_t &value) const noexcept
Returns the number of elements with the specified value.
Definition enumerable.hpp:226
source_t aggregate(const source_t &seed, const std::function< source_t(const source_t &, const source_t &)> &func, const std::function< source_t(const source_t &)> &result_selector) const
Applies an accumulator function over a sequence. The specified seed value is used as the initial accu...
Definition enumerable.hpp:92
auto count_by(const std::function< key_t(const source_t &)> &key_selector) const noexcept
Returns the count of elements in the current sequence grouped by key.
Definition enumerable.hpp:238
auto average() const noexcept
Computes the average of a sequence of source_t values.
Definition enumerable.hpp:160
auto default_if_empty(const source_t &default_value) const noexcept
Returns the elements of the specified sequence or the specified value in a singleton collection if th...
Definition enumerable.hpp:264
auto order_by_descending(const std::function< key_t(const source_t &)> &key_selector) const
Sorts the elements of a sequence in descending order according to a key.
Definition enumerable.hpp:324
const list< source_t > & to_list() const noexcept
Creates a xtd::collections::generic::list <type_t> from an xtd::collections::generic::ienumerable <ty...
auto default_if_empty() const noexcept
Returns the elements of the specified sequence or the type parameter's default value in a singleton c...
Definition enumerable.hpp:257
source_t source_type
Represents the ienumerable source type.
Definition enumerable.hpp:40
bool any(const std::function< bool(const source_t &)> &predicate) const
Determines whether any element of a sequence satisfies a condition.
Definition enumerable.hpp:134
bool contains(const source_t &value, const xtd::collections::generic::iequality_comparer< source_t > &comparer) const noexcept
Determines whether a sequence contains a specified element by using a specified equality comparer.
Definition enumerable.hpp:200
bool all(const std::function< bool(const source_t &)> &predicate) const
Determines whether all elements of a sequence satisfy a condition.
Definition enumerable.hpp:116
source_t first_or_default() const noexcept
Returns the first element of the sequence that satisfies a condition or a default value if no such el...
Definition enumerable.hpp:305
auto chunk(size_t size) const
Splits the elements of a sequence into chunks of size at most size.
Definition enumerable.hpp:178
auto cast() const noexcept
Casts the elements of an xtd::collections::generic::ienumerable to the specified type.
Definition enumerable.hpp:169
auto order_by_descending(const std::function< source_t(const source_t &)> &key_selector) const
Sorts the elements of a sequence in descending order according to a key.
Definition enumerable.hpp:333
auto distinct(const xtd::collections::generic::iequality_comparer< source_t > &comparer) const noexcept
Returns distinct elements from a sequence by using a specified xtd::collections::generic::iequality_c...
Definition enumerable.hpp:278
auto order_by(const std::function< source_t(const source_t &)> &key_selector) const
Sorts the elements of a sequence in ascending order according to a key.
Definition enumerable.hpp:314
auto select(const std::function< source_t(const source_t &)> &selector) const
Projects each element of a sequence into a new form.
Definition enumerable.hpp:366
auto where(const std::function< bool(const source_t &)> &predicate) const
Filters a sequence of values based on a predicate.
Definition enumerable.hpp:405
auto count_by(const std::function< key_t(const source_t &)> &key_selector, const iequality_comparer< key_t > &key_comparer) const noexcept
Returns the count of elements in the current sequence grouped by key.
Definition enumerable.hpp:251
bool contains(const source_t &value) const noexcept
Determines whether a sequence contains a specified element by using the default equality comparer.
Definition enumerable.hpp:192
auto select(const std::function< result_t(const source_t &)> &selector) const
Projects each element of a sequence into a new form.
Definition enumerable.hpp:356
auto append(const source_t &element) const noexcept
Appends a value to the end of the sequence.
Definition enumerable.hpp:144
auto select(const std::function< result_t(const source_t &, size_t index)> &selector) const
Projects each element of a sequence into a new form by incorporating the element's index.
Definition enumerable.hpp:378
auto as_enumerable() const noexcept
Returns the input typed as xtd::collections::generic::ienumerable <type_t>.
Definition enumerable.hpp:153
typename xtd::linq::enumerable::ienumerable< type_t > ienumerable
Represents the ienumerable value type.
Definition enumerable.hpp:43
auto distinct() const noexcept
Returns distinct elements from a sequence by using the default equality comparer to compare values.
Definition enumerable.hpp:270
size_t count(const std::function< bool(const source_t &)> &predicate) const noexcept
Returns a number that represents how many elements in the specified sequence satisfy a condition.
Definition enumerable.hpp:219
source_t aggregate(const source_t &seed, const std::function< source_t(const source_t &, const source_t &)> &func) const
Applies an accumulator function over a sequence. The specified seed value is used as the initial accu...
Definition enumerable.hpp:69
enumerable_t enumerable_type
Represents the ienumerable enumerable type.
Definition enumerable.hpp:38
auto concat(const ienumerable< source_t > &second) const noexcept
Concatenates two sequences.
Definition enumerable.hpp:185
source_t first_or_default(const std::function< bool(const source_t &)> &predicate, const source_t &default_value) const noexcept
Returns the first element of the sequence that satisfies a condition, or a specified default value if...
Definition enumerable.hpp:286
Defines methods to support the comparison of objects for equality.
Definition iequality_comparer.hpp:34
static auto select(const ienumerable< source_t > &source, const std::function< result_t(const source_t &)> &selector)
Projects each element of a sequence into a new form.
Definition enumerable.hpp:842
static xtd::decimal average(const ienumerable< xtd::decimal > &source)
Computes the average of a sequence of xtd::decimal values.
static auto default_if_empty(const ienumerable< source_t > &source) noexcept
Returns the elements of the specified sequence or the type parameter's default value in a singleton c...
Definition enumerable.hpp:558
static auto append(const ienumerable< source_t > &source, const source_t &element) noexcept
Appends a value to the end of the sequence.
Definition enumerable.hpp:229
static bool all(const ienumerable< source_t > &source, const std::function< bool(const source_t &)> &predicate)
Determines whether all elements of a sequence satisfy a condition.
Definition enumerable.hpp:187
typename xtd::collections::generic::ienumerable< type_t > ienumerable
Represents the ienumerable value type.
Definition enumerable.hpp:77
static auto cast(const ienumerable< source_t > &source) noexcept
Casts the elements of an xtd::collections::generic::ienumerable to the specified type.
static bool any(const ienumerable< source_t > &source) noexcept
Determines whether a sequence contains any elements.
Definition enumerable.hpp:202
static const auto & as_enumerable(const ienumerable< source_t > &source) noexcept
Returns the input typed as xtd::collections::generic::ienumerable <type_t>.
Definition enumerable.hpp:286
typename xtd::collections::generic::list< type_t > list
Represents the list value type.
Definition enumerable.hpp:81
static auto chunk(const ienumerable< source_t > &source, xtd::size size)
Splits the elements of a sequence into chunks of size at most size.
static bool contains(const ienumerable< source_t > &source, const source_t &value) noexcept
Determines whether a sequence contains a specified element by using the default equality comparer.
Definition enumerable.hpp:450
static source_t first_or_default(const ienumerable< source_t > &source, const std::function< bool(const source_t &)> &predicate, const source_t &default_value) noexcept
Returns the first element of the sequence that satisfies a condition, or a specified default value if...
Definition enumerable.hpp:611
static auto concat(const ienumerable< source_t > &first, const ienumerable< source_t > &second) noexcept
Concatenates two sequences.
Definition enumerable.hpp:435
static auto order_by_descending(const ienumerable< source_t > &source, const std::function< key_t(const source_t &)> &key_selector)
Sorts the elements of a sequence in descending order according to a key.
Definition enumerable.hpp:755
static auto distinct(const ienumerable< source_t > &source) noexcept
Returns distinct elements from a sequence by using the default equality comparer to compare values.
Definition enumerable.hpp:583
static auto order_by(const ienumerable< source_t > &source, const std::function< key_t(const source_t &)> &key_selector)
Sorts the elements of a sequence in ascending order according to a key.
Definition enumerable.hpp:727
static auto where(const ienumerable< source_t > &source, const std::function< bool(const source_t &)> &predicate)
Filters a sequence of values based on a predicate.
Definition enumerable.hpp:917
static auto count_by(const ienumerable< source_t > &source, const std::function< key_t(const source_t &)> &key_selector) noexcept
Returns the count of elements in the source sequence grouped by key.
Definition enumerable.hpp:517
static xtd::size count(const ienumerable< source_t > &source) noexcept
Returns the number of elements in a sequence.
Definition enumerable.hpp:477
static source_t aggregate(const ienumerable< source_t > &source, const std::function< source_t(const source_t &, const source_t &)> &func)
Applies an accumulator function over a sequence.
Definition enumerable.hpp:100
Contains foreach_ keyword.
Contains xtd::collections::generic::ienumerable <type_t> interface.
xtd::delegate< result_t(arguments_t... arguments)> func
Represents a delegate that has variables parameters and returns a value of the type specified by the ...
Definition func.hpp:27
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
xtd::func< bool, type_t > predicate
Represents a delegate that defines a set of criteria and determines whether the specified object meet...
Definition predicate.hpp:16
Contains xtd::linq::enumerable <type_t> class.
The xtd::extensions namespace contains interface extensions.
Definition collection_operators.hpp:13
The xtd::collections::generic namespace contains interfaces and classes that define generic collectio...
Definition comparer.hpp:16
The xtd::collections namespace contains interfaces and classes that define various collections of obj...
Definition any_pair.hpp:10
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8