@@ -23,14 +23,14 @@ namespace reactor {
2323
2424class BaseMultiport { // NOLINT cppcoreguidelines-special-member-functions,-warnings-as-errors
2525private:
26- std::atomic<std::size_t > size_ {0 };
26+ std::atomic<std::size_t > present_ports_size_ {0 };
2727 std::vector<std::size_t > present_ports_{};
2828
2929 // record that the port with the given index has been set
3030 void set_present (std::size_t index);
3131
3232 // reset the list of set port indexes
33- void reset () noexcept { size_ .store (0 , std::memory_order_relaxed); }
33+ void reset () noexcept { present_ports_size_ .store (0 , std::memory_order_relaxed); }
3434
3535 [[nodiscard]] auto get_set_callback (std::size_t index) noexcept -> PortCallback;
3636 const PortCallback clean_callback_{[this ]([[maybe_unused]] const BasePort& port) { this ->reset (); }};
@@ -39,7 +39,7 @@ private:
3939
4040protected:
4141 [[nodiscard]] auto present_ports () const -> const auto& { return present_ports_; }
42- [[nodiscard]] auto present_ports_size () const -> auto { return size_ .load (); }
42+ [[nodiscard]] auto present_ports_size () const -> auto { return present_ports_size_ .load (); }
4343
4444 void present_ports_reserve (size_t n) { present_ports_.reserve (n); }
4545
@@ -50,11 +50,15 @@ public:
5050 ~BaseMultiport () = default ;
5151};
5252
53+ template <class T >
54+ class MutationChangeMultiportSize ;
55+
5356template <class T , class A = std::allocator<T>>
5457class Multiport : public BaseMultiport { // NOLINT cppcoreguidelines-special-member-functions
5558protected:
5659 std::vector<T> ports_{}; // NOLINT cppcoreguidelines-non-private-member-variables-in-classes
5760
61+ friend MutationChangeMultiportSize<T>;
5862public:
5963 using value_type = typename A::value_type;
6064 using size_type = typename A::size_type;
0 commit comments