27 template<
typename type_t,
typename sorter_t = sorter_none>
37 template <
typename ...args_t>
38 value_type(args_t&& ...args) : type_t(args...) {}
40 if (value.owner) owner = value.owner;
41 if (owner !=
nullptr && !owner->inserting_ && !owner->erasing_) owner->
item_updated(pos,
static_cast<type_t&
>(
const_cast<value_type&
>(value)));
42 type_t::operator=(value);
46 if (value.owner) owner = value.owner;
47 if (owner !=
nullptr && !owner->inserting_ && !owner->erasing_) owner->
item_updated(pos,
static_cast<type_t&
>(value));
48 type_t::operator=(value);
51 operator type_t() {
return *
this;}
52 friend std::ostream& operator<<(std::ostream& os,
const value_type& value) {
return os << static_cast<const type_t&>(value);}
57 size_t pos = std::numeric_limits<size_t>::max();
72 using pointer =
typename std::allocator_traits<allocator_type>::pointer;
74 using const_pointer =
typename std::allocator_traits<allocator_type>::const_pointer;
76 using iterator =
typename std::vector<value_type>::iterator;
97 for (
auto item : collection)
100 arranged_element_collection(
const arranged_element_collection& collection) {
push_back_range(collection);}
101 arranged_element_collection& operator=(
const arranged_element_collection& collection) {
106 arranged_element_collection(arranged_element_collection&&) =
default;
107 bool operator==(
const arranged_element_collection& value)
const {
return collection_ == value.collection_;}
108 bool operator!=(
const arranged_element_collection& value)
const {
return !operator==(value);}
128 collection_[pos].pos = pos;
129 collection_[pos].owner =
this;
130 return collection_.at(pos);
161 collection_[pos].pos = pos;
162 collection_[pos].owner =
this;
163 return collection_[pos];
211 bool empty()
const {
return collection_.empty();}
237 if (sorted_ != value) {
254 size_t index = pos -
begin();
256 iterator result = collection_.insert(pos, value);
258 (*this)[index].owner =
this;
259 (*this)[index].pos = index;
268 size_t index = pos -
begin();
270 iterator result = collection_.insert(pos, value);
272 (*this)[index].owner =
this;
273 (*this)[index].pos = index;
282 size_t index = pos -
begin();
284 iterator result = collection_.insert(pos, value);
286 (*this)[index].owner =
this;
287 (*this)[index].pos = index;
306 iterator result = collection_.erase(pos);
315 iterator result = collection_.erase(pos);
325 for (
iterator it = first; it <= last; it++)
349 collection_.push_back(item);
350 size_t index = collection_.size() - 1;
351 (*this)[index].owner =
this;
352 (*this)[index].pos = index;
359 collection_.push_back(item);
360 size_t index = collection_.size() - 1;
361 (*this)[index].owner =
this;
362 (*this)[index].pos = index;
387 template<
typename collection_t>
389 for(
const auto& item : collection)
402 std::vector<type_t> array;
403 for (
auto item : collection_)
404 array.push_back(item);
416 std::vector<value_type, allocator_type> collection_;
417 bool inserting_ =
false;
418 bool erasing_ =
false;
419 bool sorted_ =
false;
Contains xtd::argument_out_of_range_exception exception.
The exception that is thrown when one of the arguments provided to a method is out of range.
Definition argument_out_of_range_exception.h:18
Contains xtd::event event.
Contains xtd::event_args event args.
Contains xtd::event_handler event handler.
#define current_stack_frame_
Provides information about the current stack frame.
Definition stack_frame.h:201
size_t size
Represents a size of any object in bytes.
Definition types.h:171
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition system_report.h:17
Contains xtd::forms::layout::sorter_none class.