79 for (
auto& event : other.attachedEvents_)
85 for (
auto& event : other.attachedOneshotEvents_)
144 if (!activationResult.found)
169 template <
typename ContainedT>
180 : observed_{&observed}
184 : observed_{&observed}
190 : observed_{other.observed_}
193 other.observed_ =
nullptr;
199 observed_ = other.observed_;
201 other.observed_ =
nullptr;
209 if (observed_ ==
nullptr)
235 explicit operator ContainedT&()
282 template <
typename T = ContainedT>
283 requires std::is_constructible_v<ContainedT, T>
294 template <
typename T = ContainedT>
295 requires std::is_constructible_v<ContainedT, T>
307 template <
typename T = ContainedT>
315 template <
typename T = ContainedT,
typename U>
322 template <
typename T = ContainedT,
typename U>
330 template <
typename T = ContainedT>
338 template <
typename T = ContainedT>
339 requires std::equality_comparable_with<ContainedT, T>
366 explicit operator bool() const
367 requires std::convertible_to<ContainedT,
bool>
400 template <
typename T>
401 requires std::constructible_from<ContainedT, T>
411 template <
typename ContainerT>
414 namespace ContainerWrapUtility
416 template <
typename T,
typename ContainerT>
417 class ReferenceWrapper
425 ReferenceWrapper(ReferenceWrapper
const&) =
default;
426 ReferenceWrapper(ReferenceWrapper&& other) noexcept
427 : owner_{other.owner_}
431 other.owner_ =
nullptr;
433 other.ref_ =
nullptr;
435 ReferenceWrapper& operator=(ReferenceWrapper
const&) =
default;
436 ReferenceWrapper& operator=(ReferenceWrapper&& other)
noexcept
440 owner_ = other.owner_;
443 other.owner_ =
nullptr;
445 other.ref_ =
nullptr;
449 ~ReferenceWrapper() =
default;
460 T
const& operator*()
const
469 T
const* operator->()
const
478 T
const& getReadonly()
482 ReferenceWrapper& operator=(T&&
val)
484 *ref_ = std::move(
val);
488 ReferenceWrapper& operator=(T
const&
val)
494 bool operator==(ReferenceWrapper
const& other)
const
496 return *ref_ == *other.ref_;
500 return *ref_ == other;
509 template <
typename T,
typename ContainerT>
510 auto& unwrapReferenceWrapper(ReferenceWrapper<T, ContainerT>& wrapper)
512 return wrapper.get();
514 template <
typename T,
typename ContainerT>
515 auto const& unwrapReferenceWrapper(ReferenceWrapper<T, ContainerT>
const& wrapper)
517 return wrapper.get();
519 auto& unwrapReferenceWrapper(
auto& ref)
523 auto const& unwrapReferenceWrapper(
auto const& ref)
528 template <
typename T,
typename ContainerT>
547 T
const& operator*()
const
556 T
const* operator->()
const
565 T
const& getReadonly()
569 PointerWrapper& operator=(T* ptr)
582 template <
typename WrappedIterator,
typename ContainerT>
583 class IteratorWrapper
586 using iterator_category = std::random_access_iterator_tag;
587 using value_type =
typename WrappedIterator::value_type;
588 using difference_type =
typename WrappedIterator::difference_type;
589 using pointer = PointerWrapper<value_type, ContainerT>;
590 using reference = ReferenceWrapper<value_type, ContainerT>;
597 IteratorWrapper(IteratorWrapper
const&) =
default;
598 IteratorWrapper(IteratorWrapper&&) =
default;
599 IteratorWrapper& operator=(IteratorWrapper
const&) =
default;
600 IteratorWrapper& operator=(IteratorWrapper&&) =
default;
601 ~IteratorWrapper() =
default;
602 IteratorWrapper& operator+=(difference_type n)
607 IteratorWrapper& operator-=(difference_type n)
619 return IteratorWrapper{it_++};
628 return IteratorWrapper{it_--};
630 friend IteratorWrapper operator+(IteratorWrapper
const& wrap, difference_type n)
632 return IteratorWrapper{wrap.owner_, wrap.it_ + n};
634 friend IteratorWrapper operator-(IteratorWrapper
const& wrap, difference_type n)
636 return IteratorWrapper{wrap.owner_, wrap.it_ - n};
638 difference_type operator-(IteratorWrapper
const& other)
const
640 return it_ - other.it_;
644 if constexpr (std::is_same_v<WrappedIterator, typename ContainerT::reverse_iterator>)
645 return ReferenceWrapper<value_type, ContainerT>{
647 owner_->contained_.size() -
static_cast<std::size_t
>(1) -
648 static_cast<std::size_t
>(it_ - owner_->contained_.rbegin()),
651 return ReferenceWrapper<value_type, ContainerT>{
652 owner_,
static_cast<std::size_t
>(it_ - owner_->contained_.begin()), *it_};
654 auto operator*()
const
660 if constexpr (std::is_same_v<WrappedIterator, typename ContainerT::reverse_iterator>)
661 return PointerWrapper<value_type, ContainerT>{
663 owner_->contained_.size() -
static_cast<std::size_t
>(1) -
664 static_cast<std::size_t
>(it_ - owner_->contained_.rbegin()),
667 return PointerWrapper<value_type, ContainerT>{
668 owner_,
static_cast<std::size_t
>(it_ - owner_->contained_.begin()), &*it_};
670 auto operator->()
const
674 IteratorWrapper operator[](std::size_t offset)
const
676 return IteratorWrapper{owner_, it_[offset]};
678 bool operator<(IteratorWrapper
const& other)
const
680 return it_ < other.it_;
682 bool operator>(IteratorWrapper
const& other)
const
684 return it_ > other.it_;
686 bool operator<=(IteratorWrapper
const& other)
const
688 return it_ <= other.it_;
690 bool operator>=(IteratorWrapper
const& other)
const
692 return it_ >= other.it_;
694 bool operator==(IteratorWrapper
const& other)
const
696 return it_ == other.it_;
698 WrappedIterator getWrapped()
const
709 template <
typename ContainerT>
713 friend class ContainerWrapUtility::ReferenceWrapper<typename ContainerT::
value_type, ContainerT>;
714 friend class ContainerWrapUtility::PointerWrapper<typename ContainerT::value_type, ContainerT>;
720 using
reference = ContainerWrapUtility::ReferenceWrapper<typename ContainerT::value_type, ContainerT>;
722 using
pointer = ContainerWrapUtility::PointerWrapper<typename ContainerT::value_type, ContainerT>;
725 using
iterator = ContainerWrapUtility::IteratorWrapper<typename ContainerT::iterator, ContainerT>;
728 ContainerWrapUtility::IteratorWrapper<typename ContainerT::reverse_iterator, ContainerT>;
744 template <
typename T = ContainerT>
750 template <
typename T = ContainerT>
751 requires std::constructible_from<ContainerT, T>
767 template <
typename T = ContainerT>
773 template <
typename T = ContainerT>
790 constexpr auto map(
auto&& function)
const;
791 constexpr auto map(
auto&& function);
793 template <
typename T = ContainerT>
807 template <
typename Iterator>
808 void assign(Iterator first, Iterator last)
814 void assign(std::initializer_list<value_type> ilist)
918 std::size_t
size() const noexcept
922 template <
typename U = ContainerT>
927 template <
typename U = ContainerT>
933 template <
typename U = ContainerT>
938 template <
typename U = ContainerT>
951 template <
typename U = ContainerT>
953 std::pair<typename ContainerT::iterator, bool>,
954 decltype(std::declval<U>().insert(std::declval<const value_type&>()))>
965 template <
typename U = ContainerT>
967 std::pair<typename ContainerT::iterator, bool>,
968 decltype(std::declval<U>().insert(std::declval<value_type&&>()))>
985 const auto distance = pos -
cbegin();
996 const auto distance = pos -
cbegin();
1007 const auto distance = pos -
cbegin();
1012 template <
typename Iterator>
1015 return insert(pos.getWrapped(), first, last);
1017 template <
typename Iterator>
1020 const auto distance = pos -
cbegin();
1021 auto it =
contained_.insert(pos, first, last);
1027 return insert(pos.getWrapped(), ilist);
1031 const auto distance = pos -
cbegin();
1036 template <
typename... Args>
1039 const auto distance = pos -
cbegin();
1040 auto it =
contained_.emplace(pos, std::forward<Args>(args)...);
1046 const auto distance = pos -
begin();
1048 auto it =
contained_.erase(pos.getWrapped());
1054 const auto distance = pos -
cbegin();
1062 const auto distance = first -
begin();
1063 const auto distance2 = std::distance(first, last);
1065 auto it =
contained_.erase(first.getWrapped(), last.getWrapped());
1071 const auto distance = first -
cbegin();
1072 const auto distance2 = std::distance(first, last);
1078 template <
typename U = ContainerT>
1085 template <
typename U = ContainerT>
1092 template <
typename U = ContainerT>
1099 template <
typename U = ContainerT>
1106 template <
typename... Args>
1109 contained_.emplace_back(std::forward<Args>(args)...);
1112 template <
typename U = ContainerT,
typename... Args>
1115 contained_.emplace_front(std::forward<Args>(args)...);
1126 template <
typename U = ContainerT>
1135 template <
typename U = ContainerT>
1140 if (sizeBefore < count && sizeBefore != 0)
1145 if (sizeBefore < count)
1149 else if (sizeBefore != 0)
1154 template <
typename U = ContainerT>
1157 decltype(std::declval<U>().resize(std::declval<std::size_t>(), std::declval<value_type const&>()))>
1163 if (sizeBefore < count)
1167 else if (sizeBefore != 0)
1198 void update(
bool force =
false)
const override
1209 std::function<void(
int)> doInsert;
1210 doInsert = [&](
int retries) {
1213 const auto result =
rangeContext_->insertModificationRange(low, high, type);
1225 doInsert(retries + 1);
1256 if (
auto shared = weak.lock(); shared)
1267 const bool fixupPerformed =
rangeContext_->eraseNotify(index, high);
1281 template <
typename T>
1300 template <
typename... Parameters>
1307 static constexpr auto isRandomAccess =
true;
1320 template <
typename... Parameters>
1327 static constexpr auto isRandomAccess =
true;
1340 template <
typename... Parameters>
1347 static constexpr auto isRandomAccess =
true;
1349 Observed<std::basic_string<Parameters...>>&
operator=(std::basic_string<Parameters...>
const& contained)
1356 ObservedContainer<std::basic_string<Parameters...>>::operator=(std::move(contained));
1360 Observed<std::basic_string<Parameters...>>&
erase(std::size_t index = 0, std::size_t count = std::string::npos)
1362 if (count == std::size_t{0})
1365 const auto high = count == std::string::npos ? sizeBefore - 1 : count - 1;
1366 this->eraseNotify(index, high);
1372 template <
typename... Parameters>
1379 static constexpr auto isRandomAccess =
false;
1385 template <
typename T = std::set<Parameters...>>
1386 requires std::constructible_from<std::set<Parameters...>, T>
1402 template <
typename... Parameters>
1409 static constexpr auto isRandomAccess =
false;
1415 template <
typename T = std::list<Parameters...>>
1416 requires std::constructible_from<std::list<Parameters...>, T>
1438 using ObservedBase::operator=;
1453 template <
typename T>
1456 static constexpr bool value =
false;
1459 template <
typename T>
1462 static constexpr bool value =
true;
1465 template <
typename T>
1468 static constexpr bool value =
false;
1471 template <
typename T>
1474 static constexpr bool value =
true;
1477 template <
typename T>
1480 static constexpr bool value =
false;
1483 template <
typename T>
1486 static constexpr bool value =
true;
1489 template <
typename T>
1492 static constexpr bool value =
1497 template <
typename T>
1501 ++observedValue.
value();
1503 return observedValue;
1505 template <
typename T>
1506 requires Incrementable<T>
1509 auto tmp = observedValue.
value();
1510 ++observedValue.
value();
1515 template <
typename T>
1519 --observedValue.
value();
1520 observedValue.update();
1521 return observedValue;
1523 template <
typename T>
1527 auto tmp = observedValue.value();
1528 --observedValue.value();
1529 observedValue.update();
1533 template <
typename T>
1535 template <
typename T>
1537 template <
typename T>
1539 template <
typename T>
1544 template <
typename T>
1549 : observed_{&observed}
1554 return observed_->value();
1559 observed_->attachEvent(
eventId);
1564 observed_->detachEvent(
eventId);
1571 template <
typename T>
1581 template <
typename T>
1584 using type = std::weak_ptr<Observed<T>>;
1586 template <
typename T>
1589 using type = std::weak_ptr<Observed<T>>;
1591 template <
typename T>
1594 using type = std::weak_ptr<const Observed<T>>;
1596 template <
typename T>
1599 using type = std::weak_ptr<const Observed<T>>;
1602 template <
typename T>
1614 template <
typename T>
1617 using type = std::weak_ptr<Observed<T>>;
1620 template <
typename T>
1623 using type = std::weak_ptr<Observed<T>>;
1627 template <
typename T>
1629 template <
typename T>
1631 template <
typename T>
1635 template <
typename T>
1640 template <
typename T>
1645 template <
typename T>
1650 template <
typename T>
1655 template <
typename T>
1660 template <
typename T>
1665 template <
typename T>
#define NUI_ASSERT(condition, message)
Definition assert.hpp:31
This object can be copied with low cost.
Definition event_context.hpp:38
void removeAfterEffect(EventIdType id)
Definition event_context.hpp:80
EventIdType registerAfterEffect(Event event)
Definition event_context.hpp:72
auto activateEvent(EventIdType id)
Definition event_context.hpp:56
auto activateAfterEffect(EventIdType id)
Definition event_context.hpp:60
EventRegistry::EventIdType EventIdType
Definition event_context.hpp:40
void executeActiveEventsImmediately()
Definition event_context.hpp:64
static constexpr EventIdType invalidEventId
Definition event_registry.hpp:16
Definition observed_value.hpp:177
ModificationProxy & operator=(ModificationProxy &&other) noexcept
Definition observed_value.hpp:195
ModificationProxy & operator=(ModificationProxy const &)=delete
ModificationProxy(ModifiableObserved &observed)
Definition observed_value.hpp:179
ModificationProxy(ModifiableObserved &observed, bool now)
Definition observed_value.hpp:183
ModificationProxy(ModificationProxy &&other) noexcept
Definition observed_value.hpp:189
~ModificationProxy()
Definition observed_value.hpp:205
auto & value()
Definition observed_value.hpp:223
ModificationProxy(ModificationProxy const &)=delete
auto & operator*()
Definition observed_value.hpp:231
auto * operator->()
Definition observed_value.hpp:227
Definition observed_value.hpp:171
ModifiableObserved & operator=(ContainedT const &contained)
Definition observed_value.hpp:268
ModificationProxy modify()
Can be used to make mutations to the underlying class that get commited when the returned proxy is de...
Definition observed_value.hpp:356
ModifiableObserved(CustomEventContextFlag_t, EventContext *ctx)
Definition observed_value.hpp:289
ContainedT & value()
Definition observed_value.hpp:372
ModifiableObserved & operator=(const ModifiableObserved &)=delete
ContainedT const & operator*() const
Definition observed_value.hpp:384
~ModifiableObserved() override=default
ModifiableObserved< T > & operator+=(U const &rhs)
Definition observed_value.hpp:317
ModifiableObserved & operator=(ContainedT &&contained)
Definition observed_value.hpp:274
ModifiableObserved(ModifiableObserved &&other) noexcept
Definition observed_value.hpp:251
ModifiableObserved()
Definition observed_value.hpp:246
ContainedT const * operator->() const
Definition observed_value.hpp:392
ModificationProxy modifyNow()
Definition observed_value.hpp:361
ModifiableObserved & operator=(T &&t)
Assign a completely new value.
Definition observed_value.hpp:308
ModifiableObserved & operator=(T &&t)
Definition observed_value.hpp:332
ContainedT value_type
Definition observed_value.hpp:173
ContainedT & operator*()
Definition observed_value.hpp:380
ModifiableObserved(T &&t)
Definition observed_value.hpp:284
void assignWithoutUpdate(T &&t)
Sets the value without making an update.
Definition observed_value.hpp:402
ModifiableObserved(const ModifiableObserved &)=delete
ContainedT contained_
Definition observed_value.hpp:408
ModifiableObserved & operator=(ModifiableObserved &&other) noexcept
Definition observed_value.hpp:258
ContainedT * operator->()
Definition observed_value.hpp:388
ContainedT const & value() const
Definition observed_value.hpp:376
ModifiableObserved(CustomEventContextFlag_t, EventContext *ctx, T &&t)
Definition observed_value.hpp:296
ModifiableObserved & assignChecked(T &&other)
Definition observed_value.hpp:340
ModifiableObserved< T > & operator-=(U const &rhs)
Definition observed_value.hpp:324
Utility class to detect if an object was moved.
Definition move_detector.hpp:9
bool wasMoved() const noexcept
Definition move_detector.hpp:24
Definition observed_value.hpp:31
std::size_t totalAttachedEventCount() const
Definition observed_value.hpp:123
void attachOneshotEvent(EventContext::EventIdType eventId) const
Definition observed_value.hpp:104
std::size_t attachedOneshotEventCount() const
Definition observed_value.hpp:119
void detachAllEvents()
You should never need to do this.
Definition observed_value.hpp:131
virtual void update(bool=false) const
Definition observed_value.hpp:137
ObservedBase(CustomEventContextFlag_t, EventContext *ctx)
Definition observed_value.hpp:33
std::size_t attachedEventCount() const
Definition observed_value.hpp:115
ObservedBase(ObservedBase const &)=delete
ObservedBase & operator=(ObservedBase &&other) noexcept
Definition observed_value.hpp:71
void attachEvent(EventContext::EventIdType eventId) const
Definition observed_value.hpp:100
void detachEvent(EventContext::EventIdType eventId) const
Definition observed_value.hpp:108
ObservedBase & operator=(ObservedBase const &)=delete
void updateNow(bool force=false) const
Definition observed_value.hpp:155
virtual ~ObservedBase()=default
ObservedBase(ObservedBase &&other) noexcept
Definition observed_value.hpp:40
EventContext * eventContext_
Definition observed_value.hpp:164
std::vector< EventContext::EventIdType > attachedEvents_
Definition observed_value.hpp:165
std::vector< EventContext::EventIdType > attachedOneshotEvents_
Definition observed_value.hpp:166
Definition observed_value.hpp:711
ObservedContainer(CustomEventContextFlag_t, EventContext *ctx, RangeEventContext &&rangeContext)
Definition observed_value.hpp:762
ObservedContainer()
Definition observed_value.hpp:739
iterator erase(const_iterator first, const_iterator last)
Definition observed_value.hpp:1069
iterator insert(iterator pos, std::initializer_list< value_type > ilist)
Definition observed_value.hpp:1025
Detail::PickFirst_t< std::size_t, decltype(std::declval< U >().capacity())> capacity() const noexcept
Definition observed_value.hpp:934
~ObservedContainer()
Definition observed_value.hpp:784
Detail::PickFirst_t< void, decltype(std::declval< U >().pop_front())> pop_front()
Definition observed_value.hpp:1127
void swap(ContainerT &other)
Definition observed_value.hpp:1172
const_reference front() const
Definition observed_value.hpp:826
std::shared_ptr< RangeEventContext > rangeContext_
Definition observed_value.hpp:1277
const_reference at(size_type pos) const
Definition observed_value.hpp:850
reference front()
Definition observed_value.hpp:822
ObservedContainer & operator=(T &&t)
Definition observed_value.hpp:794
iterator erase(iterator pos)
Definition observed_value.hpp:1044
const_reverse_iterator rend() const noexcept
Definition observed_value.hpp:900
typename ContainerT::allocator_type allocator_type
Definition observed_value.hpp:717
void insertRangeChecked(std::size_t low, std::size_t high, RangeOperationType type)
Definition observed_value.hpp:1207
const_reference back() const
Definition observed_value.hpp:834
Detail::PickFirst_t< void, decltype(std::declval< U >().reserve(std::declval< std::size_t >()))> reserve(size_type capacity)
Definition observed_value.hpp:929
typename ContainerT::const_pointer const_pointer
Definition observed_value.hpp:723
const_iterator end() const noexcept
Definition observed_value.hpp:876
auto registerAfterEffect()
Definition observed_value.hpp:1251
Detail::PickFirst_t< std::pair< typename ContainerT::iterator, bool >, decltype(std::declval< U >().insert(std::declval< const value_type & >()))> insert(const value_type &value)
Definition observed_value.hpp:955
Detail::PickFirst_t< void, decltype(std::declval< U >().push_front(std::declval< value_type >()))> push_front(value_type &&value)
Definition observed_value.hpp:1101
EventContext::EventIdType afterEffectId_
Definition observed_value.hpp:1278
ObservedContainer(CustomEventContextFlag_t, EventContext *ctx, T &&t)
Definition observed_value.hpp:745
iterator end() noexcept
Definition observed_value.hpp:872
reference at(size_type pos)
Definition observed_value.hpp:846
Detail::PickFirst_t< void, decltype(std::declval< U >().push_back(std::declval< const value_type & >()))> push_back(const value_type &value)
Definition observed_value.hpp:1080
ContainerT const & value() const
Definition observed_value.hpp:1184
Detail::PickFirst_t< std::pair< typename ContainerT::iterator, bool >, decltype(std::declval< U >().insert(std::declval< value_type && >()))> insert(value_type &&value)
Definition observed_value.hpp:969
RangeEventContext const & rangeContext() const
Definition observed_value.hpp:1192
reverse_iterator rend() noexcept
Definition observed_value.hpp:896
const_reference operator[](size_type pos) const
Definition observed_value.hpp:858
Detail::PickFirst_t< void, decltype(std::declval< U >().emplace_front())> emplace_front(Args &&... args)
Definition observed_value.hpp:1113
iterator insert(iterator pos, value_type &&value)
Definition observed_value.hpp:990
reference back()
Definition observed_value.hpp:830
const_pointer data() const noexcept
Definition observed_value.hpp:842
iterator insert(const_iterator pos, value_type &&value)
Definition observed_value.hpp:994
void assign(std::initializer_list< value_type > ilist)
Definition observed_value.hpp:814
void assign(Iterator first, Iterator last)
Definition observed_value.hpp:808
iterator begin() noexcept
Definition observed_value.hpp:864
const_reverse_iterator rbegin() const noexcept
Definition observed_value.hpp:892
Detail::PickFirst_t< void, decltype(std::declval< U >().push_front(std::declval< const value_type & >()))> push_front(const value_type &value)
Definition observed_value.hpp:1094
constexpr auto map(auto &&function) const
Definition range.hpp:153
ObservedContainer(RangeEventContext &&rangeContext)
Definition observed_value.hpp:757
pointer data() noexcept
Definition observed_value.hpp:838
ObservedContainer(T &&t)
Definition observed_value.hpp:752
const_reverse_iterator crbegin() const noexcept
Definition observed_value.hpp:904
const_iterator begin() const noexcept
Definition observed_value.hpp:868
iterator insert(const_iterator pos, const value_type &value)
Definition observed_value.hpp:983
ObservedContainer(ObservedContainer &&)=default
ObservedContainer & operator=(const ObservedContainer &)=delete
typename ContainerT::size_type size_type
Definition observed_value.hpp:718
ObservedContainer(T &&t, RangeEventContext &&rangeContext)
Definition observed_value.hpp:768
iterator insert(const_iterator pos, std::initializer_list< value_type > ilist)
Definition observed_value.hpp:1029
ContainerWrapUtility::ReferenceWrapper< typename ContainerT::value_type, ContainerT > reference
Definition observed_value.hpp:720
iterator insert(const_iterator pos, Iterator first, Iterator last)
Definition observed_value.hpp:1018
ObservedContainer(const ObservedContainer &)=delete
iterator erase(const_iterator pos)
Definition observed_value.hpp:1052
void emplace_back(Args &&... args)
Definition observed_value.hpp:1107
const_reverse_iterator crend() const noexcept
Definition observed_value.hpp:908
Detail::PickFirst_t< void, decltype(std::declval< U >().resize(std::declval< std::size_t >(), std::declval< value_type const & >()))> resize(size_type count, value_type const &fillValue)
Definition observed_value.hpp:1158
Detail::PickFirst_t< void, decltype(std::declval< U >().shrink_to_fit())> shrink_to_fit()
Definition observed_value.hpp:939
typename ContainerT::value_type value_type
Definition observed_value.hpp:716
void update(bool force=false) const override
Definition observed_value.hpp:1198
ContainerWrapUtility::IteratorWrapper< typename ContainerT::iterator, ContainerT > iterator
Definition observed_value.hpp:725
Detail::PickFirst_t< void, decltype(std::declval< U >().push_back(std::declval< value_type >()))> push_back(value_type &&value)
Definition observed_value.hpp:1087
iterator insert(const_iterator pos, size_type count, const value_type &value)
Definition observed_value.hpp:1005
ContainerT & value()
Definition observed_value.hpp:1180
reference operator[](size_type pos)
Definition observed_value.hpp:854
iterator emplace(const_iterator pos, Args &&... args)
Definition observed_value.hpp:1037
RangeEventContext & rangeContext()
Definition observed_value.hpp:1188
void pop_back()
Definition observed_value.hpp:1118
const_iterator cend() const noexcept
Definition observed_value.hpp:884
iterator insert(iterator pos, Iterator first, Iterator last)
Definition observed_value.hpp:1013
reverse_iterator rbegin() noexcept
Definition observed_value.hpp:888
const_iterator cbegin() const noexcept
Definition observed_value.hpp:880
ContainerWrapUtility::IteratorWrapper< typename ContainerT::reverse_iterator, ContainerT > reverse_iterator
Definition observed_value.hpp:728
ContainerWrapUtility::PointerWrapper< typename ContainerT::value_type, ContainerT > pointer
Definition observed_value.hpp:722
ObservedContainer & operator=(ObservedContainer &&)=default
typename ContainerT::const_reverse_iterator const_reverse_iterator
Definition observed_value.hpp:729
void assign(size_type count, const value_type &value)
Definition observed_value.hpp:801
typename ContainerT::const_iterator const_iterator
Definition observed_value.hpp:726
iterator erase(iterator first, iterator last)
Definition observed_value.hpp:1060
bool empty() const noexcept
Definition observed_value.hpp:914
void eraseNotify(std::size_t index, std::size_t high)
Definition observed_value.hpp:1265
MoveDetector moveDetector_
Definition observed_value.hpp:1276
std::size_t size() const noexcept
Definition observed_value.hpp:918
typename ContainerT::difference_type difference_type
Definition observed_value.hpp:719
typename ContainerT::const_reference const_reference
Definition observed_value.hpp:721
iterator insert(iterator pos, size_type count, const value_type &value)
Definition observed_value.hpp:1001
ObservedContainer(CustomEventContextFlag_t, EventContext *ctx, T &&t, RangeEventContext &&rangeContext)
Definition observed_value.hpp:774
Detail::PickFirst_t< void, decltype(std::declval< U >().resize(std::declval< std::size_t >()))> resize(size_type count)
Definition observed_value.hpp:1137
void clear()
Definition observed_value.hpp:945
iterator insert(iterator pos, const value_type &value)
Definition observed_value.hpp:979
Detail::PickFirst_t< std::size_t, decltype(std::declval< U >().max_size())> max_size() const noexcept
Definition observed_value.hpp:923
Observed< std::basic_string< Parameters... > > & erase(std::size_t index=0, std::size_t count=std::string::npos)
Definition observed_value.hpp:1360
Observed< std::basic_string< Parameters... > > & operator=(std::basic_string< Parameters... > &&contained)
Definition observed_value.hpp:1354
Observed< std::basic_string< Parameters... > > & operator=(std::basic_string< Parameters... > const &contained)
Definition observed_value.hpp:1349
Observed< std::deque< Parameters... > > & operator=(std::deque< Parameters... > const &contained)
Definition observed_value.hpp:1329
Observed< std::deque< Parameters... > > & operator=(std::deque< Parameters... > &&contained)
Definition observed_value.hpp:1334
Observed< std::list< Parameters... > > & operator=(std::list< Parameters... > const &contained)
Definition observed_value.hpp:1421
Observed()
Definition observed_value.hpp:1412
Observed(T &&t)
Definition observed_value.hpp:1417
Observed< std::list< Parameters... > > & operator=(std::list< Parameters... > &&contained)
Definition observed_value.hpp:1426
Observed< std::set< Parameters... > > & operator=(std::set< Parameters... > const &contained)
Definition observed_value.hpp:1391
Observed< std::set< Parameters... > > & operator=(std::set< Parameters... > &&contained)
Definition observed_value.hpp:1396
Observed(T &&t)
Definition observed_value.hpp:1387
Observed()
Definition observed_value.hpp:1382
Observed< std::vector< Parameters... > > & operator=(std::vector< Parameters... > &&contained)
Definition observed_value.hpp:1314
Observed< std::vector< Parameters... > > & operator=(std::vector< Parameters... > const &contained)
Definition observed_value.hpp:1309
void modify() const
Definition observed_value.hpp:1440
void modifyNow() const
Definition observed_value.hpp:1445
Definition observed_value.hpp:1283
Observed & operator=(T const &contained)
Definition observed_value.hpp:1289
Observed & operator=(T &&contained)
Definition observed_value.hpp:1294
Definition range_event_context.hpp:187
Definition concepts.hpp:11
Definition concepts.hpp:14
Definition observed_value.hpp:1540
Definition observed_value.hpp:1534
Definition observed_value.hpp:1536
Definition observed_value.hpp:1538
Definition concepts.hpp:29
Definition concepts.hpp:26
typename ObservedAddReference< std::decay_t< T > >::type ObservedAddReference_t
Definition observed_value.hpp:1628
typename PickFirst< Ts... >::type PickFirst_t
Definition pick_first.hpp:22
typename ObservedAddMutableReference< std::remove_reference_t< T > >::type ObservedAddMutableReference_t
Definition observed_value.hpp:1630
typename ObservedAddMutableReference< std::remove_reference_t< T > >::raw ObservedAddMutableReference_raw
Definition observed_value.hpp:1632
static constexpr auto extractJsonMember(nlohmann::json const &json) -> decltype(auto)
Definition rpc_hub.hpp:29
Definition file_dialog.hpp:6
typename UnpackObserved< T >::type UnpackObserved_t
Definition observed_value.hpp:1666
bool operator==(GObjectReference< T > const &lhs, GObjectReference< U > const &rhs)
Definition gobject.hpp:166
ModifiableObserved< T > & operator++(ModifiableObserved< T > &observedValue)
Definition observed_value.hpp:1499
RangeOperationType
Definition range_event_context.hpp:16
@ Modify
Definition range_event_context.hpp:18
@ Insert
Definition range_event_context.hpp:19
@ Erase
Definition range_event_context.hpp:20
thread_local EventContext globalEventContext
Definition event_context.cpp:5
auto operator--(ModifiableObserved< T > &observedValue) -> ModifiableObserved< Detail::PickFirst_t< T, decltype(--std::declval< T >())> > &
Definition observed_value.hpp:1516
emscripten::val val
Definition val.hpp:5
constexpr CustomEventContextFlag_t CustomEventContextFlag
Definition observed_value.hpp:28
Definition observed_value.hpp:27
Definition observed_value.hpp:1546
constexpr CopyableObservedWrap(Observed< T > const &observed)
Definition observed_value.hpp:1548
T const & value() const
Definition observed_value.hpp:1552
void detachEvent(auto eventId) const
Definition observed_value.hpp:1562
void attachEvent(auto eventId) const
Definition observed_value.hpp:1557
std::weak_ptr< Observed< T > > type
Definition observed_value.hpp:1623
std::weak_ptr< Observed< T > > type
Definition observed_value.hpp:1617
void raw
Definition observed_value.hpp:1612
void type
Definition observed_value.hpp:1611
Definition observed_value.hpp:1604
T raw
Definition observed_value.hpp:1606
T & type
Definition observed_value.hpp:1605
std::weak_ptr< Observed< T > > type
Definition observed_value.hpp:1589
std::weak_ptr< const Observed< T > > type
Definition observed_value.hpp:1599
std::weak_ptr< Observed< T > > type
Definition observed_value.hpp:1584
std::weak_ptr< const Observed< T > > type
Definition observed_value.hpp:1594
void type
Definition observed_value.hpp:1579
Definition observed_value.hpp:1573
T const & type
Definition observed_value.hpp:1574
T type
Definition observed_value.hpp:1643
T type
Definition observed_value.hpp:1653
T type
Definition observed_value.hpp:1663
T type
Definition observed_value.hpp:1648
T type
Definition observed_value.hpp:1658
Definition observed_value.hpp:1637
T type
Definition observed_value.hpp:1638