Aria 2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
Loading...
Searching...
No Matches
list_change.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <memory>
5#include <utility>
6#include <vector>
7
8namespace aria {
9
10enum class ListChangeKind { Insert, Remove, Replace, ItemChanged, Reset, Move };
11
15template<typename T>
16struct ListChange {
17 using Snapshot = std::vector<std::shared_ptr<T>>;
19 std::size_t index = 0;
20 std::shared_ptr<T> item;
21 std::size_t from_index = 0;
22 std::shared_ptr<const Snapshot> snapshot = nullptr;
23
24 static ListChange reset(Snapshot items) {
25 return {ListChangeKind::Reset, 0, {}, 0,
26 std::make_shared<const Snapshot>(std::move(items))};
27 }
28
30 static const auto empty = std::make_shared<const Snapshot>();
31 return {ListChangeKind::Reset, 0, {}, 0, empty};
32 }
33};
34
35} // namespace aria
Definition signal.hpp:12
ListChangeKind
Definition list_change.hpp:10
@ Replace
Definition list_change.hpp:10
@ Remove
Definition list_change.hpp:10
@ Reset
Definition list_change.hpp:10
@ Move
Definition list_change.hpp:10
@ Insert
Definition list_change.hpp:10
An owning event in a sequential list edit stream.
Definition list_change.hpp:16
std::size_t index
Definition list_change.hpp:19
static ListChange reset(Snapshot items)
Definition list_change.hpp:24
static ListChange cleared()
Definition list_change.hpp:29
std::shared_ptr< T > item
Definition list_change.hpp:20
std::shared_ptr< const Snapshot > snapshot
Definition list_change.hpp:22
std::size_t from_index
Definition list_change.hpp:21
ListChangeKind kind
Definition list_change.hpp:18
std::vector< std::shared_ptr< T > > Snapshot
Definition list_change.hpp:17