Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
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

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, QQmlTypeLoader *typeLoader, const ObjectContainer *objectContainer, const QQmlImports *imports, const QByteArray &typeClassName)
 ~QQmlPropertyCacheCreator ()
IncrementalResult buildMetaObjectsIncrementally ()
QQmlError verifyNoICCycle ()
q23::expected< QQmlPropertyCache::Ptr, QQmlErrortryDeriveCacheFrom (const CompiledObject *obj, const QQmlPropertyCache::ConstPtr &baseTypeCache, QByteArray dynamicClassName=QByteArray()) const
q23::expected< QQmlPropertyData, QQmlErrortryCreateQQmlPropertyData (const QV4::CompiledData::Property &propertyIR, int coreIndex, int notifyIndex) const

Protected Types

enum class  VMEMetaObjectIsRequired { Maybe , Always }

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) const
QString stringAt (int index) const

Protected Attributes

QQmlTypeLoader *const typeLoader
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 QV4::CompiledData::CommonType propertyTypeForMetaType (QMetaType metaType)
static bool canCreateClassNameTypeByUrl (const QUrl &url)
static QByteArray createClassNameTypeByUrl (const QUrl &url)
static QByteArray createClassNameForInlineComponent (const QUrl &url)
Static Public Attributes inherited from QQmlPropertyCacheCreatorBase
static QAtomicInt Q_AUTOTEST_EXPORT classIndexCounter

Detailed Description

template<typename ObjectContainer>
class QQmlPropertyCacheCreator< ObjectContainer >

Definition at line 184 of file qqmlpropertycachecreator_p.h.

Member Typedef Documentation

◆ CompiledObject

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

Definition at line 187 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 188 of file qqmlpropertycachecreator_p.h.

Member Enumeration Documentation

◆ VMEMetaObjectIsRequired

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

Definition at line 241 of file qqmlpropertycachecreator_p.h.

Constructor & Destructor Documentation

◆ QQmlPropertyCacheCreator()

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

Definition at line 287 of file qqmlpropertycachecreator_p.h.

References QQmlPropertyCacheCreator(), currentRoot, objectContainer, and pendingGroupPropertyBindings.

Referenced by QQmlPropertyCacheCreator().

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

◆ ~QQmlPropertyCacheCreator()

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

Definition at line 195 of file qqmlpropertycachecreator_p.h.

Member Function Documentation

◆ buildMetaObjectRecursively()

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

Definition at line 615 of file qqmlpropertycachecreator_p.h.

References objectContainer, pendingGroupPropertyBindings, QQmlBindingInstantiationContext::referencingObjectIndex, and QQmlBindingInstantiationContext::resolveInstantiatingProperty().

Here is the call graph for this function:

◆ 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 339 of file qqmlpropertycachecreator_p.h.

References currentRoot, hasCycle, and objectContainer.

◆ createMetaObject()

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

Definition at line 771 of file qqmlpropertycachecreator_p.h.

References objectContainer.

◆ metaTypeForParameter()

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

Definition at line 811 of file qqmlpropertycachecreator_p.h.

References objectContainer.

◆ propertyCacheForObject()

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

Definition at line 717 of file qqmlpropertycachecreator_p.h.

References objectContainer.

◆ stringAt()

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

Definition at line 252 of file qqmlpropertycachecreator_p.h.

References objectContainer.

◆ tryCreateQQmlPropertyData()

template<typename ObjectContainer>
q23::expected< QQmlPropertyData, QQmlError > QQmlPropertyCacheCreator< ObjectContainer >::tryCreateQQmlPropertyData ( const QV4::CompiledData::Property & propertyIR,
int coreIndex,
int notifyIndex ) const
nodiscard

Tries to create a QQmlPropertyData based on IR of a property. This involves property type resolution and property flags creation

notifyIndex MUST be in the signal index range (see QObjectPrivate::signalIndex()). This is different from QMetaMethod::methodIndex()

return error in case of failed type resolution

Definition at line 596 of file qqmlpropertycachecreator_p.h.

◆ tryDeriveCacheFrom()

template<typename ObjectContainer>
q23::expected< QQmlPropertyCache::Ptr, QQmlError > QQmlPropertyCacheCreator< ObjectContainer >::tryDeriveCacheFrom ( const CompiledObject * obj,
const QQmlPropertyCache::ConstPtr & baseTypeCache,
QByteArray dynamicClassName = QByteArray() ) const
nodiscard

Tries to creates a property cache for the CompiledObject based on the cache of a base type. Returns QQmlError in case of invalid overrides

Note
: Aliases are added separately in appendAliasToPropertyCache

Definition at line 370 of file qqmlpropertycachecreator_p.h.

References objectContainer.

◆ 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 327 of file qqmlpropertycachecreator_p.h.

References hasCycle.

Member Data Documentation

◆ allICs

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

Definition at line 280 of file qqmlpropertycachecreator_p.h.

◆ currentRoot

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

◆ hasCycle

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

Definition at line 283 of file qqmlpropertycachecreator_p.h.

Referenced by buildMetaObjectsIncrementally(), and verifyNoICCycle().

◆ imports

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

Definition at line 273 of file qqmlpropertycachecreator_p.h.

◆ m_context

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

Definition at line 279 of file qqmlpropertycachecreator_p.h.

◆ nodeIt

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

Definition at line 282 of file qqmlpropertycachecreator_p.h.

◆ nodesSorted

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

Definition at line 281 of file qqmlpropertycachecreator_p.h.

◆ objectContainer

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

◆ pendingGroupPropertyBindings

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

◆ propertyCaches

template<typename ObjectContainer>
QQmlPropertyCacheVector* QQmlPropertyCacheCreator< ObjectContainer >::propertyCaches
protected

Definition at line 274 of file qqmlpropertycachecreator_p.h.

◆ typeClassName

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

Definition at line 276 of file qqmlpropertycachecreator_p.h.

◆ typeLoader

template<typename ObjectContainer>
QQmlTypeLoader* const QQmlPropertyCacheCreator< ObjectContainer >::typeLoader
protected

Definition at line 271 of file qqmlpropertycachecreator_p.h.


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