ASERStudio::AStorySyntax::AStoryXRule Class
class ASERStudio::AStorySyntax::AStoryXRuleAStoryXRule是对整个AStoryX语法规则的封装,包含了对不同版本的AStoryX语法规则的解析和存储. 详情...
| 头文件: | #include <AStoryXRule> |
| 自以下版本: | ASERStudio 2.0 |
公开成员函数
(自 ASERStudio 2.0 引入) | AStoryXRule(const QString &version = "") |
(自 ASERStudio 2.0 引入) | AStoryXRule(const ASERStudio::AStorySyntax::AStoryXRule &other) |
(自 ASERStudio 2.0 引入) | AStoryXRule(ASERStudio::AStorySyntax::AStoryXRule &&other) |
(自 ASERStudio 2.0 引入) | ~AStoryXRule() |
(自 ASERStudio 2.0 引入) Visindigo::Utility::JsonConfig | getAStoryXControllerMetaData() const |
(自 ASERStudio 2.0 引入) QList<ASERStudio::AStorySyntax::AStoryXController> | getAvailableControllers() const |
(自 ASERStudio 2.0 引入) QString | getHeader(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QString | getName() const |
(自 ASERStudio 2.0 引入) QStringList | getOptionalParameterNames(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QStringList | getOptionalParameterPrefixes(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QMap<QString, ASERStudio::AStorySyntax::AStoryXValueMeta> | getOptionalParameterValues(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QString | getRequiredParameterName(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QString | getRequiredParameterSeparator(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXValueMeta | getRequiredParameterValue(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QString | getStartSign(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) QStringList | getSupportedPreprocessors() const |
(自 ASERStudio 2.0 引入) QString | getVersion() const |
(自 ASERStudio 2.0 引入) bool | isAdvanced(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) bool | isMonotonicity(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const |
(自 ASERStudio 2.0 引入) bool | isValid() const |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXControllerParseData | parseAStoryX(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1) |
(自 ASERStudio 2.0 引入) bool | parseJson(const QString &str) |
(自 ASERStudio 2.0 引入) void | setName(const QString &name) |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXRule & | operator=(ASERStudio::AStorySyntax::AStoryXRule &&other) |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXRule & | operator=(const ASERStudio::AStorySyntax::AStoryXRule &other) |
静态公开成员
(自 ASERStudio 2.1 引入) void | clearRules() |
(自 ASERStudio 2.0 引入) QStringList | getAvailableRuleNames() |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXRule * | getRule(const QString &name) |
(自 ASERStudio 2.0 引入) bool | hasRule(const QString &name) |
(自 ASERStudio 2.2 引入) ASERStudio::AStorySyntax::AStoryXControllerParseData | parseAliases(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1) |
(自 ASERStudio 2.0 引入) void | registerRule(const ASERStudio::AStorySyntax::AStoryXRule &rule) |
详细说明
AStoryXRule类提供了对AStoryX语法规则的管理和访问功能。它可以解析符合ASERStudio要求的AStoryX语法规则JSON格式, 并提供接口获取不同控制器类型的相关信息,如头部字符串、起始标志、必需参数名称等。
值得指出的是,ASER Studio作为YSS插件使用时,会在项目加载和卸载时自动将 项目内有效规则文件解析为AStoryXRule对象,并注册到AStoryXRule的静态成员中,供插件内其他模块使用。
但如果按第三方库的方式使用ASER Studio,则需要手动创建AStoryXRule对象, 并调用AStoryXRule::registerRule()注册到静态成员中,才能被插件内其他模块使用。
成员函数文档
[since ASERStudio 2.0] AStoryXRule::AStoryXRule(const QString &version = "")
构造函数。 version AStoryX语法规则的版本号,例如"1.0"、"2.0"等。 这影响对AStoryX语法规则元数据的读取,如果ASERStudio不支持对应版本的规则,将会使用默认规则。 默认规则永远是最新规则,不保证向下兼容。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] AStoryXRule::AStoryXRule(const ASERStudio::AStorySyntax::AStoryXRule &other)
other 另一个AStoryXRule实例
复制构造函数
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] AStoryXRule::AStoryXRule(ASERStudio::AStorySyntax::AStoryXRule &&other)
other 另一个AStoryXRule实例
移动构造函数
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] AStoryXRule::~AStoryXRule()
析构函数。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.1] void AStoryXRule::clearRules()
清除所有已注册的AStoryX语法规则。调用此函数后,之前通过registerRule注册的规则将不再可用。
这个function 从 ASERStudio 2.1 开始支持。
[since ASERStudio 2.0] Visindigo::Utility::JsonConfig AStoryXRule::getAStoryXControllerMetaData() const
return AStoryX控制器的元数据,以JSON格式表示。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QList<ASERStudio::AStorySyntax::AStoryXController> AStoryXRule::getAvailableControllers() const
return 全部可用的控制器列表。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.0] QStringList AStoryXRule::getAvailableRuleNames()
return 所有已注册的AStoryX语法规则的名称列表。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getHeader(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的头部字符串。与getStartSign等价。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getName() const
return AStoryX语法规则的名称。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QStringList AStoryXRule::getOptionalParameterNames(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的可选参数名称列表。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QStringList AStoryXRule::getOptionalParameterPrefixes(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的可选参数前缀列表。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QMap<QString, ASERStudio::AStorySyntax::AStoryXValueMeta> AStoryXRule::getOptionalParameterValues(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
return 指定控制器类型的可选参数值对象Map。
type 控制器类型,例如AStoryXController::ControllerType::Background、AStoryXController::ControllerType::Music等。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getRequiredParameterName(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的必需参数名称。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getRequiredParameterSeparator(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的必需参数分隔符。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXValueMeta AStoryXRule::getRequiredParameterValue(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的必需参数值对象。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXRule *AStoryXRule::getRule(const QString &name)
name 要获取的AStoryXRule对象的名称。必须与注册时设置的名称一致。
return 已注册的AStoryX语法规则。
如果找到对应名称的规则,则返回指向该规则的指针;否则返回nullptr。
Note: 注意,该指针所有权归AStoryXRule类管理,且随时可能因为调用clearRules函数而失效, 因此调用者不应删除或长期持有该指针。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getStartSign(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型的起始标志字符串。与getHeader等价。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QStringList AStoryXRule::getSupportedPreprocessors() const
return 全部支持的预处理器名称列表。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXRule::getVersion() const
return AStoryX语法规则的版本号。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.0] bool AStoryXRule::hasRule(const QString &name)
name 要检查的AStoryXRule对象的名称。必须与注册时设置的名称一致。
return 是否存在已注册的AStoryX语法规则。
如果存在对应名称的规则,则返回true;否则返回false。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXRule::isAdvanced(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型是否为高级控制器。与isMonotonicity等价。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXRule::isMonotonicity(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) const
type 控制器类型。
return 指定控制器类型是否具有单调性。与isAdvanced等价。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXRule::isValid() const
return AStoryX语法规则是否有效。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXControllerParseData AStoryXRule::parseAStoryX(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1)
str 要解析的AStoryX字符串,必须符合ASERStudio的AStoryX语法规则。 cursorPosition 可选参数,表示光标位置,用于诊断和错误提示,默认为-1表示不使用光标位置。 diagnostic 可选参数,表示是否启用诊断功能,默认为false表示不启用。 lineIndex 可选参数,表示行索引,用于诊断和错误提示,默认为-1表示不使用行索引。
解析AStoryX字符串以获取控制器解析数据。
这是不包含上下文处理的最完整的parseAStoryX解析函数,AStoryXController和AStoryXPreprocessor的解析函数都只能 各自处理自己类型的AStoryX字符串,而这个函数会根据字符串内容自动判断应该使用哪个控制器或预处理器来解析,并返回解析结果。
目前,只有#block和#aliases依赖上下文,如果你不解析这两种预处理器,使用此函数即可,否则你应该 直接使用AStoryXDocument类,向其提供完整的AStoryX文档。
此外,这个函数能处理注释行(以"//"开头的行),并将其解析为AStoryXControllerParseData对象,ControllerType为Comment。 RequiredParameter为注释的内容。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.2] ASERStudio::AStorySyntax::AStoryXControllerParseData AStoryXRule::parseAliases(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1)
str 要解析的AStoryX字符串,必须符合ASERStudio的AStoryX语法规则。 cursorPosition 可选参数,表示光标位置,用于诊断和错误提示,默认为-1表示不使用光标位置。 diagnostic 可选参数,表示是否启用诊断功能,默认为false表示不启用。 lineIndex 可选参数,表示行索引,用于诊断和错误提示,默认为-1表示不使用行索引。
这个函数假定 str 一定是别名预处理区域的一行,然后按照别名预处理器的语法规则解析它,并返回解析结果。
return 解析结果
值得指出的是,由于别名语法不受ASRule影响,因此这个函数是静态的。
这个function 从 ASERStudio 2.2 开始支持。
[since ASERStudio 2.0] bool AStoryXRule::parseJson(const QString &str)
str 要解析的JSON字符串,必须符合ASERStudio的AStoryX语法规则JSON格式。
解析JSON字符串以设置AStoryX语法规则。
return 解析是否成功。
成功则返回true,并将解析结果存储在当前对象中;否则返回false,当前对象保持不变。
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.0] void AStoryXRule::registerRule(const ASERStudio::AStorySyntax::AStoryXRule &rule)
rule 要注册的AStoryXRule对象。
注册AStoryX语法规则。注册后可以通过getRule函数获取该规则。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] void AStoryXRule::setName(const QString &name)
设置AStoryX语法规则的名称。 name AStoryX语法规则的名称。按ASE-Remake的要求,它必须 为这个规则文件的主文件名,否则将引起AStoryX的解析错误。 例如,如果规则文件名为"astoryx_v1_0.json",则名称必须设置为"astoryx_v1_0"。
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXRule &AStoryXRule::operator=(ASERStudio::AStorySyntax::AStoryXRule &&other)
other 另一个AStoryXRule实例
移动赋值运算符
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXRule &AStoryXRule::operator=(const ASERStudio::AStorySyntax::AStoryXRule &other)
other 另一个AStoryXRule实例
复制赋值运算符
这个function 从 ASERStudio 2.0 开始支持。