[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [smokegen] generators/smoke: handle QFlags references as if they were normal uints.
From: Arno Rehn <arno () arnorehn ! de>
Date: 2012-05-31 18:44:15
Message-ID: 20120531184415.4D1ABA60A9 () git ! kde ! org
[Download RAW message or body]
Git commit b295439071bca5dd29d9096cb8d372ade2f3c3be by Arno Rehn.
Committed on 31/05/2012 at 20:43.
Pushed by arnorehn into branch 'master'.
handle QFlags references as if they were normal uints.
M +4 -5 generators/smoke/helpers.cpp
M +13 -6 generators/smoke/writeSmokeDataFile.cpp
http://commits.kde.org/smokegen/b295439071bca5dd29d9096cb8d372ade2f3c3be
diff --git a/generators/smoke/helpers.cpp b/generators/smoke/helpers.cpp
index b15791d..a76ed54 100644
--- 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* 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 Type* type, const QString& \
var)
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 + ')';
diff --git a/generators/smoke/writeSmokeDataFile.cpp \
b/generators/smoke/writeSmokeDataFile.cpp index 6c15fd9..2445e6d 100644
--- a/generators/smoke/writeSmokeDataFile.cpp
+++ b/generators/smoke/writeSmokeDataFile.cpp
@@ -118,7 +118,7 @@ QString SmokeDataFile::getTypeFlags(const Type *t, int *classIdx)
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(const Type *t, int \
*classIdx) 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;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic