.. index:: pair: class; EE::ObservableVector .. _doxid-class_e_e_1_1_observable_vector: template class EE::ObservableVector =================================== .. toctree:: :hidden: enum_EE_ObservableVector_ChangeType.rst enum_EE_ObservableVector_Phase.rst struct_EE_ObservableVector_Change.rst struct_EE_ObservableVector_State.rst class_EE_ObservableVector_Connection.rst class_EE_ObservableVector_SharedHandle.rst Overview ~~~~~~~~ A vector whose explicit mutations can incrementally update attached adapters. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include template class ObservableVector { public: // typedefs typedef std::vector :target:`ValueType`; typedef std::function`&)> :target:`Callback`; // enums enum :ref:`ChangeType`; enum :ref:`Phase`; // structs struct :ref:`Change`; struct :ref:`State`; // classes class :ref:`Connection`; class :ref:`SharedHandle`; // construction :ref:`ObservableVector`(); :ref:`ObservableVector`(std::vector values); :target:`ObservableVector`(const ObservableVector&); :target:`ObservableVector`(ObservableVector&&); // methods ObservableVector& :target:`operator=`(const ObservableVector&); ObservableVector& :target:`operator=`(ObservableVector&&); const std::vector& :ref:`get`() const; const T& :ref:`operator[]`(std::size_t index) const; std::size_t :ref:`size`() const; bool :ref:`empty`() const; void :ref:`insert`(std::size_t index, T value); void :ref:`pushBack`(T value); void :ref:`erase`(std::size_t index, std::size_t count = 1); void :ref:`move`(std::size_t from, std::size_t to); void :ref:`set`(std::size_t index, T value); void :ref:`reset`(std::vector values); :ref:`Connection` :ref:`observe`(:ref:`Callback` callback); :ref:`SharedHandle` :ref:`sharedHandle`() const; }; .. _details-class_e_e_1_1_observable_vector: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ A vector whose explicit mutations can incrementally update attached adapters. Use this when a collection remains live while a view is attached. Immutable option lists and collections already managed by a specialized Model should continue using those simpler models. Notifications are synchronous and the collection and its connections must be used from one owning thread. See the ui_data_collections example for live insertion, updates, and removal. Construction ------------ .. index:: pair: function; ObservableVector .. _doxid-class_e_e_1_1_observable_vector_1a23a91cbe12b7760d7753d1b33002dab7: .. ref-code-block:: cpp :class: doxyrest-title-code-block ObservableVector() Creates an empty observable collection. .. index:: pair: function; ObservableVector .. _doxid-class_e_e_1_1_observable_vector_1ab29e095987507432876a3efde6e3fd32: .. ref-code-block:: cpp :class: doxyrest-title-code-block ObservableVector(std::vector values) Creates an observable collection containing ``values`` without emitting a change. Methods ------- .. index:: pair: function; get .. _doxid-class_e_e_1_1_observable_vector_1af57b1d276f3a739c99a4ab6ed8387610: .. ref-code-block:: cpp :class: doxyrest-title-code-block const std::vector& get() const .. rubric:: Returns: Read-only access to the complete collection. .. index:: pair: function; operator[] .. _doxid-class_e_e_1_1_observable_vector_1a26165b0e6666b7991fda69a32ac278cf: .. ref-code-block:: cpp :class: doxyrest-title-code-block const T& operator[](std::size_t index) const .. rubric:: Returns: The value at ``index``. No bounds checking is performed. .. index:: pair: function; size .. _doxid-class_e_e_1_1_observable_vector_1ace640567c27f90e1ba5d1a033b192ee1: .. ref-code-block:: cpp :class: doxyrest-title-code-block std::size_t size() const .. rubric:: Returns: The number of values in the collection. .. index:: pair: function; empty .. _doxid-class_e_e_1_1_observable_vector_1a83b1a2e30f34d305eba0ba4f19da1c9d: .. ref-code-block:: cpp :class: doxyrest-title-code-block bool empty() const .. rubric:: Returns: Whether the collection contains no values. .. index:: pair: function; insert .. _doxid-class_e_e_1_1_observable_vector_1a68c502cccd95344f2fde64db0753058e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void insert(std::size_t index, T value) Inserts ``value`` before ``index`` and emits paired Before/After notifications. .. index:: pair: function; pushBack .. _doxid-class_e_e_1_1_observable_vector_1a0a38fc519e6311f3090a2cc588d57c28: .. ref-code-block:: cpp :class: doxyrest-title-code-block void pushBack(T value) Appends ``value`` and emits paired Before/After insertion notifications. .. index:: pair: function; erase .. _doxid-class_e_e_1_1_observable_vector_1af4b76043429499d5c994aa6c9c46348f: .. ref-code-block:: cpp :class: doxyrest-title-code-block void erase(std::size_t index, std::size_t count = 1) Removes ``count`` values starting at ``index``. A zero count is a no-op. .. index:: pair: function; move .. _doxid-class_e_e_1_1_observable_vector_1a9aaf528ee1ed1b005b356dd125c7d0b2: .. ref-code-block:: cpp :class: doxyrest-title-code-block void move(std::size_t from, std::size_t to) Moves one value from ``from`` to ``to``. ``to`` is the final index in the resulting collection. Moving to the same index is a no-op. .. index:: pair: function; set .. _doxid-class_e_e_1_1_observable_vector_1a43bf696f363779e0d9cae0e59e2f0c9e: .. ref-code-block:: cpp :class: doxyrest-title-code-block void set(std::size_t index, T value) Replaces the value at ``index`` unless it already compares equal to ``value``. .. index:: pair: function; reset .. _doxid-class_e_e_1_1_observable_vector_1ae925c4ba4af45892683b5f3189fe44e9: .. ref-code-block:: cpp :class: doxyrest-title-code-block void reset(std::vector values) Replaces the entire collection and emits paired Reset notifications. .. index:: pair: function; observe .. _doxid-class_e_e_1_1_observable_vector_1a60ee169d0e0ed42b9b4072a78350b8e6: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`Connection` observe(:ref:`Callback` callback) Observes subsequent collection mutations. Each non-empty mutation emits a Before notification followed by After. The callback is not invoked for the collection's current contents when it is registered. .. rubric:: Returns: A scoped connection; destroying it disconnects the callback. .. index:: pair: function; sharedHandle .. _doxid-class_e_e_1_1_observable_vector_1ad9d646602ac1fe818033bebbe38ec73b: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`SharedHandle` sharedHandle() const .. rubric:: Returns: Shared read access that keeps collection storage alive independently of this object.