渐进改进

This commit is contained in:
codeboss 2025-02-02 22:30:47 +08:00
parent ff8eb5a8d5
commit bb3d6ee766
12 changed files with 65 additions and 65 deletions

View File

@ -88,7 +88,7 @@ void StoryChangePresent::type_change(int idx) {
_curr_refslice->loadCurrentSlice(nullptr); _curr_refslice->loadCurrentSlice(nullptr);
_change_model->clear(); _change_model->clear();
QList<shared_ptr<FragmentDefine>> fragms; QList<shared_ptr<PointDefines>> fragms;
if (!idx) { if (!idx) {
fragms = base_compare.changeCompare(Type::UpstreamAlter, g_old); fragms = base_compare.changeCompare(Type::UpstreamAlter, g_old);
} }
@ -138,7 +138,7 @@ void StoryChangePresent::fragment_selected(const QModelIndex& item) {
auto story_inst = this->base_compare.graphBind()[story_item->text()]; auto story_inst = this->base_compare.graphBind()[story_item->text()];
auto fragm_slice = story_inst->getFragment(fragm_item->text()); auto fragm_slice = story_inst->getFragment(fragm_item->text());
auto fragm_def = dynamic_pointer_cast<FragmentDefine>(fragm_slice); auto fragm_def = dynamic_pointer_cast<PointDefines>(fragm_slice);
_defn_fragment->loadCurrentSlice(fragm_def); _defn_fragment->loadCurrentSlice(fragm_def);
connect(_story_appoint, QOverload<const QString&>::of(&QComboBox::currentIndexChanged), connect(_story_appoint, QOverload<const QString&>::of(&QComboBox::currentIndexChanged),
@ -151,7 +151,7 @@ void StoryChangePresent::fragment_selected(const QModelIndex& item) {
} }
void StoryChangePresent::storyline_selected(const QString& line) { void StoryChangePresent::storyline_selected(const QString& line) {
auto def_fragm = dynamic_pointer_cast<FragmentDefine>(_defn_fragment->currentSlice()); auto def_fragm = dynamic_pointer_cast<PointDefines>(_defn_fragment->currentSlice());
auto flag = _story_appoint->currentData(); auto flag = _story_appoint->currentData();
for (auto slice : def_fragm->referSlices()) { for (auto slice : def_fragm->referSlices()) {
@ -215,7 +215,7 @@ QVariant StorylineModel::data(const QModelIndex& index, int role) const {
} }
case SliceType::FragmentDefines: case SliceType::FragmentDefines:
{ {
auto node = dynamic_pointer_cast<FragmentDefine>(curr_node); auto node = dynamic_pointer_cast<PointDefines>(curr_node);
return node->getTextNode()->getLines(); return node->getTextNode()->getLines();
} }
case SliceType::PointRefers: case SliceType::PointRefers:
@ -257,7 +257,7 @@ bool StorylineModel::setData(const QModelIndex& index, const QVariant& value, in
}break; }break;
case SliceType::FragmentDefines: case SliceType::FragmentDefines:
{ {
auto defnode = dynamic_pointer_cast<FragmentDefine>(curr_node); auto defnode = dynamic_pointer_cast<PointDefines>(curr_node);
defnode->getTextNode()->setLines(value.toString()); defnode->getTextNode()->setLines(value.toString());
}break; }break;
case SliceType::PointRefers: case SliceType::PointRefers:

View File

@ -13,9 +13,9 @@ const QHash<QString, std::shared_ptr<xast_parse::StoryDefine>>& compare::Compare
return _graph_base; return _graph_base;
} }
QList<shared_ptr<FragmentDefine>> QList<shared_ptr<PointDefines>>
Compare::changeCompare(Type _type, const QHash<QString, shared_ptr<StoryDefine>>& g_old) const { Compare::changeCompare(Type _type, const QHash<QString, shared_ptr<StoryDefine>>& g_old) const {
QList<shared_ptr<FragmentDefine>> values; QList<shared_ptr<PointDefines>> values;
for (auto& type : _graph_base.keys()) { for (auto& type : _graph_base.keys()) {
if (g_old.contains(type)) { if (g_old.contains(type)) {
@ -26,15 +26,15 @@ Compare::changeCompare(Type _type, const QHash<QString, shared_ptr<StoryDefine>>
QList<QString> fragmets_define; QList<QString> fragmets_define;
while (story_new_temp) { while (story_new_temp) {
if (story_new_temp->type() == SliceType::FragmentDefines) { if (story_new_temp->type() == SliceType::FragmentDefines) {
auto fragm = std::dynamic_pointer_cast<FragmentDefine>(story_new_temp); auto fragm = std::dynamic_pointer_cast<PointDefines>(story_new_temp);
fragmets_define << fragm->name(); fragmets_define << fragm->name();
} }
story_new_temp = story_new_temp->nextSlice(); story_new_temp = story_new_temp->nextSlice();
} }
for (auto fragm : fragmets_define) { for (auto fragm : fragmets_define) {
auto fragm_this = std::dynamic_pointer_cast<FragmentDefine>(story_new->getFragment(fragm)); auto fragm_this = std::dynamic_pointer_cast<PointDefines>(story_new->getFragment(fragm));
auto fragm_peer = std::dynamic_pointer_cast<FragmentDefine>(story_old->getFragment(fragm)); auto fragm_peer = std::dynamic_pointer_cast<PointDefines>(story_old->getFragment(fragm));
if (fragm_peer) { if (fragm_peer) {
if (_type == Type::FragmentAlter) { if (_type == Type::FragmentAlter) {
if (fragment_check(fragm_this, fragm_peer)) if (fragment_check(fragm_this, fragm_peer))
@ -52,7 +52,7 @@ Compare::changeCompare(Type _type, const QHash<QString, shared_ptr<StoryDefine>>
return values; return values;
} }
bool Compare::fragment_check(std::shared_ptr<FragmentDefine> a, std::shared_ptr<FragmentDefine> b) const bool Compare::fragment_check(std::shared_ptr<PointDefines> a, std::shared_ptr<PointDefines> b) const
{ {
auto texts_a = a->getTextNode(); auto texts_a = a->getTextNode();
auto texts_b = b->getTextNode(); auto texts_b = b->getTextNode();
@ -138,8 +138,8 @@ bool Compare::upstream_check(std::shared_ptr<IElementSlice> a, std::shared_ptr<I
}break; }break;
default: default:
{ {
desc_a = std::dynamic_pointer_cast<FragmentDefine>(prev_slice_a)->getTextNode()->getLines(); desc_a = std::dynamic_pointer_cast<PointDefines>(prev_slice_a)->getTextNode()->getLines();
desc_b = std::dynamic_pointer_cast<FragmentDefine>(prev_slice_b)->getTextNode()->getLines(); desc_b = std::dynamic_pointer_cast<PointDefines>(prev_slice_b)->getTextNode()->getLines();
} }
break; break;
} }
@ -149,8 +149,8 @@ bool Compare::upstream_check(std::shared_ptr<IElementSlice> a, std::shared_ptr<I
} }
if (a->type() == SliceType::FragmentDefines) { if (a->type() == SliceType::FragmentDefines) {
auto slices_a = std::dynamic_pointer_cast<FragmentDefine>(a)->referSlices(); auto slices_a = std::dynamic_pointer_cast<PointDefines>(a)->referSlices();
auto slices_b = std::dynamic_pointer_cast<FragmentDefine>(b)->referSlices(); auto slices_b = std::dynamic_pointer_cast<PointDefines>(b)->referSlices();
if(slices_a.size() != slices_b.size()) if(slices_a.size() != slices_b.size())
return true; return true;

View File

@ -17,7 +17,7 @@ namespace compare {
const QHash<QString, std::shared_ptr<xast_parse::StoryDefine>> &graphBind() const; const QHash<QString, std::shared_ptr<xast_parse::StoryDefine>> &graphBind() const;
QList<std::shared_ptr<xast_parse::FragmentDefine>> changeCompare(Type type, QList<std::shared_ptr<xast_parse::PointDefines>> changeCompare(Type type,
const QHash<QString, std::shared_ptr<xast_parse::StoryDefine>>& g_old) const; const QHash<QString, std::shared_ptr<xast_parse::StoryDefine>>& g_old) const;
private: private:
@ -27,7 +27,7 @@ namespace compare {
* @param b * @param b
* @return true- * @return true-
*/ */
bool fragment_check(std::shared_ptr<xast_parse::FragmentDefine> a, std::shared_ptr<xast_parse::FragmentDefine> b) const; bool fragment_check(std::shared_ptr<xast_parse::PointDefines> a, std::shared_ptr<xast_parse::PointDefines> b) const;
/* /*
* @brief * @brief
* @param a * @param a

View File

@ -50,7 +50,7 @@ void StoryPresent::loadXAST(const QString& ast_path)
switch (frag_temp->type()) { switch (frag_temp->type()) {
case SliceType::FragmentDefines: case SliceType::FragmentDefines:
{ {
auto arrow_tail = std::dynamic_pointer_cast<FragmentDefine>(frag_temp)->name() + u8"@" + story_line->name(); auto arrow_tail = std::dynamic_pointer_cast<PointDefines>(frag_temp)->name() + u8"@" + story_line->name();
arrows << graph_data::Arrow(arrow_start, arrow_tail); arrows << graph_data::Arrow(arrow_start, arrow_tail);
arrow_start = arrow_tail; arrow_start = arrow_tail;
}break; }break;
@ -85,7 +85,7 @@ void StoryPresent::nodeClickAccept(const QPointF& pos, const QString& node_name)
switch (temp_node->type()) { switch (temp_node->type()) {
case SliceType::FragmentDefines: case SliceType::FragmentDefines:
{ {
auto fragm = std::dynamic_pointer_cast<FragmentDefine>(temp_node); auto fragm = std::dynamic_pointer_cast<PointDefines>(temp_node);
node_names << QString(u8"%1@%2").arg(fragm->name(), node_name); node_names << QString(u8"%1@%2").arg(fragm->name(), node_name);
}break; }break;
case SliceType::PointRefers: case SliceType::PointRefers:
@ -113,7 +113,7 @@ void StoryPresent::nodeClickAccept(const QPointF& pos, const QString& node_name)
auto splits = node_name.split(u8"@", QString::SkipEmptyParts); auto splits = node_name.split(u8"@", QString::SkipEmptyParts);
auto story_line = this->_story_graph[splits.last()]; auto story_line = this->_story_graph[splits.last()];
auto fragm_slice = story_line->getFragment(splits.first()); auto fragm_slice = story_line->getFragment(splits.first());
auto fragm_defn = std::dynamic_pointer_cast<FragmentDefine>(fragm_slice); auto fragm_defn = std::dynamic_pointer_cast<PointDefines>(fragm_slice);
auto refers = fragm_defn->referSlices(); auto refers = fragm_defn->referSlices();

View File

@ -82,7 +82,7 @@ shared_ptr<IElementSlice> StoryDefine::getFragment(const QString& name) {
auto temp_node = this->firstChild(); auto temp_node = this->firstChild();
while (temp_node) { while (temp_node) {
if (temp_node->type() == SliceType::FragmentDefines) { if (temp_node->type() == SliceType::FragmentDefines) {
if (dynamic_pointer_cast<FragmentDefine>(temp_node)->name() == name) if (dynamic_pointer_cast<PointDefines>(temp_node)->name() == name)
return temp_node; return temp_node;
} }
temp_node = temp_node->nextSlice(); temp_node = temp_node->nextSlice();
@ -98,24 +98,24 @@ uint StoryDefine::index() const {
return this->sort_store; return this->sort_store;
} }
FragmentDefine::FragmentDefine(const QString& name, shared_ptr<StoryDefine> pnode) PointDefines::PointDefines(const QString& name, shared_ptr<StoryDefine> pnode)
: __DesElement(SliceType::FragmentDefines, static_pointer_cast<IElementSlice>(pnode)), name_store(name) { } : __DesElement(SliceType::FragmentDefines, static_pointer_cast<IElementSlice>(pnode)), name_store(name) { }
QString FragmentDefine::name() const { QString PointDefines::name() const {
return name_store; return name_store;
} }
QList<shared_ptr<IElementSlice>> FragmentDefine::referSlices() const { QList<shared_ptr<IElementSlice>> PointDefines::referSlices() const {
return this->refs_list; return this->refs_list;
} }
void FragmentDefine::appendRefer(shared_ptr<IElementSlice> slice) { void PointDefines::appendRefer(shared_ptr<IElementSlice> slice) {
if (this->refs_list.contains(slice)) if (this->refs_list.contains(slice))
return; return;
this->refs_list << slice; this->refs_list << slice;
} }
QList<QString> FragmentDefine::nameSet() const { QList<QString> PointDefines::nameSet() const {
return parentSlice().lock()->nameSet() << name(); return parentSlice().lock()->nameSet() << name();
} }
@ -151,11 +151,11 @@ QString FragmentRefer::fragmentRefer() const {
return this->fragment_refers; return this->fragment_refers;
} }
weak_ptr<FragmentDefine> FragmentRefer::referTarget() const { weak_ptr<PointDefines> FragmentRefer::referTarget() const {
return this->refer_targets; return this->refer_targets;
} }
void FragmentRefer::setReferTowards(shared_ptr<FragmentDefine> target) { void FragmentRefer::setReferTowards(shared_ptr<PointDefines> target) {
this->refer_targets = target; this->refer_targets = target;
} }
@ -341,9 +341,9 @@ shared_ptr<TextParagraph> XAST_Parser::text_paragraph_build(shared_ptr<__Collect
return inst; return inst;
} }
shared_ptr<FragmentDefine> XAST_Parser::fragment_define_build(shared_ptr<StoryDefine> pnode, const QDomElement& e) { shared_ptr<PointDefines> XAST_Parser::fragment_define_build(shared_ptr<StoryDefine> pnode, const QDomElement& e) {
auto fname = e.attribute(u8"name"); auto fname = e.attribute(u8"name");
auto fragm = make_shared<FragmentDefine>(fname, pnode); auto fragm = make_shared<PointDefines>(fname, pnode);
auto temp_elm = e.firstChildElement(); auto temp_elm = e.firstChildElement();
while (!temp_elm.isNull()) { while (!temp_elm.isNull()) {
@ -380,7 +380,7 @@ void XAST_Parser::fragments_plait(QHash<QString, shared_ptr<StoryDefine>> story_
auto refer_inst = static_pointer_cast<FragmentRefer>(slice); auto refer_inst = static_pointer_cast<FragmentRefer>(slice);
auto story_target = story_map[refer_inst->storyRefer()]; auto story_target = story_map[refer_inst->storyRefer()];
auto fragm_target = story_target->getFragment(refer_inst->fragmentRefer()); auto fragm_target = story_target->getFragment(refer_inst->fragmentRefer());
auto fragm_cast = static_pointer_cast<FragmentDefine>(fragm_target); auto fragm_cast = static_pointer_cast<PointDefines>(fragm_target);
fragm_cast->appendRefer(refer_inst); fragm_cast->appendRefer(refer_inst);
refer_inst->setReferTowards(fragm_cast); refer_inst->setReferTowards(fragm_cast);
@ -507,7 +507,7 @@ void xast_parse::XAST_Parser::write_story(std::shared_ptr<StoryDefine> inst, con
this->write_text(1, std::dynamic_pointer_cast<TextParagraph>(temp), o); this->write_text(1, std::dynamic_pointer_cast<TextParagraph>(temp), o);
break; break;
case SliceType::FragmentDefines: case SliceType::FragmentDefines:
this->write_fragmdef(1, std::dynamic_pointer_cast<FragmentDefine>(temp), o); this->write_fragmdef(1, std::dynamic_pointer_cast<PointDefines>(temp), o);
break; break;
case SliceType::PointRefers: case SliceType::PointRefers:
this->write_fragmref(1, std::dynamic_pointer_cast<FragmentRefer>(temp), o); this->write_fragmref(1, std::dynamic_pointer_cast<FragmentRefer>(temp), o);
@ -529,7 +529,7 @@ void xast_parse::XAST_Parser::write_text(int dep, std::shared_ptr<TextParagraph>
out << QString(dep * 2, ' ') << text << "\n"; out << QString(dep * 2, ' ') << text << "\n";
} }
void xast_parse::XAST_Parser::write_fragmdef(int dep, std::shared_ptr<FragmentDefine> inst, QTextStream& out) void xast_parse::XAST_Parser::write_fragmdef(int dep, std::shared_ptr<PointDefines> inst, QTextStream& out)
{ {
out << QString(dep * 2, ' ') << QString(u8"{Çé½Ú %1\n").arg(inst->name()); out << QString(dep * 2, ' ') << QString(u8"{Çé½Ú %1\n").arg(inst->name());
this->write_text(dep + 1, inst->getTextNode(), out); this->write_text(dep + 1, inst->getTextNode(), out);

View File

@ -133,14 +133,14 @@ namespace xast_parse {
/// <summary> /// <summary>
/// Çé½Ú¶¨Òå½Úµã /// Çé½Ú¶¨Òå½Úµã
/// </summary> /// </summary>
class FragmentDefine : public __DesElement { class PointDefines : public __DesElement {
private: private:
QString name_store; QString name_store;
QList<std::shared_ptr<IElementSlice>> refs_list; QList<std::shared_ptr<IElementSlice>> refs_list;
public: public:
FragmentDefine(const QString& name, std::shared_ptr<StoryDefine> pnode); PointDefines(const QString& name, std::shared_ptr<StoryDefine> pnode);
virtual ~FragmentDefine() = default; virtual ~PointDefines() = default;
virtual QString name() const; virtual QString name() const;
@ -156,7 +156,7 @@ namespace xast_parse {
class FragmentRefer : public __DesElement { class FragmentRefer : public __DesElement {
private: private:
QString story_refers, fragment_refers; QString story_refers, fragment_refers;
std::weak_ptr<FragmentDefine> refer_targets; std::weak_ptr<PointDefines> refer_targets;
public: public:
FragmentRefer(const QString& story, const QString& fragm, std::shared_ptr<IElementSlice> pnode); FragmentRefer(const QString& story, const QString& fragm, std::shared_ptr<IElementSlice> pnode);
@ -165,8 +165,8 @@ namespace xast_parse {
virtual QString storyRefer() const; virtual QString storyRefer() const;
virtual QString fragmentRefer() const; virtual QString fragmentRefer() const;
virtual std::weak_ptr<FragmentDefine> referTarget() const; virtual std::weak_ptr<PointDefines> referTarget() const;
virtual void setReferTowards(std::shared_ptr<FragmentDefine> target); virtual void setReferTowards(std::shared_ptr<PointDefines> target);
// IElementSlice // IElementSlice
virtual QList<QString> nameSet() const override; virtual QList<QString> nameSet() const override;
@ -237,7 +237,7 @@ namespace xast_parse {
uint text_sections_count(const QList<QDomElement>& elms); uint text_sections_count(const QList<QDomElement>& elms);
std::shared_ptr<TextParagraph> text_paragraph_build(std::shared_ptr<__CollectionElement> pnode, QList<QDomElement>& elms, uint count); std::shared_ptr<TextParagraph> text_paragraph_build(std::shared_ptr<__CollectionElement> pnode, QList<QDomElement>& elms, uint count);
std::shared_ptr<FragmentDefine> fragment_define_build(std::shared_ptr<StoryDefine> pnode, const QDomElement& e); std::shared_ptr<PointDefines> fragment_define_build(std::shared_ptr<StoryDefine> pnode, const QDomElement& e);
std::shared_ptr<FragmentRefer> fragment_refer_build(std::shared_ptr<__CollectionElement> pnode, const QDomElement& e); std::shared_ptr<FragmentRefer> fragment_refer_build(std::shared_ptr<__CollectionElement> pnode, const QDomElement& e);
void fragments_plait(QHash<QString, std::shared_ptr<StoryDefine>> story_map, std::shared_ptr<ICollection> reflist); void fragments_plait(QHash<QString, std::shared_ptr<StoryDefine>> story_map, std::shared_ptr<ICollection> reflist);
@ -247,7 +247,7 @@ namespace xast_parse {
void write_rank(std::shared_ptr<RankDecs> inst, const QDir &odir); void write_rank(std::shared_ptr<RankDecs> inst, const QDir &odir);
void write_story(std::shared_ptr<StoryDefine> inst, const QDir &odir); void write_story(std::shared_ptr<StoryDefine> inst, const QDir &odir);
void write_text(int dep, std::shared_ptr<TextParagraph> inst, QTextStream &out); void write_text(int dep, std::shared_ptr<TextParagraph> inst, QTextStream &out);
void write_fragmdef(int dep, std::shared_ptr<FragmentDefine> inst, QTextStream& out); void write_fragmdef(int dep, std::shared_ptr<PointDefines> inst, QTextStream& out);
void write_fragmref(int dep, std::shared_ptr<FragmentRefer> inst, QTextStream& out); void write_fragmref(int dep, std::shared_ptr<FragmentRefer> inst, QTextStream& out);
void write_volume(std::shared_ptr<VolumeDefine> inst, const QDir &odir); void write_volume(std::shared_ptr<VolumeDefine> inst, const QDir &odir);

View File

@ -236,7 +236,7 @@ QList<std::shared_ptr<FragmentRef>> Fragment::additionals() const {
void Fragment::buildSliceHTML(QDomElement& parent) const { void Fragment::buildSliceHTML(QDomElement& parent) const {
auto syntax_access = this->accessPeers(); auto syntax_access = this->accessPeers();
auto fragment_inst = std::dynamic_pointer_cast<const FragmentDefine>(syntax_access->element()); auto fragment_inst = std::dynamic_pointer_cast<const PointDefines>(syntax_access->element());
auto doc = parent.ownerDocument(); auto doc = parent.ownerDocument();
auto dom_fragment = doc.createElement("div"); auto dom_fragment = doc.createElement("div");
@ -264,7 +264,7 @@ void Fragment::buildSliceHTML(QDomElement& parent) const {
void Fragment::buildPageHTML(QDomElement& parent) const { void Fragment::buildPageHTML(QDomElement& parent) const {
auto syntax_access = this->accessPeers(); auto syntax_access = this->accessPeers();
auto fragment_inst = std::dynamic_pointer_cast<const FragmentDefine>(syntax_access->element()); auto fragment_inst = std::dynamic_pointer_cast<const PointDefines>(syntax_access->element());
auto doc = parent.ownerDocument(); auto doc = parent.ownerDocument();
auto dom_fragment = doc.createElement("div"); auto dom_fragment = doc.createElement("div");
@ -437,7 +437,7 @@ QString printer::tools_printer::storylines_paint(const QList<std::shared_ptr<Sto
for (auto &frag : story->elements()) { for (auto &frag : story->elements()) {
auto fragment_peers = frag->accessPeers()->element(); auto fragment_peers = frag->accessPeers()->element();
if (fragment_peers->typeMark() == (int)example_novel::NovelNode::PointDefines) { if (fragment_peers->typeMark() == (int)example_novel::NovelNode::PointDefines) {
auto fragment_elem = std::dynamic_pointer_cast<const example_novel::FragmentDefine>(fragment_peers); auto fragment_elem = std::dynamic_pointer_cast<const example_novel::PointDefines>(fragment_peers);
auto node_name = fragment_elem->signature(); auto node_name = fragment_elem->signature();
node_records[node_name] = frag; node_records[node_name] = frag;
@ -480,7 +480,7 @@ QString printer::tools_printer::volumes_paint(const QList<std::shared_ptr<StoryV
for (auto &frag : story->elements()) { for (auto &frag : story->elements()) {
auto fragment_peers = frag->accessPeers()->element(); auto fragment_peers = frag->accessPeers()->element();
if (fragment_peers->typeMark() == (int)example_novel::NovelNode::PointDefines) { if (fragment_peers->typeMark() == (int)example_novel::NovelNode::PointDefines) {
auto fragment_elem = std::dynamic_pointer_cast<const example_novel::FragmentDefine>(fragment_peers); auto fragment_elem = std::dynamic_pointer_cast<const example_novel::PointDefines>(fragment_peers);
node_records[fragment_elem->signature()] = frag; node_records[fragment_elem->signature()] = frag;
nodes_description += get_node_name(frag) + QString(u8"[label=\"%1\",shape=\"ellipse\"]\n").arg(fragment_elem->name()); nodes_description += get_node_name(frag) + QString(u8"[label=\"%1\",shape=\"ellipse\"]\n").arg(fragment_elem->name());
} }
@ -761,7 +761,7 @@ bool printer::AstGenerate::visit(std::shared_ptr<const ast_gen::ElementAccess> s
} }
auto current_story = element_stack.last(); auto current_story = element_stack.last();
auto fragment_node = std::dynamic_pointer_cast<const example_novel::FragmentDefine>(syntax_element->element()); auto fragment_node = std::dynamic_pointer_cast<const example_novel::PointDefines>(syntax_element->element());
auto dom_fragment = doc.createElement(u8"fragment"); auto dom_fragment = doc.createElement(u8"fragment");
current_story.appendChild(dom_fragment); current_story.appendChild(dom_fragment);
element_stack.append(dom_fragment); element_stack.append(dom_fragment);

View File

@ -126,7 +126,7 @@ void FragmentGraphCheck::validCheck(std::shared_ptr<const ElementAccess> root) c
for (auto frag_primitive : fragment_items) { for (auto frag_primitive : fragment_items) {
switch (frag_primitive->element()->typeMark()) { switch (frag_primitive->element()->typeMark()) {
case (int)NovelNode::PointDefines: { case (int)NovelNode::PointDefines: {
auto target_node = std::dynamic_pointer_cast<const FragmentDefine>(frag_primitive->element()); auto target_node = std::dynamic_pointer_cast<const PointDefines>(frag_primitive->element());
auto finst = std::make_shared<FragmentGraphHelper>(target_node); auto finst = std::make_shared<FragmentGraphHelper>(target_node);
self->setElement(finst); self->setElement(finst);
@ -158,7 +158,7 @@ void FragmentGraphCheck::validCheck(std::shared_ptr<const ElementAccess> root) c
auto get_name = [](std::shared_ptr<const ElementAccess> node)->QString { auto get_name = [](std::shared_ptr<const ElementAccess> node)->QString {
switch (node->element()->typeMark()) { switch (node->element()->typeMark()) {
case (int)NovelNode::PointDefines: { case (int)NovelNode::PointDefines: {
auto def_node = std::dynamic_pointer_cast<const FragmentDefine>(node->element()); auto def_node = std::dynamic_pointer_cast<const PointDefines>(node->element());
return def_node->signature(); return def_node->signature();
}break; }break;
case (int)NovelNode::PointRefers: { case (int)NovelNode::PointRefers: {
@ -215,9 +215,9 @@ QString FragmentGraphCheck::name() const {
return u8"Çé½ÚÍøÂçÓÐЧÐÔ¼ì²éÆ÷"; return u8"Çé½ÚÍøÂçÓÐЧÐÔ¼ì²éÆ÷";
} }
FragmentGraphHelper::FragmentGraphHelper(std::shared_ptr<const FragmentDefine> node) : node_peer(node) {} FragmentGraphHelper::FragmentGraphHelper(std::shared_ptr<const PointDefines> node) : node_peer(node) {}
std::shared_ptr<const FragmentDefine> FragmentGraphHelper::nodePeer() const std::shared_ptr<const PointDefines> FragmentGraphHelper::nodePeer() const
{ {
return this->node_peer; return this->node_peer;
} }

View File

@ -41,14 +41,14 @@ namespace example_novel {
class FragmentGraphHelper : public std::enable_shared_from_this<FragmentGraphHelper> { class FragmentGraphHelper : public std::enable_shared_from_this<FragmentGraphHelper> {
private: private:
std::shared_ptr<const example_novel::FragmentDefine> node_peer; std::shared_ptr<const example_novel::PointDefines> node_peer;
QList<std::shared_ptr<FragmentGraphHelper>> next_nodes; QList<std::shared_ptr<FragmentGraphHelper>> next_nodes;
uint indegree = 0; uint indegree = 0;
public: public:
FragmentGraphHelper(std::shared_ptr<const example_novel::FragmentDefine> node); FragmentGraphHelper(std::shared_ptr<const example_novel::PointDefines> node);
std::shared_ptr<const example_novel::FragmentDefine> nodePeer() const; std::shared_ptr<const example_novel::PointDefines> nodePeer() const;
void appendNext(std::shared_ptr<FragmentGraphHelper> node); void appendNext(std::shared_ptr<FragmentGraphHelper> node);
QList<std::shared_ptr<FragmentGraphHelper>> nextList() const; QList<std::shared_ptr<FragmentGraphHelper>> nextList() const;

View File

@ -57,24 +57,24 @@ QString PointRefers::signature() const {
} }
FragmentDefine::FragmentDefine(std::shared_ptr<const ExprRule> rule_bind) PointDefines::PointDefines(std::shared_ptr<const ExprRule> rule_bind)
: AbstractImpl(rule_bind) {} : AbstractImpl(rule_bind) {}
QString FragmentDefine::name() const { return name_store; } QString PointDefines::name() const { return name_store; }
void example_novel::FragmentDefine::setName(const QString& nm) void example_novel::PointDefines::setName(const QString& nm)
{ {
this->name_store = nm; this->name_store = nm;
} }
int FragmentDefine::typeMark() const { return (int)NovelNode::PointDefines; } int PointDefines::typeMark() const { return (int)NovelNode::PointDefines; }
bool FragmentDefine::isAnonymous() const bool PointDefines::isAnonymous() const
{ {
return false; return false;
} }
QString FragmentDefine::signature() const { return parent()->signature() + u8"&" + name(); } QString PointDefines::signature() const { return parent()->signature() + u8"&" + name(); }
StoryDefine::StoryDefine(std::shared_ptr<const ExprRule> rule_bind) StoryDefine::StoryDefine(std::shared_ptr<const ExprRule> rule_bind)

View File

@ -67,9 +67,9 @@ namespace example_novel {
QString story_refs, fragment_ref; QString story_refs, fragment_ref;
}; };
class LIBSYNTAX_EXPORT FragmentDefine : public AbstractImpl { class LIBSYNTAX_EXPORT PointDefines : public AbstractImpl {
public: public:
FragmentDefine(std::shared_ptr<const lib_syntax::ExprRule> rule_bind); PointDefines(std::shared_ptr<const lib_syntax::ExprRule> rule_bind);
QString name() const; QString name() const;
void setName(const QString& nm); void setName(const QString& nm);

View File

@ -47,14 +47,14 @@ auto decl_expr = ElementRule<TextSection>(u8"decl_section", (int)NovelExprs::DES
})) }))
); );
void frags_nmset(std::shared_ptr<FragmentDefine> inst, std::shared_ptr<const lib_token::IToken> token) { void frags_nmset(std::shared_ptr<PointDefines> inst, std::shared_ptr<const lib_token::IToken> token) {
inst->setName(token->content()); inst->setName(token->content());
} }
auto fragment_decl = ElementRule<FragmentDefine>(u8"fragment_define", (int)NovelExprs::FRAG_DEFINES).reloadRule( auto fragment_decl = ElementRule<PointDefines>(u8"fragment_define", (int)NovelExprs::FRAG_DEFINES).reloadRule(
std::make_shared<const Seqs>(Rules{ std::make_shared<const Seqs>(Rules{
MR(FragmentDefine, leftb), MR(FragmentDefine, frag_key), MER(FragmentDefine, frags_nmset, name_text) } << MR(PointDefines, leftb), MR(PointDefines, frag_key), MER(PointDefines, frags_nmset, name_text) } <<
OptR(decl_expr) << OptR(decl_expr) <<
MR(FragmentDefine, rightb) MR(PointDefines, rightb)
)); ));
void frags_snm_set(std::shared_ptr<PointRefers> inst, std::shared_ptr<const lib_token::IToken> token) { void frags_snm_set(std::shared_ptr<PointRefers> inst, std::shared_ptr<const lib_token::IToken> token) {