Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
QQmlPropertyCacheCreator< ObjectContainer > Class Template Reference

#include <qqmlpropertycachecreator_p.h>

+ Inheritance diagram for QQmlPropertyCacheCreator< ObjectContainer >:
+ Collaboration diagram for QQmlPropertyCacheCreator< ObjectContainer >:

Public Types

enum class  VMEMetaObjectIsRequired { Maybe , Always }
 
using CompiledObject = typename ObjectContainer::CompiledObject
 
using InlineComponent = typename std::remove_reference< decltype(*(std::declval< CompiledObject >().inlineComponentsBegin()))>::type
 

Public Member Functions

 QQmlPropertyCacheCreator (QQmlPropertyCacheVector *propertyCaches, QQmlPendingGroupPropertyBindings *pendingGroupPropertyBindings, QQmlEnginePrivate *enginePrivate, const ObjectContainer *objectContainer, const QQmlImports *imports, const QByteArray &typeClassName)
 
 ~QQmlPropertyCacheCreator ()
 
IncrementalResult buildMetaObjectsIncrementally ()
 
QQmlError verifyNoICCycle ()
 

Protected Member Functions

QQmlError buildMetaObjectRecursively (int objectIndex, const QQmlBindingInstantiationContext &context, VMEMetaObjectIsRequired isVMERequired)
 
QQmlPropertyCache::ConstPtr propertyCacheForObject (const CompiledObject *obj, const QQmlBindingInstantiationContext &context, QQmlError *error) const
 
QQmlError createMetaObject (int objectIndex, const CompiledObject *obj, const QQmlPropertyCache::ConstPtr &baseTypeCache)
 
QMetaType metaTypeForParameter (const QV4::CompiledData::ParameterType &param, QString *customTypeName=nullptr)
 
QString stringAt (int index) const
 

Protected Attributes

QQmlEnginePrivate *const enginePrivate
 
const ObjectContainer *const objectContainer
 
const QQmlImports *const imports
 
QQmlPropertyCacheVectorpropertyCaches
 
QQmlPendingGroupPropertyBindingspendingGroupPropertyBindings
 
QByteArray typeClassName
 
unsigned int currentRoot
 
QQmlBindingInstantiationContext m_context
 
std::vector< InlineComponentallICs
 
std::vector< icutils::NodenodesSorted
 
std::vector< icutils::Node >::reverse_iterator nodeIt = nodesSorted.rbegin()
 
bool hasCycle = false
 

Additional Inherited Members

- Static Public Member Functions inherited from QQmlPropertyCacheCreatorBase
static QMetaType metaTypeForPropertyType (QV4::CompiledData::CommonType type)
 
static QMetaType listTypeForPropertyType (QV4::CompiledData::CommonType type)
 
static bool canCreateClassNameTypeByUrl (const QUrl &url)
 
static QByteArray createClassNameTypeByUrl (const QUrl &url)
 
static QByteArray createClassNameForInlineComponent (const QUrl &baseUrl, const QString &name)
 
- Static Public Attributes inherited from QQmlPropertyCacheCreatorBase
static QAtomicInt Q_AUTOTEST_EXPORT classIndexCounter
 

Detailed Description

template<typename ObjectContainer>
class QQmlPropertyCacheCreator< ObjectContainer >

Definition at line 88 of file qqmlpropertycachecreator_p.h.

Member Typedef Documentation

◆ CompiledObject

template<typename ObjectContainer >
using QQmlPropertyCacheCreator< ObjectContainer >::CompiledObject = typename ObjectContainer::CompiledObject

Definition at line 91 of file qqmlpropertycachecreator_p.h.

◆ InlineComponent

template<typename ObjectContainer >
using QQmlPropertyCacheCreator< ObjectContainer >::InlineComponent = typename std::remove_reference<decltype (*(std::declval<CompiledObject>().inlineComponentsBegin()))>::type

Definition at line 92 of file qqmlpropertycachecreator_p.h.

Member Enumeration Documentation

◆ VMEMetaObjectIsRequired

template<typename ObjectContainer >
enum class QQmlPropertyCacheCreator::VMEMetaObjectIsRequired
strong
Enumerator
Maybe 
Always 

Definition at line 119 of file qqmlpropertycachecreator_p.h.

Constructor & Destructor Documentation

◆ QQmlPropertyCacheCreator()

template<typename ObjectContainer >
QQmlPropertyCacheCreator< ObjectContainer >::QQmlPropertyCacheCreator ( QQmlPropertyCacheVector propertyCaches,
QQmlPendingGroupPropertyBindings pendingGroupPropertyBindings,
QQmlEnginePrivate enginePrivate,
const ObjectContainer *  objectContainer,
const QQmlImports imports,
const QByteArray typeClassName 
)
inline

◆ ~QQmlPropertyCacheCreator()

template<typename ObjectContainer >
QQmlPropertyCacheCreator< ObjectContainer >::~QQmlPropertyCacheCreator ( )
inline

Definition at line 99 of file qqmlpropertycachecreator_p.h.

References QQmlPropertyCacheCreator< ObjectContainer >::propertyCaches, and QQmlPropertyCacheVector::seal().

+ Here is the call graph for this function:

Member Function Documentation

◆ buildMetaObjectRecursively()

template<typename ObjectContainer >
QQmlError QQmlPropertyCacheCreator< ObjectContainer >::buildMetaObjectRecursively ( int  objectIndex,
const QQmlBindingInstantiationContext context,
VMEMetaObjectIsRequired  isVMERequired 
)
inlineprotected

