QtNovelUI/DesParser/StoryChainDocumentParser.h

194 lines
4.8 KiB
C
Raw Normal View History

2022-11-06 00:37:50 +00:00
#pragma once
/**
* StoryChain文件定义.
*/
#include <QString>
#include <QList>
#include "ParseFrame.h"
#include "XSyntaxBase.h"
#include "comndef.h"
namespace Parse
{
class NodeStoryPoint;
/**
* .
*/
2022-11-06 11:40:11 +00:00
class NodeStoryChain : public Result::NamedNode
2022-11-06 00:37:50 +00:00
{
public:
/**
* .
*
* \param src_path
*/
2022-11-06 11:40:11 +00:00
explicit NodeStoryChain(Result::DocCore *doc, const QString &name);
2022-11-06 00:37:50 +00:00
virtual ~NodeStoryChain() = default;
/**
* .
*
* \return
*/
virtual QString srcPath() const;
// 通过 NamedNode 继承
inline virtual int depth() const override {
return 0;
}
virtual QString name() const override;
2022-11-06 11:40:11 +00:00
virtual Result::DocCore * document() const override;
2022-11-06 00:37:50 +00:00
virtual int typeValue() const override;
virtual DesNode * parent() const override;
virtual void appendChild(DesNode * ins) override;
virtual QList<DesNode*> children() const override;
virtual bool check(QList<QString>& reasons) const override;
virtual QString toString() const override;
private:
2022-11-06 11:40:11 +00:00
Result::DocCore *const doc_store;
2022-11-06 00:37:50 +00:00
QString name_store;
QList<DesNode*> children_nodes;
};
/**
* .
*/
class NodeStoryChainParser : public Syntax::XSyntaxBase
{
public:
2022-11-06 11:40:11 +00:00
NodeStoryChainParser(Result::ProjectCore *core);
2022-11-06 00:37:50 +00:00
virtual ~NodeStoryChainParser() = default;
2022-11-06 11:40:11 +00:00
Result::ProjectCore* project() const;
2022-11-06 00:37:50 +00:00
private:
2022-11-06 11:40:11 +00:00
Result::ProjectCore *pjt_ref;
2022-11-06 00:37:50 +00:00
};
/**
* .
*/
2022-11-06 11:40:11 +00:00
class NodeStoryPoint : public Result::NamedNode
2022-11-06 00:37:50 +00:00
{
public:
explicit NodeStoryPoint(NodeStoryChain *chain, const QString &name);
virtual ~NodeStoryPoint() = default;
/**
*
*
* \return
*/
virtual NodeStoryChain* storyChain() const;
// 通过 NamedNode 继承
inline virtual int depth() const override {
return chain_store->depth() + 1;
}
2022-11-06 11:40:11 +00:00
virtual Result::DocCore * document() const override;
2022-11-06 00:37:50 +00:00
virtual int typeValue() const override;
virtual DesNode * parent() const override;
virtual void appendChild(DesNode * ins) override;
virtual QList<DesNode*> children() const override;
virtual bool check(QList<QString>& reasons) const override;
virtual QString toString() const override;
virtual QString name() const override;
private:
NodeStoryChain *const chain_store;
QString name_store;
QList<DesNode*> children_nodes;
};
/**
* .
*/
class NodeStoryPointParser : public Syntax::XSyntaxBase
{
public:
explicit NodeStoryPointParser(NodeStoryChainParser *chain);
virtual ~NodeStoryPointParser() = default;
NodeStoryChainParser* storyChainParser() const;
2022-11-06 11:40:11 +00:00
virtual Result::DocCore* docRef() const override;
2022-11-06 00:37:50 +00:00
private:
NodeStoryChainParser *const parent_parser;
};
/**
* .
*/
2022-11-06 11:40:11 +00:00
class NodeStoryDesGroup : public Result::DesNode
2022-11-06 00:37:50 +00:00
{
public:
NodeStoryDesGroup(DesNode *parent_refer);
virtual ~NodeStoryDesGroup() = default;
// 通过 DesNode 继承
inline virtual int depth() const override {
return parent_refer->depth() + 1;
}
2022-11-06 11:40:11 +00:00
virtual Result::DocCore * document() const override;
2022-11-06 00:37:50 +00:00
virtual int typeValue() const override;
virtual DesNode * parent() const override;
virtual void appendChild(DesNode * ins) override;
virtual QList<DesNode*> children() const override;
virtual bool check(QList<QString>& reasons) const override;
virtual QString toString() const override;
private:
DesNode *const parent_refer;
QList<DesNode*> children_nodes;
};
class NodeStoryChainDesGroupParser : public Syntax::XSyntaxBase
{
public:
explicit NodeStoryChainDesGroupParser(XSyntaxBase *pparser);
virtual ~NodeStoryChainDesGroupParser() = default;
private:
XSyntaxBase *const parent_parser;
};
/**
* .
*/
2022-11-06 11:40:11 +00:00
class NodeStoryDesBlock : public Result::DesNode
2022-11-06 00:37:50 +00:00
{
public:
2022-11-06 10:15:55 +00:00
explicit NodeStoryDesBlock(DesNode *parent_node, const QString &text);
2022-11-06 00:37:50 +00:00
virtual ~NodeStoryDesBlock() = default;
// 通过 DesNode 继承
inline virtual int depth() const override {
return parent_refer->depth() + 1;
}
2022-11-06 11:40:11 +00:00
virtual Result::DocCore * document() const override;
2022-11-06 00:37:50 +00:00
virtual int typeValue() const override;
virtual DesNode * parent() const override;
virtual void appendChild(DesNode * ins) override;
virtual QList<DesNode*> children() const override;
virtual bool check(QList<QString>& reasons) const override;
virtual QString toString() const override;
private:
DesNode *const parent_refer;
QString text_block;
};
2022-11-06 11:40:11 +00:00
class StoryChainDocumentParser : public Syntax::ParseFrame
2022-11-06 00:37:50 +00:00
{
public:
2022-11-06 11:40:11 +00:00
StoryChainDocumentParser(Result::ProjectCore *pjt);
2022-11-06 00:37:50 +00:00
virtual ~StoryChainDocumentParser() = default;
};
}