6#include <QtCore/qtextstream.h>
25 derefPointer = u"->"_s;
28 nullPtr = u"nullptr"_s;
29 operatorNew = u"new "_s;
30 qtQualifier = u"Qt::"_s;
34 emptyString = u"QString()"_s;
37 case Language::Python:
38 derefPointer = u"."_s;
43 qtQualifier = u"Qt."_s;
47 emptyString = u"\"\""_s;
68QTextStream &operator<<(QTextStream &str,
const qtConfig &c)
70 str <<
"QT_CONFIG(" << c.parameter() <<
')';
76 str <<
"#if " <<
qtConfig(c.parameter()) <<
'\n';
82 str <<
"#endif // " <<
qtConfig(c.parameter()) <<
'\n';
95 for (
int i = 0; i < N; ++i) {
96 if (value == array[i].value)
97 return array[i].valueString;
99 auto defaultValue = array[defaultIndex].valueString;
100 qWarning(
"uic: Warning: Invalid enumeration value %d, defaulting to %s",
101 value, defaultValue.data());
105QString fixClassName(QString className)
107 if (language() == Language::Python)
108 className.replace(cppQualifier,
"_"_L1);
116 {0,
"NoToolBarArea"_L1},
117 {0x1,
"LeftToolBarArea"_L1},
118 {0x2,
"RightToolBarArea"_L1},
119 {0x4,
"TopToolBarArea"_L1},
120 {0x8,
"BottomToolBarArea"_L1},
121 {0xf,
"AllToolBarAreas"_L1}
123 return lookupEnum(toolBarAreas, v);
133 {0x5,
"Preferred"_L1},
134 {0x3,
"MinimumExpanding"_L1},
135 {0x7,
"Expanding"_L1},
138 return lookupEnum(sizePolicies, v, 3);
145 {0,
"NoDockWidgetArea"_L1},
146 {0x1,
"LeftDockWidgetArea"_L1},
147 {0x2,
"RightDockWidgetArea"_L1},
148 {0x4,
"TopDockWidgetArea"_L1},
149 {0x8,
"BottomDockWidgetArea"_L1},
150 {0xf,
"AllDockWidgetAreas"_L1}
152 return lookupEnum(dockWidgetAreas, v);
159 {0,
"WindowText"_L1},
166 {7,
"BrightText"_L1},
167 {8,
"ButtonText"_L1},
171 {12,
"Highlight"_L1},
172 {13,
"HighlightedText"_L1},
174 {15,
"LinkVisited"_L1},
175 {16,
"AlternateBase"_L1},
177 {18,
"ToolTipBase"_L1},
178 {19,
"ToolTipText"_L1},
179 {20,
"PlaceholderText"_L1},
181 return lookupEnum(colorRoles, v);
271 }
else if (
code !=
'\r') {
286 return c.isSurrogate();
296 str <<
"QString::fromUtf8(";
318 for (
int i = 0; i < r.m_count; ++i)
324 const QString ¶meterName,
325 const QString &indent,
326 const char *returnType) :
327 m_name(name), m_parameterType(parameterType), m_parameterName(parameterName),
328 m_indent(indent), m_return(returnType)
336 str << (f.m_return ? f.m_return :
"void") <<
' ' << f.m_name <<
'('
337 << f.m_parameterType;
338 if (f.m_parameterType.cend()->isLetter())
340 str << f.m_parameterName <<
')' <<
'\n' << f.m_indent <<
"{\n";
343 str <<
"def " << f.m_name <<
"(self, " << f.m_parameterName <<
"):\n";
357 str <<
"} // " << f.m_name <<
"\n\n";
360 str <<
"# " << f.m_name <<
"\n\n";
394 return arg.startsWith(u'Q') && arg !=
"QPoint"_L1 && arg !=
"QSize"_L1;
399 QString result =
"qOverload<"_L1;
400 const auto args = QStringView{parameters}.split(u',');
401 for (qsizetype i = 0, size = args.size(); i < size; ++i) {
402 const auto &arg = args.at(i);
405 const bool constRef = isConstRef(arg);
407 result +=
"const "_L1;
506 return v ? cppTrue : cppFalse;
508 return v ? QStringLiteral(
"True") : QStringLiteral(
"False");
515QString enumValue(
const QString &value)
519 QString fixed = value;
520 fixed.replace(cppQualifier, dot());
endFunctionDefinition(const char *name)
static uint characterCode(QChar c)
static void formatStringBasedConnection(QTextStream &str, const SignalSlot &sender, const SignalSlot &receiver)
static bool isSurrogate(QChar c)
static int formatEscapedNumber(QTextStream &str, uint value, int base, int width, char prefix=0)
static bool isConstRef(const QStringView &arg)
static int formatSpecialCharacter(QTextStream &str, ushort value)
QLatin1StringView dockWidgetArea(int v)
static void formatStringSequence(QTextStream &str, Iterator it, Iterator end, const QString &indent, int escapeIntegerBase, int escapeWidth, char escapePrefix=0)
QLatin1StringView paletteColorRole(int v)
void setLanguage(Language)
static QString formatOverload(const QStringView ¶meters)
QTextStream & operator<<(QTextStream &str, const startFunctionDefinition1 &f)
QTextStream & operator<<(QTextStream &str, const endFunctionDefinition &f)
static void formatMemberFnPtr(QTextStream &str, const SignalSlot &s, OverloadUse useQOverload)
static void formatMemberFnPtrConnection(QTextStream &str, const SignalSlot &sender, const SignalSlot &receiver)
static uint characterCode(char c)
QTextStream & operator<<(QTextStream &str, const repeat &r)
static Language _language
static uint characterCode(uint c)
QLatin1StringView toolbarArea(int v)
QLatin1StringView sizePolicy(int v)
QLatin1StringView lookupEnum(const EnumLookup(&array)[N], int value, int defaultIndex=0)
QString boolValue(bool v)
QLatin1StringView valueString