aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abstractmetabuilder.cpp13
-rw-r--r--abstractmetalang.h6
2 files changed, 12 insertions, 7 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp
index 48fc13c23..8602bccbd 100644
--- a/abstractmetabuilder.cpp
+++ b/abstractmetabuilder.cpp
@@ -1832,13 +1832,12 @@ void AbstractMetaBuilder::decideUsagePattern(AbstractMetaType *metaType)
} else if (type->isThread()) {
Q_ASSERT(metaType->indirections() == 1);
metaType->setTypeUsagePattern(AbstractMetaType::ThreadPattern);
-
- } else if (type->isValue()
- && !metaType->indirections()
- && (metaType->isConstant() == metaType->isReference()
- || !metaType->isReference())) {
- metaType->setTypeUsagePattern(AbstractMetaType::ValuePattern);
-
+ } else if (type->isValue()) {
+ if (metaType->indirections() == 1) {
+ metaType->setTypeUsagePattern(AbstractMetaType::ValuePointerPattern);
+ } else {
+ metaType->setTypeUsagePattern(AbstractMetaType::ValuePattern);
+ }
} else {
metaType->setTypeUsagePattern(AbstractMetaType::NativePointerPattern);
ReportHandler::debugFull(QString("native pointer pattern for '%1'")
diff --git a/abstractmetalang.h b/abstractmetalang.h
index e313b7b01..c28da46d6 100644
--- a/abstractmetalang.h
+++ b/abstractmetalang.h
@@ -318,6 +318,7 @@ public:
CharPattern,
ObjectPattern,
QObjectPattern,
+ ValuePointerPattern,
NativePointerPattern,
ContainerPattern,
VariantPattern,
@@ -428,6 +429,11 @@ public:
return m_pattern == ValuePattern;
}
+ bool isValuePointer() const
+ {
+ return m_pattern == ValuePointerPattern;
+ }
+
// returns true for more complex types...
bool isNativePointer() const
{