diff options
-rw-r--r-- | abstractmetabuilder.cpp | 13 | ||||
-rw-r--r-- | abstractmetalang.h | 6 |
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 { |