From 7c7e337e1b45a7e9efeb5fd8cc7bd8361da120e7 Mon Sep 17 00:00:00 2001 From: NINEMINEsigma <1371605831@qq.com> Date: Fri, 13 Jun 2025 11:14:05 +0800 Subject: [PATCH] =?UTF-8?q?BS=200.0.1=20=E5=88=B6=E4=BD=9C=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E5=99=A8=E4=B8=8E=E5=BA=8F=E5=88=97=E7=B1=BB=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convention/CMakeLists.txt | 2 +- Convention/[Runtime]/Generics/Sequence.hpp | 70 ++++++++++++++-------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/Convention/CMakeLists.txt b/Convention/CMakeLists.txt index 1b1bb4b..b040b06 100644 --- a/Convention/CMakeLists.txt +++ b/Convention/CMakeLists.txt @@ -1,7 +1,7 @@ message("Convention: --- ----- ----- ----- ----- --") install(DIRECTORY [Runtime] - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + DESTINATION ${CMAKE_INSTALL_PREFIX}/include FILES_MATCHING PATTERN "*.*" PATTERN "*.cpp" EXCLUDE) diff --git a/Convention/[Runtime]/Generics/Sequence.hpp b/Convention/[Runtime]/Generics/Sequence.hpp index 62000ea..ceeaa95 100644 --- a/Convention/[Runtime]/Generics/Sequence.hpp +++ b/Convention/[Runtime]/Generics/Sequence.hpp @@ -8,34 +8,56 @@ namespace Convention { namespace Generics { - - template - class ISequenceIterator + template + struct ISequence { - public: - virtual ~ISequenceIterator() {} - virtual void Next() abstract; - virtual ReadValueType ReadValue() const abstract; - virtual decltype(auto) operator++() - { - - } - ReadValueType operator++(int) noexcept(noexcept(operator++)) - { - - } - }; - - template> - class ISequence - { - public: - using iterator = std::enable_if, SequenceIterator>, SequenceIterator>; virtual ~ISequence() {} - virtual iterator begin() abstract; - virtual iterator end() abstract; + virtual ReadValueType operator[](Index index) abstract; + virtual Index size(); + virtual Index GetBeginIndex() const abstract; + virtual Index GetEndIndex() const abstract; + virtual Index GetHeadIndex() const + { + return GetBeginIndex(); + } + virtual Index GetTailIndex() const + { + return GetEndIndex() - 1; + } }; + namespace Iterator + { + template + struct ISequenceIterator + { + virtual ~ISequenceIterator() {} + virtual void Next() abstract; + virtual ReadValueType ReadValue() const abstract; + virtual ISequenceIterator& operator++() + { + this->Next(); + return *this; + } + virtual bool operator==(const ISequenceIterator& other) const noexcept abstract; + bool operator!=(const ISequenceIterator& other) const noexcept + { + return !(*this == other); + } + ReadValueType operator*() const + { + return ReadValue(); + } + }; + + template + class DefaultSequenceIterator:public ISequenceIterator + { + public: + DefaultSequenceIterator() {} + }; + } + /** * @brief 序列容器枚举 * @tparam Sequence 序列类型