BS 0.0.1 制作迭代器与序列类接口

This commit is contained in:
2025-06-13 11:14:05 +08:00
parent 627dfca10d
commit 7c7e337e1b
2 changed files with 47 additions and 25 deletions

View File

@@ -1,7 +1,7 @@
message("Convention: --- ----- ----- ----- ----- --")
install(DIRECTORY [Runtime]
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
FILES_MATCHING PATTERN "*.*"
PATTERN "*.cpp" EXCLUDE)

View File

@@ -8,33 +8,55 @@ namespace Convention
{
namespace Generics
{
template<typename Element,typename ReadValueType = Element&>
class ISequenceIterator
template<typename Element, typename Index = int, typename ReadValueType = Element&>
struct ISequence
{
virtual ~ISequence() {}
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<typename Element, typename ReadValueType = Element&>
struct ISequenceIterator
{
public:
virtual ~ISequenceIterator() {}
virtual void Next() abstract;
virtual ReadValueType ReadValue() const abstract;
virtual decltype(auto) operator++()
virtual ISequenceIterator& operator++()
{
this->Next();
return *this;
}
ReadValueType operator++(int) noexcept(noexcept(operator++))
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<typename Element, typename SequenceIterator = ISequenceIterator<Element>>
class ISequence
template<typename Element>
class DefaultSequenceIterator:public ISequenceIterator<Element>
{
public:
using iterator = std::enable_if<std::is_base_of_v<ISequenceIterator<Element>, SequenceIterator>, SequenceIterator>;
virtual ~ISequence() {}
virtual iterator begin() abstract;
virtual iterator end() abstract;
DefaultSequenceIterator() {}
};
}
/**
* @brief 序列容器枚举