mirror of
https://gitdl.cn/https://github.com/chakralinux/desktop.git
synced 2025-02-04 05:57:15 +08:00
79 lines
3.2 KiB
Diff
79 lines
3.2 KiB
Diff
--- a/generators/smoke/helpers.cpp
|
|
+++ b/generators/smoke/helpers.cpp
|
|
@@ -472,7 +472,7 @@ QChar Util::munge(const Type *type) {
|
|
// reference to array or hash or unknown
|
|
return '?';
|
|
} else if (type->isIntegral() || type->getEnum() || Options::scalarTypes.contains(type->name()) ||
|
|
- (Options::qtMode && !type->isRef() && type->pointerDepth() == 0 &&
|
|
+ (Options::qtMode && type->pointerDepth() == 0 &&
|
|
(type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")))
|
|
{
|
|
// plain scalar
|
|
@@ -516,7 +516,7 @@ QString Util::stackItemField(const Type*
|
|
return stackItemField(&resolved);
|
|
}
|
|
|
|
- if (Options::qtMode && !type->isRef() && type->pointerDepth() == 0 &&
|
|
+ if (Options::qtMode && type->pointerDepth() == 0 &&
|
|
type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")
|
|
{
|
|
return "s_uint";
|
|
@@ -555,15 +555,14 @@ QString Util::assignmentString(const Typ
|
|
|
|
if (type->pointerDepth() > 0 || type->isFunctionPointer()) {
|
|
return "(void*)" + var;
|
|
+ } else if (Options::qtMode && type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags") {
|
|
+ return "(uint)" + var;
|
|
} else if (type->isRef()) {
|
|
return "(void*)&" + var;
|
|
} else if (type->isIntegral() && !Options::voidpTypes.contains(type->name())) {
|
|
return var;
|
|
} else if (type->getEnum()) {
|
|
return var;
|
|
- } else if (Options::qtMode && type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")
|
|
- {
|
|
- return "(uint)" + var;
|
|
} else {
|
|
QString ret = "(void*)new " + type->toString();
|
|
ret += '(' + var + ')';
|
|
|
|
--- a/generators/smoke/writeSmokeDataFile.cpp
|
|
+++ b/generators/smoke/writeSmokeDataFile.cpp
|
|
@@ -118,7 +118,7 @@ QString SmokeDataFile::getTypeFlags(cons
|
|
flags += "|Smoke::t_voidp";
|
|
} else if (t->getClass()) {
|
|
if (t->getClass()->isTemplate()) {
|
|
- if (Options::qtMode && t->getClass()->name() == "QFlags" && !t->isRef() && t->pointerDepth() == 0) {
|
|
+ if (Options::qtMode && t->getClass()->name() == "QFlags" && t->pointerDepth() == 0) {
|
|
flags += "|Smoke::t_uint";
|
|
} else {
|
|
flags += "|Smoke::t_voidp";
|
|
@@ -157,14 +157,21 @@ QString SmokeDataFile::getTypeFlags(cons
|
|
flags += "|Smoke::t_voidp";
|
|
}
|
|
|
|
- if (t->isRef())
|
|
- flags += "|Smoke::tf_ref";
|
|
- if (t->pointerDepth() > 0)
|
|
- flags += "|Smoke::tf_ptr";
|
|
- if (!t->isRef() && t->pointerDepth() == 0)
|
|
+ // special case QFlags references
|
|
+ if (Options::qtMode && t->pointerDepth() == 0 && t->getClass() && t->getClass()->isTemplate() && t->getClass()->name() == "QFlags") {
|
|
flags += "|Smoke::tf_stack";
|
|
+ } else {
|
|
+ if (t->isRef())
|
|
+ flags += "|Smoke::tf_ref";
|
|
+ if (t->pointerDepth() > 0)
|
|
+ flags += "|Smoke::tf_ptr";
|
|
+ if (!t->isRef() && t->pointerDepth() == 0)
|
|
+ flags += "|Smoke::tf_stack";
|
|
+ }
|
|
+
|
|
if (t->isConst())
|
|
flags += "|Smoke::tf_const";
|
|
+
|
|
flags.replace("0|", "");
|
|
|
|
return flags;
|
|
|