◆ buildMetaObjectsIncrementally()

template<typename ObjectContainer >
QQmlPropertyCacheCreatorBase::IncrementalResult QQmlPropertyCacheCreator< ObjectContainer >::buildMetaObjectsIncrementally
inline

Creates the property cache for the CompiledObjects of objectContainer, one (inline) root component at a time.

Note
Later compiler passes might modify those property caches. Therefore, the actual metaobjects are not created yet.

Definition at line 199 of file qqmlpropertycachecreator_p.h.

References QQmlPropertyCacheVector::at(), QQmlRefPointer< T >::isNull(), QQmlError::isValid(), Q_ASSERT, QV4::ResolvedTypeReference::setTypePropertyCache(), and QV4::ResolvedTypeReference::typePropertyCache().

Referenced by QQmlTypeCompiler::compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createMetaObject()

template<typename ObjectContainer >
QQmlError QQmlPropertyCacheCreator< ObjectContainer >::createMetaObject ( int  objectIndex,
const CompiledObject obj,
const QQmlPropertyCache::ConstPtr baseTypeCache 
)
inlineprotected

◆ metaTypeForParameter()

template<typename ObjectContainer >
QMetaType QQmlPropertyCacheCreator< ObjectContainer >::metaTypeForParameter ( const QV4::CompiledData::ParameterType param,
QString customTypeName = nullptr 
)
inlineprotected

Definition at line 688 of file qqmlpropertycachecreator_p.h.

References QQmlType::AnyRegistrationType, QQmlType::elementName(), QQmlTypeLoader::getType(), QQmlType::isComposite(), QQmlType::isInlineComponentType(), QMetaType::isValid(), Q_ASSERT, QQmlType::qListTypeId(), QQmlImports::resolveType(), QQmlType::sourceUrl(), QQmlType::typeId(), QQmlEnginePrivate::typeLoader, and typeName.

+ Here is the call graph for this function:

◆ propertyCacheForObject()

template<typename ObjectContainer >
QQmlPropertyCache::ConstPtr QQmlPropertyCacheCreator< ObjectContainer >::propertyCacheForObject ( const CompiledObject obj,
const QQmlBindingInstantiationContext context,
QQmlError error 
) const
inlineprotected

Definition at line 329 of file qqmlpropertycachecreator_p.h.

References QList< T >::append(), QQmlType::attachedPropertiesType(), context, error, ext, i, QQmlType::isValid(), QQmlMetaType::propertyCache(), Q_ASSERT, qQmlCompileError(), and QQmlImports::resolveType().

+ Here is the call graph for this function:

◆ stringAt()

template<typename ObjectContainer >
QString QQmlPropertyCacheCreator< ObjectContainer >::stringAt ( int  index) const
inlineprotected

◆ verifyNoICCycle()

template<typename ObjectContainer >
QQmlError QQmlPropertyCacheCreator< ObjectContainer >::verifyNoICCycle
inline

Returns a valid error if the inline components of the objectContainer form a cycle. Otherwise an invalid error is returned

Definition at line 187 of file qqmlpropertycachecreator_p.h.

References QQmlError::setDescription().

Referenced by QQmlTypeCompiler::compile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ allICs

template<typename ObjectContainer >
std::vector<InlineComponent> QQmlPropertyCacheCreator< ObjectContainer >::allICs
protected

◆ currentRoot

template<typename ObjectContainer >
unsigned int QQmlPropertyCacheCreator< ObjectContainer >::currentRoot
protected

Definition at line 138 of file qqmlpropertycachecreator_p.h.

◆ enginePrivate

template<typename ObjectContainer >
QQmlEnginePrivate* const QQmlPropertyCacheCreator< ObjectContainer >::enginePrivate
protected

Definition at line 132 of file qqmlpropertycachecreator_p.h.

◆ hasCycle

template<typename ObjectContainer >
bool QQmlPropertyCacheCreator< ObjectContainer >::hasCycle = false
protected

◆ imports

template<typename ObjectContainer >
const QQmlImports* const QQmlPropertyCacheCreator< ObjectContainer >::imports
protected

Definition at line 134 of file qqmlpropertycachecreator_p.h.

◆ m_context

template<typename ObjectContainer >
QQmlBindingInstantiationContext QQmlPropertyCacheCreator< ObjectContainer >::m_context
protected

Definition at line 140 of file qqmlpropertycachecreator_p.h.

◆ nodeIt

template<typename ObjectContainer >
std::vector<icutils::Node>::reverse_iterator QQmlPropertyCacheCreator< ObjectContainer >::nodeIt = nodesSorted.rbegin()
protected

◆ nodesSorted

template<typename ObjectContainer >
std::vector<icutils::Node> QQmlPropertyCacheCreator< ObjectContainer >::nodesSorted
protected

◆ objectContainer

template<typename ObjectContainer >
const ObjectContainer* const QQmlPropertyCacheCreator< ObjectContainer >::objectContainer
protected

◆ pendingGroupPropertyBindings

template<typename ObjectContainer >
QQmlPendingGroupPropertyBindings* QQmlPropertyCacheCreator< ObjectContainer >::pendingGroupPropertyBindings
protected

Definition at line 136 of file qqmlpropertycachecreator_p.h.

◆ propertyCaches

◆ typeClassName

template<typename ObjectContainer >
QByteArray QQmlPropertyCacheCreator< ObjectContainer >::typeClassName
protected

Definition at line 137 of file qqmlpropertycachecreator_p.h.


The documentation for this class was generated from the following file: