This commit is contained in:
parent
ddd88463a8
commit
ea760da50f
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue