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