This commit is contained in:
codeboss 2025-02-07 15:06:27 +08:00
parent ddd88463a8
commit ea760da50f
2 changed files with 11 additions and 11 deletions

View File

@ -5,12 +5,12 @@
using namespace lib_words; using namespace lib_words;
std::shared_ptr<const IWordBase> WordReader::wordsFrom(const QString& path) const { std::shared_ptr<const IPrimitiveWord> WordReader::wordsFrom(const QString& path) const {
auto primary_words = extract_primary(path); auto primary_words = extract_primary(path);
if (!primary_words.size()) if (!primary_words.size())
return nullptr; return nullptr;
std::shared_ptr<const IWordBase> prev_ptr = std::make_shared<const WordImpl>(primary_words.last(), nullptr); std::shared_ptr<const IPrimitiveWord> prev_ptr = std::make_shared<const WordImpl>(primary_words.last(), nullptr);
for (auto idx = primary_words.size() - 2; idx >= 0; --idx) { for (auto idx = primary_words.size() - 2; idx >= 0; --idx) {
auto content_ptr = primary_words[idx]; auto content_ptr = primary_words[idx];
prev_ptr = std::make_shared<const WordImpl>(content_ptr, prev_ptr); prev_ptr = std::make_shared<const WordImpl>(content_ptr, prev_ptr);
@ -58,7 +58,7 @@ QList<std::shared_ptr<const IWordBase>> WordReader::parse_line(uint64_t start_po
return primary_words; return primary_words;
} }
WordImpl::WordImpl(std::shared_ptr<const IWordBase> content, std::shared_ptr<const IWordBase> next) WordImpl::WordImpl(std::shared_ptr<const IWordBase> content, std::shared_ptr<const IPrimitiveWord> next)
: content_ptr(content), next_ptr(next) { } : content_ptr(content), next_ptr(next) { }
QString WordImpl::file() const { QString WordImpl::file() const {
@ -81,7 +81,7 @@ int WordImpl::column() const {
return content_ptr->column(); return content_ptr->column();
} }
std::shared_ptr<const IWordBase> WordImpl::nextWord() const { std::shared_ptr<const IPrimitiveWord> WordImpl::nextWord() const {
return next_ptr; return next_ptr;
} }
@ -116,6 +116,6 @@ int WordContent::column() const {
return col_n; return col_n;
} }
std::shared_ptr<const IWordBase> WordContent::nextWord() const { std::shared_ptr<const IPrimitiveWord> WordContent::nextWord() const {
return nullptr; return nullptr;
} }

View File

@ -45,7 +45,7 @@ namespace lib_words {
* *
* \return * \return
*/ */
virtual std::shared_ptr<const IWordBase> nextWord() const = 0; virtual std::shared_ptr<const IPrimitiveWord> nextWord() const = 0;
}; };
/** /**
@ -67,16 +67,16 @@ namespace lib_words {
virtual QString content() const override; virtual QString content() const override;
virtual int row() const override; virtual int row() const override;
virtual int column() const override; virtual int column() const override;
virtual std::shared_ptr<const IWordBase> nextWord() const override; virtual std::shared_ptr<const IPrimitiveWord> nextWord() const override;
}; };
class LIBWORDS_EXPORT WordImpl : public IPrimitiveWord { class LIBWORDS_EXPORT WordImpl : public IPrimitiveWord {
private: private:
std::shared_ptr<const IWordBase> content_ptr; std::shared_ptr<const IWordBase> content_ptr;
std::shared_ptr<const IWordBase> next_ptr; std::shared_ptr<const IPrimitiveWord> next_ptr;
public: public:
WordImpl(std::shared_ptr<const IWordBase> content, std::shared_ptr<const IWordBase> next); WordImpl(std::shared_ptr<const IWordBase> content, std::shared_ptr<const IPrimitiveWord> next);
// 通过 IWordBase 继承 // 通过 IWordBase 继承
QString file() const override; QString file() const override;
@ -84,7 +84,7 @@ namespace lib_words {
QString content() const override; QString content() const override;
int row() const override; int row() const override;
int column() const override; int column() const override;
std::shared_ptr<const IWordBase> nextWord() const override; std::shared_ptr<const IPrimitiveWord> nextWord() const override;
}; };
@ -100,7 +100,7 @@ namespace lib_words {
/** /**
* @brief * @brief
*/ */
std::shared_ptr<const IWordBase> wordsFrom(const QString& path) const; std::shared_ptr<const IPrimitiveWord> wordsFrom(const QString& path) const;
}; };