#pragma once #include #include #include #include namespace xrpl::detail { class ApplyViewBase : public ApplyView, public RawView { public: ApplyViewBase() = delete; ApplyViewBase(ApplyViewBase const&) = delete; ApplyViewBase& operator=(ApplyViewBase&&) = delete; ApplyViewBase& operator=(ApplyViewBase const&) = delete; ApplyViewBase(ApplyViewBase&&) = default; ApplyViewBase(ReadView const* base, ApplyFlags flags); // ReadView [[nodiscard]] bool open() const override; [[nodiscard]] LedgerHeader const& header() const override; [[nodiscard]] Fees const& fees() const override; [[nodiscard]] Rules const& rules() const override; [[nodiscard]] bool exists(Keylet const& k) const override; [[nodiscard]] std::optional succ(key_type const& key, std::optional const& last = std::nullopt) const override; [[nodiscard]] std::shared_ptr read(Keylet const& k) const override; [[nodiscard]] std::unique_ptr slesBegin() const override; [[nodiscard]] std::unique_ptr slesEnd() const override; [[nodiscard]] std::unique_ptr slesUpperBound(uint256 const& key) const override; [[nodiscard]] std::unique_ptr txsBegin() const override; [[nodiscard]] std::unique_ptr txsEnd() const override; [[nodiscard]] bool txExists(key_type const& key) const override; [[nodiscard]] tx_type txRead(key_type const& key) const override; // ApplyView [[nodiscard]] ApplyFlags flags() const override; std::shared_ptr peek(Keylet const& k) override; void erase(std::shared_ptr const& sle) override; void insert(std::shared_ptr const& sle) override; void update(std::shared_ptr const& sle) override; // RawView void rawErase(std::shared_ptr const& sle) override; void rawInsert(std::shared_ptr const& sle) override; void rawReplace(std::shared_ptr const& sle) override; void rawDestroyXRP(XRPAmount const& feeDrops) override; protected: ApplyFlags flags_; ReadView const* base_; detail::ApplyStateTable items_; }; } // namespace xrpl::detail