summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2024-07-05 10:35:57 +0200
committerFriedemann Kleint <[email protected]>2024-07-06 13:10:36 +0200
commit6346c5b426935a767575ea758e99749bc6544f54 (patch)
treee222b7d89915fc2b451f8fe5a6b4b7f9c02d839d
parentd1a5e602df5978cee6bd263db77745f8047e508e (diff)
uic: Fix some clang-tidy warnings
- Repeated return types - Make member functions static - narrowing int conversions - Use auto * - Use list.isEmpty() - Use modern includes - Remove redundant access specifiers - minor fixes Pick-to: 6.8 Change-Id: I14ddf1add667536739fbb5fabb357dbaa7ef35c3 Reviewed-by: Jarek Kobus <[email protected]>
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.cpp12
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.cpp8
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp66
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.h11
-rw-r--r--src/tools/uic/customwidgetsinfo.cpp6
-rw-r--r--src/tools/uic/customwidgetsinfo.h2
-rw-r--r--src/tools/uic/databaseinfo.cpp2
-rw-r--r--src/tools/uic/driver.cpp10
-rw-r--r--src/tools/uic/python/pythonwriteimports.cpp6
-rw-r--r--src/tools/uic/shared/language.h1
-rw-r--r--src/tools/uic/uic.cpp8
-rw-r--r--src/tools/uic/uic.h3
12 files changed, 67 insertions, 68 deletions
diff --git a/src/tools/uic/cpp/cppwritedeclaration.cpp b/src/tools/uic/cpp/cppwritedeclaration.cpp
index 8261963cfaa..d3809ec87a2 100644
--- a/src/tools/uic/cpp/cppwritedeclaration.cpp
+++ b/src/tools/uic/cpp/cppwritedeclaration.cpp
@@ -55,7 +55,7 @@ void WriteDeclaration::acceptUI(DomUI *node)
exportMacro.append(u' ');
QStringList namespaceList = qualifiedClassName.split("::"_L1);
- if (namespaceList.size()) {
+ if (!namespaceList.isEmpty()) {
className = namespaceList.last();
namespaceList.removeLast();
}
@@ -66,14 +66,14 @@ void WriteDeclaration::acceptUI(DomUI *node)
// In this case the generated Ui helper classes will also end up in
// the Qt namespace (which is harmless, but not "pretty")
const bool needsMacro = m_option.qtNamespace &&
- (namespaceList.size() == 0 || namespaceList[0] == "qdesigner_internal"_L1);
+ (namespaceList.isEmpty() || namespaceList.at(0) == "qdesigner_internal"_L1);
if (needsMacro)
m_output << "QT_BEGIN_NAMESPACE\n\n";
openNameSpaces(namespaceList, m_output);
- if (namespaceList.size())
+ if (!namespaceList.isEmpty())
m_output << "\n";
m_output << "class " << exportMacro << m_option.prefix << className << "\n"
@@ -98,7 +98,7 @@ void WriteDeclaration::acceptUI(DomUI *node)
closeNameSpaces(namespaceList, m_output);
- if (namespaceList.size())
+ if (!namespaceList.isEmpty())
m_output << "\n";
if (m_option.generateNamespace && !m_option.prefix.isEmpty()) {
@@ -110,7 +110,7 @@ void WriteDeclaration::acceptUI(DomUI *node)
closeNameSpaces(namespaceList, m_output);
- if (namespaceList.size())
+ if (!namespaceList.isEmpty())
m_output << "\n";
}
@@ -124,7 +124,7 @@ void WriteDeclaration::acceptWidget(DomWidget *node)
if (node->hasAttributeClass())
className = node->attributeClass();
- m_output << m_option.indent << m_uic->customWidgetsInfo()->realClassName(className) << " *" << m_driver->findOrInsertWidget(node) << ";\n";
+ m_output << m_option.indent << CustomWidgetsInfo::realClassName(className) << " *" << m_driver->findOrInsertWidget(node) << ";\n";
TreeWalker::acceptWidget(node);
}
diff --git a/src/tools/uic/cpp/cppwriteincludes.cpp b/src/tools/uic/cpp/cppwriteincludes.cpp
index 7cf7c4e59e4..8203a033f50 100644
--- a/src/tools/uic/cpp/cppwriteincludes.cpp
+++ b/src/tools/uic/cpp/cppwriteincludes.cpp
@@ -11,7 +11,7 @@
#include <qfileinfo.h>
#include <qtextstream.h>
-#include <stdio.h>
+#include <cstdio>
QT_BEGIN_NAMESPACE
@@ -41,7 +41,7 @@ WriteIncludes::WriteIncludes(Uic *uic) : WriteIncludesBase(uic),
for (const auto &e : classInfoEntries()) {
const QString klass = QLatin1StringView(e.klass);
const QString module = QLatin1StringView(e.module);
- QLatin1StringView header = QLatin1StringView(e.header);
+ QLatin1StringView header(e.header);
if (klass.contains(namespaceDelimiter)) {
m_classToHeader.insert(klass, moduleHeader(module, header));
} else {
@@ -73,7 +73,7 @@ void WriteIncludes::acceptUI(DomUI *node)
void WriteIncludes::insertIncludeForClass(const QString &className, QString header, bool global)
{
if (debugWriteIncludes)
- fprintf(stderr, "%s %s '%s' %d\n", Q_FUNC_INFO, qPrintable(className), qPrintable(header), global);
+ std::fprintf(stderr, "%s %s '%s' %d\n", Q_FUNC_INFO, qPrintable(className), qPrintable(header), global);
do {
if (!header.isEmpty())
@@ -91,7 +91,7 @@ void WriteIncludes::insertIncludeForClass(const QString &className, QString head
// Remove namespaces
QString lowerClassName = className.toLower();
static const auto namespaceSeparator = "::"_L1;
- const int namespaceIndex = lowerClassName.lastIndexOf(namespaceSeparator);
+ const auto namespaceIndex = lowerClassName.lastIndexOf(namespaceSeparator);
if (namespaceIndex != -1)
lowerClassName.remove(0, namespaceIndex + namespaceSeparator.size());
if (m_includeBaseNames.contains(lowerClassName)) {
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index 14ec778d65c..f8ecf4d9465 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -17,8 +17,6 @@
#include <algorithm>
-#include <ctype.h>
-
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
@@ -416,7 +414,7 @@ int SizePolicyHandle::compare(const SizePolicyHandle &rhs) const
WriteInitialization::LayoutDefaultHandler::LayoutDefaultHandler()
{
- std::fill_n(m_state, int(NumProperties), 0u);
+ std::fill_n(m_state, int(NumProperties), 0U);
std::fill_n(m_defaultValues, int(NumProperties), 0);
}
@@ -499,7 +497,6 @@ void WriteInitialization::LayoutDefaultHandler::writeProperty(int p, const QStri
writeSetter(indent, objectName, setter, m_defaultValues[p], str);
}
}
- return;
}
@@ -547,7 +544,7 @@ void WriteInitialization::acceptUI(DomUI *node)
if (node->hasAttributeConnectslotsbyname())
m_connectSlotsByName = node->attributeConnectslotsbyname();
- if (auto customSlots = node->elementSlots()) {
+ if (auto *customSlots = node->elementSlots()) {
m_customSlots = customSlots->elementSlot();
m_customSignals = customSlots->elementSignal();
}
@@ -683,7 +680,8 @@ void WriteInitialization::acceptWidget(DomWidget *node)
const QString className = node->attributeClass();
const QString varName = m_driver->findOrInsertWidget(node);
- QString parentWidget, parentClass;
+ QString parentWidget;
+ QString parentClass;
if (m_widgetChain.top()) {
parentWidget = m_driver->findOrInsertWidget(m_widgetChain.top());
parentClass = m_widgetChain.top()->attributeClass();
@@ -698,7 +696,7 @@ void WriteInitialization::acceptWidget(DomWidget *node)
if (m_widgetChain.size() != 1) {
m_output << m_indent << varName << " = " << language::operatorNew
- << language::fixClassName(cwi->realClassName(className))
+ << language::fixClassName(CustomWidgetsInfo::realClassName(className))
<< '(' << parentWidget << ')' << language::eol;
}
@@ -932,7 +930,7 @@ void WriteInitialization::addButtonGroup(const DomWidget *buttonNode, const QStr
// was present before the actual Designer support (4.5)
const bool createGroupOnTheFly = group == nullptr;
if (createGroupOnTheFly) {
- DomButtonGroup *newGroup = new DomButtonGroup;
+ auto *newGroup = new DomButtonGroup;
newGroup->setAttributeName(attributeName);
group = newGroup;
fprintf(stderr, "%s: Warning: Creating button group `%s'\n",
@@ -984,8 +982,10 @@ void WriteInitialization::acceptLayout(DomLayout *node)
DomPropertyList propList = node->elementProperty();
DomPropertyList newPropList;
if (m_layoutWidget) {
- bool left, top, right, bottom;
- left = top = right = bottom = false;
+ bool left = false;
+ bool top = false;
+ bool right = false;
+ bool bottom = false;
for (const DomProperty *p : propList) {
const QString propertyName = p->attributeName();
if (propertyName == "leftMargin"_L1 && p->kind() == DomProperty::Number)
@@ -998,25 +998,25 @@ void WriteInitialization::acceptLayout(DomLayout *node)
bottom = true;
}
if (!left) {
- DomProperty *p = new DomProperty();
+ auto *p = new DomProperty();
p->setAttributeName("leftMargin"_L1);
p->setElementNumber(0);
newPropList.append(p);
}
if (!top) {
- DomProperty *p = new DomProperty();
+ auto *p = new DomProperty();
p->setAttributeName("topMargin"_L1);
p->setElementNumber(0);
newPropList.append(p);
}
if (!right) {
- DomProperty *p = new DomProperty();
+ auto *p = new DomProperty();
p->setAttributeName("rightMargin"_L1);
p->setElementNumber(0);
newPropList.append(p);
}
if (!bottom) {
- DomProperty *p = new DomProperty();
+ auto *p = new DomProperty();
p->setAttributeName("bottomMargin"_L1);
p->setElementNumber(0);
newPropList.append(p);
@@ -1054,9 +1054,8 @@ void WriteInitialization::writePropertyList(const QString &varName,
{
if (value.isEmpty())
return;
- const QStringList list = value.split(u',');
- const int count = list.size();
- for (int i = 0; i < count; i++) {
+ const auto list = QStringView{value}.split(u',');
+ for (qsizetype i = 0, count = list.size(); i < count; i++) {
if (list.at(i) != defaultValue) {
m_output << m_indent << varName << language::derefPointer << setFunction
<< '(' << i << ", " << list.at(i) << ')' << language::eol;
@@ -1250,7 +1249,7 @@ static QString configKeyForProperty(const QString &propertyName)
return shortcutConfigKey();
if (propertyName == "accessibleName"_L1 || propertyName == "accessibleDescription"_L1)
return accessibilityConfigKey();
- return QString();
+ return {};
}
void WriteInitialization::writeProperties(const QString &varName,
@@ -1290,8 +1289,10 @@ void WriteInitialization::writeProperties(const QString &varName,
<< language::charliteral(objectName, m_dindent) << ')' << language::eol;
}
- int leftMargin, topMargin, rightMargin, bottomMargin;
- leftMargin = topMargin = rightMargin = bottomMargin = -1;
+ int leftMargin = -1;
+ int topMargin = -1;
+ int rightMargin = -1;
+ int bottomMargin = -1;
bool frameShadowEncountered = false;
for (const DomProperty *p : lst) {
@@ -2006,8 +2007,8 @@ QString WriteInitialization::domColor2QString(const DomColor *c)
static inline QVersionNumber colorRoleVersionAdded(const QString &roleName)
{
if (roleName == "PlaceholderText"_L1)
- return QVersionNumber(5, 12, 0);
- return QVersionNumber();
+ return {5, 12, 0};
+ return {};
}
void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName)
@@ -2308,8 +2309,9 @@ void WriteInitialization::enableSorting(DomWidget *w, const QString &varName, co
the initializer is omitted.
See above for other parameters.
*/
-void WriteInitialization::addInitializer(Item *item,
- const QString &name, int column, const QString &value, const QString &directive, bool translatable) const
+void WriteInitialization::addInitializer(Item *item, const QString &name,
+ int column, const QString &value,
+ const QString &directive, bool translatable)
{
if (!value.isEmpty()) {
QString setter;
@@ -2360,8 +2362,8 @@ void WriteInitialization::addBrushInitializer(Item *item,
Create inititializer for a flag value in the Qt namespace.
If the named property is not in the map, the initializer is omitted.
*/
-void WriteInitialization::addQtFlagsInitializer(Item *item,
- const DomPropertyMap &properties, const QString &name, int column) const
+void WriteInitialization::addQtFlagsInitializer(Item *item, const DomPropertyMap &properties,
+ const QString &name, int column)
{
if (const DomProperty *p = properties.value(name)) {
const QString orOperator = u'|' + language::qtQualifier;
@@ -2500,10 +2502,10 @@ WriteInitialization::Items WriteInitialization::initializeTreeWidgetItems(const
{
// items
Items items;
- const int numDomItems = domItems.size();
+ const qsizetype numDomItems = domItems.size();
items.reserve(numDomItems);
- for (int i = 0; i < numDomItems; ++i) {
+ for (qsizetype i = 0; i < numDomItems; ++i) {
const DomItem *domItem = domItems.at(i);
Item *item = new Item("QTreeWidgetItem"_L1, m_indent, m_output, m_refreshOut, m_driver);
@@ -2687,7 +2689,7 @@ QString WriteInitialization::noTrCall(DomString *str, const QString &defaultStri
{
QString value = defaultString;
if (!str && defaultString.isEmpty())
- return QString();
+ return {};
if (str)
value = str->text();
QString ret;
@@ -2815,7 +2817,7 @@ static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QS
std::sort(list.begin(), list.end());
outputStream << "#if " << language::qtConfig(list.constFirst());
- for (int i = 1, size = list.size(); i < size; ++i)
+ for (qsizetype i = 1, size = list.size(); i < size; ++i)
outputStream << " || " << language::qtConfig(list.at(i));
outputStream << Qt::endl;
}
@@ -2847,14 +2849,14 @@ WriteInitialization::Item::~Item()
QString WriteInitialization::Item::writeSetupUi(const QString &parent, Item::EmptyItemPolicy emptyItemPolicy)
{
if (emptyItemPolicy == Item::DontConstruct && m_setupUiData.policy == ItemData::DontGenerate)
- return QString();
+ return {};
bool generateMultiDirective = false;
if (emptyItemPolicy == Item::ConstructItemOnly && m_children.isEmpty()) {
if (m_setupUiData.policy == ItemData::DontGenerate) {
m_setupUiStream << m_indent << language::operatorNew << m_itemClassName
<< '(' << parent << ')' << language::eol;
- return QString();
+ return {};
}
if (m_setupUiData.policy == ItemData::GenerateWithMultiDirective)
generateMultiDirective = true;
diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h
index 0973def52d8..f8c1c12a23f 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.h
+++ b/src/tools/uic/cpp/cppwriteinitialization.h
@@ -151,7 +151,7 @@ private:
void writeRetranslateUi(const QString &parentPath);
void addSetter(const QString &setter, const QString &directive = QString(), bool translatable = false); // don't call it if you already added *this as a child of another Item
void addChild(Item *child); // all setters should already been added
- private:
+
struct ItemData
{
QMultiMap<QString, QString> setters; // directive to setter
@@ -175,10 +175,10 @@ private:
};
using Items = QList<Item *>;
- void addInitializer(Item *item,
- const QString &name, int column, const QString &value, const QString &directive = QString(), bool translatable = false) const;
- void addQtFlagsInitializer(Item *item, const DomPropertyMap &properties,
- const QString &name, int column = -1) const;
+ static void addInitializer(Item *item, const QString &name, int column,
+ const QString &value, const QString &directive = QString(), bool translatable = false);
+ static void addQtFlagsInitializer(Item *item, const DomPropertyMap &properties,
+ const QString &name, int column = -1);
void addQtEnumInitializer(Item *item,
const DomPropertyMap &properties, const QString &name, int column = -1) const;
void addBrushInitializer(Item *item,
@@ -206,7 +206,6 @@ private:
Declaration findDeclaration(const QString &name);
-private:
QString writeFontProperties(const DomFont *f);
QString writeIconProperties(const DomResourceIcon *i);
void writeThemeIconCheckAssignment(const QString &themeValue, const QString &iconName,
diff --git a/src/tools/uic/customwidgetsinfo.cpp b/src/tools/uic/customwidgetsinfo.cpp
index 6ec418634c2..6d20fe838a1 100644
--- a/src/tools/uic/customwidgetsinfo.cpp
+++ b/src/tools/uic/customwidgetsinfo.cpp
@@ -163,7 +163,7 @@ bool CustomWidgetsInfo::isAmbiguousSlot(const QString &className,
return isAmbiguous(className, signalSignature, QMetaMethod::Slot);
}
-QString CustomWidgetsInfo::realClassName(const QString &className) const
+QString CustomWidgetsInfo::realClassName(const QString &className)
{
if (className == "Line"_L1)
return u"QFrame"_s;
@@ -175,7 +175,7 @@ QString CustomWidgetsInfo::customWidgetAddPageMethod(const QString &name) const
{
if (DomCustomWidget *dcw = m_customWidgets.value(name, nullptr))
return dcw->elementAddPageMethod();
- return QString();
+ return {};
}
// add page methods for simple containers taking only the widget parameter
@@ -195,7 +195,7 @@ QString CustomWidgetsInfo::simpleContainerAddPageMethod(const QString &name) con
if (extends(name, m.first))
return m.second;
}
- return QString();
+ return {};
}
QT_END_NAMESPACE
diff --git a/src/tools/uic/customwidgetsinfo.h b/src/tools/uic/customwidgetsinfo.h
index f336292f2ac..7091894a691 100644
--- a/src/tools/uic/customwidgetsinfo.h
+++ b/src/tools/uic/customwidgetsinfo.h
@@ -30,7 +30,7 @@ public:
QString customWidgetAddPageMethod(const QString &name) const;
QString simpleContainerAddPageMethod(const QString &name) const;
- QString realClassName(const QString &className) const;
+ static QString realClassName(const QString &className);
bool extends(const QString &className, QAnyStringView baseClassName) const;
bool extendsOneOf(const QString &className, const QStringList &baseClassNames) const;
diff --git a/src/tools/uic/databaseinfo.cpp b/src/tools/uic/databaseinfo.cpp
index 5334f06baf5..4a0c66aa87d 100644
--- a/src/tools/uic/databaseinfo.cpp
+++ b/src/tools/uic/databaseinfo.cpp
@@ -28,7 +28,7 @@ void DatabaseInfo::acceptWidget(DomWidget *node)
QHash<QString, DomProperty*> properties = propertyMap(node->elementProperty());
DomProperty *frameworkCode = properties.value("frameworkCode"_L1);
- if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
+ if (frameworkCode && !toBool(frameworkCode->elementBool()))
return;
DomProperty *db = properties.value("database"_L1);
diff --git a/src/tools/uic/driver.cpp b/src/tools/uic/driver.cpp
index 110764ee07b..85d63c6e9e9 100644
--- a/src/tools/uic/driver.cpp
+++ b/src/tools/uic/driver.cpp
@@ -17,9 +17,9 @@ QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
Driver::Driver()
- : m_stdout(stdout, QFile::WriteOnly | QFile::Text)
+ : m_stdout(stdout, QFile::WriteOnly | QFile::Text),
+ m_output(&m_stdout)
{
- m_output = &m_stdout;
}
Driver::~Driver() = default;
@@ -94,7 +94,7 @@ QString Driver::findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem)
Q_ASSERT( 0 );
- return QString();
+ return {};
}
QString Driver::findOrInsertActionGroup(const DomActionGroup *ui_group)
@@ -170,7 +170,7 @@ QString Driver::qtify(const QString &name)
if (qname.at(0) == u'Q' || qname.at(0) == u'K')
qname.remove(0, 1);
- for (int i = 0, size = qname.size(); i < size && qname.at(i).isUpper(); ++i)
+ for (qsizetype i = 0, size = qname.size(); i < size && qname.at(i).isUpper(); ++i)
qname[i] = qname.at(i).toLower();
return qname;
@@ -203,7 +203,7 @@ QString Driver::headerFileName(const QString &fileName)
// Transform into a valid C++ identifier
if (!baseName.isEmpty() && baseName.at(0).isDigit())
baseName.prepend(u'_');
- for (int i = 0; i < baseName.size(); ++i) {
+ for (qsizetype i = 0; i < baseName.size(); ++i) {
QChar c = baseName.at(i);
if (!isAnsiCCharacter(c)) {
// Replace character by its unicode value
diff --git a/src/tools/uic/python/pythonwriteimports.cpp b/src/tools/uic/python/pythonwriteimports.cpp
index 74eeab8387e..3c6f5710cee 100644
--- a/src/tools/uic/python/pythonwriteimports.cpp
+++ b/src/tools/uic/python/pythonwriteimports.cpp
@@ -124,9 +124,9 @@ void WriteImports::acceptUI(DomUI *node)
output << "import " << w << '\n';
}
- if (auto resources = node->elementResources()) {
- const auto includes = resources->elementInclude();
- for (auto include : includes) {
+ if (auto *resources = node->elementResources()) {
+ const auto &includes = resources->elementInclude();
+ for (auto *include : includes) {
if (include->hasAttributeLocation())
writeResourceImport(include->attributeLocation());
}
diff --git a/src/tools/uic/shared/language.h b/src/tools/uic/shared/language.h
index de39122ee85..c00bc703b32 100644
--- a/src/tools/uic/shared/language.h
+++ b/src/tools/uic/shared/language.h
@@ -6,7 +6,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
-#include <QtCore/qstring.h>
QT_FORWARD_DECLARE_CLASS(QTextStream)
diff --git a/src/tools/uic/uic.cpp b/src/tools/uic/uic.cpp
index 1b10e1d722b..39bc5f4e26f 100644
--- a/src/tools/uic/uic.cpp
+++ b/src/tools/uic/uic.cpp
@@ -108,10 +108,10 @@ static inline bool isCppCommentChar(QChar c)
return c == u'/' || c == u'*';
}
-static int leadingCppCommentCharCount(QStringView s)
+static qsizetype leadingCppCommentCharCount(QStringView s)
{
- int i = 0;
- for (const int size = s.size(); i < size && isCppCommentChar(s.at(i)); ++i) {
+ qsizetype i = 0;
+ for (const qsizetype size = s.size(); i < size && isCppCommentChar(s.at(i)); ++i) {
}
return i;
}
@@ -122,7 +122,7 @@ void Uic::writeCopyrightHeaderPython(const DomUI *ui) const
if (!comment.isEmpty()) {
const auto lines = QStringView{comment}.split(u'\n');
for (const auto &line : lines) {
- if (const int leadingCommentChars = leadingCppCommentCharCount(line)) {
+ if (const auto leadingCommentChars = leadingCppCommentCharCount(line)) {
out << language::repeat(leadingCommentChars, '#')
<< line.right(line.size() - leadingCommentChars);
} else {
diff --git a/src/tools/uic/uic.h b/src/tools/uic/uic.h
index ef5f0a90bd7..d25e6fb6115 100644
--- a/src/tools/uic/uic.h
+++ b/src/tools/uic/uic.h
@@ -68,13 +68,12 @@ private:
// copyright header
void writeCopyrightHeaderCpp(const DomUI *ui) const;
void writeCopyrightHeaderPython(const DomUI *ui) const;
- DomUI *parseUiFile(QXmlStreamReader &reader);
+ static DomUI *parseUiFile(QXmlStreamReader &reader);
// header protection
void writeHeaderProtectionStart();
void writeHeaderProtectionEnd();
-private:
Driver *drv;
QTextStream &out;
Option &opt;