PassManager Class
class QQmlSA::PassManager静的解析パスで要素とその子を解析することができます。さらに...
Header: | #include <PassManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS QmlCompiler) target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler) |
Status: | Technical Preview |
パブリック関数
void | analyze(const QQmlSA::Element &root) |
std::unordered_map<quint32, QQmlSA::BindingInfo> | bindingsByLocation() const |
std::vector<std::shared_ptr<QQmlSA::ElementPass>> | elementPasses() const |
bool | hasImportedModule(QAnyStringView module) const |
bool | isCategoryEnabled(QQmlSA::LoggerWarningId category) const |
std::multimap<QString, QQmlSA::PropertyPassInfo> | propertyPasses() const |
void | registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass) |
bool | registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true) |
メンバー関数ドキュメント
void PassManager::analyze(const QQmlSA::Element &root)
root とそのすべての子要素を通過させる。
std::unordered_map<quint32, QQmlSA::BindingInfo> PassManager::bindingsByLocation() const
バインディングをソースの位置で返します。
std::vector<std::shared_ptr<QQmlSA::ElementPass>> PassManager::elementPasses() const
要素パスのリストを返す。
bool PassManager::hasImportedModule(QAnyStringView module) const
module というモジュールが解析対象のQMLにインポートされていればtrue
を、そうでなければfalse
を返します。
これは、特定のモジュールに特化したパスの登録をスキップするために使用できます。
if (passManager->hasImportedModule("QtPositioning")) passManager->registerElementPass( std::make_unique<PositioningPass>(passManager) );
registerPropertyPass() およびregisterElementPass()も参照して ください。
bool PassManager::isCategoryEnabled(QQmlSA::LoggerWarningId category) const
category の警告が有効な場合はtrue
を、そうでない場合はfalse
を返します。
std::multimap<QString, QQmlSA::PropertyPassInfo> PassManager::propertyPasses() const
プロパティ・パスのリストを返します。
void PassManager::registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass)
すべての要素に対して実行される静的解析pass を登録します。
bool PassManager::registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true)
プロパティの静的解析パスを登録します。pass は、moduleName 、typeName 、propertyName にマッチするすべてのプロパティに対して実行されます。
propertyName を省略すると、typeName とmoduleName にマッチするすべてのプロパティに対してこのパスが登録されます。
allowInheritance をtrue
に設定することは、型に対するフィルタリングがtypeName から派生する型も受け付けることを意味します。
pass を として渡すと、複数の要素で同じパスを再利用できます:std::shared_ptr
auto titleValiadorPass = std::make_shared<TitleValidatorPass>(manager); manager->registerPropertyPass(titleValidatorPass, "QtQuick", "Window", "title"); manager->registerPropertyPass(titleValidatorPass, "QtQuick.Controls", "Dialog", "title");
注意: あまりに多くの項目に対して分析パスを実行すると、コストが高くなる可能性があります。このため、一般的には、moduleName 、typeName 、propertyName を使用して、パスのプロパティのセットを絞り込むとよいでしょう。
パスの追加に成功した場合はtrue
を、失敗した場合はfalse
を返します。moduleName とtypeName で指定されたElement が存在しない場合、パスの追加は失敗します。
PropertyPassも参照してください 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。