6#include <QtQml/qjsvalue.h>
7#include <QtQml/qqmlengine.h>
8#include <QtQml/qqmlcontext.h>
9#include <QtQml/qqmlcomponent.h>
11#include <private/qqmlcustomparser_p.h>
12#include <private/qqmldata_p.h>
13#include <private/qqmlmetatypedata_p.h>
14#include <private/qqmlpropertycache_p.h>
15#include <private/qqmltypedata_p.h>
59 default:
qFatal(
"QQmlTypePrivate Internal Error.");
63QQmlTypePrivate::~QQmlTypePrivate()
65 delete enums.fetchAndStoreAcquire(
nullptr);
66 delete proxyMetaObjects.fetchAndStoreAcquire(
nullptr);
147 if (td.
isNull() || !td->isComplete())
162 if (td.
isNull() || !td->isComplete())
170 return mo->property(
index).revision();
181 if (proxyMetaObjects.testAndSetOrdered(
nullptr, proxies, concurrentModification))
185 return concurrentModification;
196 auto setupExtendedMetaObject = [&](
const QMetaObject *extMetaObject,
221 for (
int ii = 0; ii < metaObjects.
size(); ++ii) {
222 metaObjects[ii].propertyOffset =
223 metaObjects.
at(ii).metaObject->propertyOffset();
224 metaObjects[ii].methodOffset =
225 metaObjects.
at(ii).metaObject->methodOffset();
228 bool containsRevisionedAttributes =
false;
238 for (
int ii = 0; !containsRevisionedAttributes && ii <
mo->propertyCount(); ++ii) {
240 containsRevisionedAttributes =
true;
243 for (
int ii = 0; !containsRevisionedAttributes && ii <
mo->methodCount(); ++ii) {
244 if (
mo->method(ii).revision() != 0)
245 containsRevisionedAttributes =
true;
249 proxies->
data = std::move(metaObjects);
278 const Enums *concurrentModification;
279 if (enums.testAndSetOrdered(
nullptr, newEnums, concurrentModification))
283 return concurrentModification;
290 if (
const auto *related =
metaObject->d.relatedMetaObjects) {
291 while (
const QMetaObject *relatedMetaObject = *related) {
302 for (
int ii = 0; ii <
metaObject->enumeratorCount(); ++ii) {
304 const bool isScoped =
e.isScoped();
313 if (
e.enclosingMetaObject() != localMetaObject) {
315 localMetaObject =
e.enclosingMetaObject();
318 for (
int jj = 0; jj <
e.keyCount(); ++jj) {
320 const int value =
e.value(jj);
325 if (existingEntry != enums->
enums.
end() && existingEntry.value() !=
value) {
326 qWarning(
"Previously registered enum will be overwritten due to name clash: %s.%s",
metaObject->className(),
key.toUtf8().constData());
350 const auto *related =
metaObject->d.relatedMetaObjects;
353 createListOfPossibleConflictingItems(*related++, enumInfoList,
path);
357 for (
int ii = 0; ii <
metaObject->enumeratorCount(); ++ii) {
360 for (
int jj = 0; jj <
e.keyCount(); ++jj) {
366 enumInfo.enumKey =
key;
367 enumInfo.scoped =
e.isScoped();
368 enumInfo.path =
path;
370 enumInfoList.
append(enumInfo);
383 qWarning() <<
"No meta object information available. Skipping conflict analysis.";
391 for (
const auto &
i :
std::as_const(enumInfoList)) {
392 if (
i.enumKey == conflictingKey)
393 qWarning().noquote().nospace() <<
" " <<
i.metaObjectName <<
"." <<
i.enumName <<
"." <<
i.enumKey <<
" from scope "
394 <<
i.metaEnumScope <<
" injected by " <<
i.path.join(
QLatin1String(
"->"));
404 currentCache && currentCache->metaObject() != cppMetaObject;
405 currentCache = currentCache->parent().data()) {
407 int count = currentCache->qmlEnumCount();
408 for (
int ii = 0; ii <
count; ++ii) {
412 for (
int jj = 0; jj < enumData->
values.size(); ++jj) {
465 return create(&unused, 0);
500 void *ddataMemory =
nullptr;
506 if (!
p->declarativeData)
688 return base->extraData.cppTypeData->attachedPropertiesFunc;
695 return base->extraData.cppTypeData->attachedPropertiesType;
736 return d ? d->
index : -1;
860 const int index = *rv;
882 const int index = *rv;
qsizetype size() const noexcept
Returns the number of bytes in this byte array.
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
qsizetype size() const noexcept
bool isEmpty() const noexcept
const T & constLast() const noexcept
const_reference at(qsizetype i) const noexcept
const T & constFirst() const noexcept
void append(parameter_type t)
static QObjectPrivate * get(QObject *o)
The QQmlCustomParser class allows you to add new arbitrary types to QML.
void setName(const QString &uri, const QString &element)
const ProxyMetaObjects * init() const
QQmlPropertyCache::ConstPtr compositePropertyCache(QQmlEnginePrivate *engine) const
union QQmlTypePrivate::extraData extraData
const QQmlTypePrivate * attachedPropertiesBase(QQmlEnginePrivate *engine) const
const Enums * initEnums(QQmlEnginePrivate *engine) const
void insertEnumsFromPropertyCache(Enums *enums, const QQmlPropertyCache::ConstPtr &cache) const
QQmlTypePrivate(QQmlType::RegistrationType type)
QQmlType::RegistrationType regType
const QMetaObject * baseMetaObject
void insertEnums(Enums *enums, const QMetaObject *metaObject) const
QQmlType resolveCompositeBaseType(QQmlEnginePrivate *engine) const
SingletonInstanceInfo * singletonInstanceInfo() const
int propertyValueSourceCast() const
bool isCompositeSingleton() const
bool availableInVersion(QTypeRevision version) const
@ SequentialContainerType
int propertyValueInterceptorCast() const
bool canPopulateValueType() const
const char * interfaceIId() const
QTypeRevision version() const
bool isQObjectSingleton() const
QQmlAttachedPropertiesFunc attachedPropertiesFunction(QQmlEnginePrivate *engine) const
QString noCreationReason() const
bool isSequentialContainer() const
const QMetaObject * attachedPropertiesType(QQmlEnginePrivate *engine) const
QMetaSequence listMetaSequence() const
QString qmlTypeName() const
CreateValueTypeFunc createValueTypeFunction() const
QMetaType qListTypeId() const
CreateFunc createFunction() const
QHashedString module() const
int scopedEnumIndex(QQmlEnginePrivate *engine, const QV4::String *, bool *ok) const
QObject * createWithQQmlData() const
void createProxy(QObject *instance) const
QByteArray typeName() const
static int refCount(const QQmlTypePrivate *priv)
bool canConstructValueType() const
const QMetaObject * baseMetaObject() const
QVariant(* CreateValueTypeFunc)(const QJSValue &)
const QQmlTypePrivate * priv() const
ExtensionFunc extensionFunction() const
bool isQJSValueSingleton() const
const QMetaObject * metaObject() const
static void refHandle(const QQmlTypePrivate *priv)
int enumValue(QQmlEnginePrivate *engine, const QHashedStringRef &, bool *ok) const
static void derefHandle(const QQmlTypePrivate *priv)
QQmlCustomParser * customParser() const
QQmlType & operator=(const QQmlType &other)
QObject *(* ExtensionFunc)(QObject *)
bool isExtendedType() const
const QMetaObject * extensionMetaObject() const
int finalizerCast() const
QTypeRevision metaObjectRevision() const
bool isInlineComponentType() const
QString elementName() const
bool containsRevisionedAttributes() const
int parserStatusCast() const
void(* CreateFunc)(void *, void *)
int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QV4::String *, bool *ok) const
bool contains(const T &value) const
iterator insert(const T &value)
MutableIterator find(const K &)
void insert(const K &, const T &)
T * value(const K &) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QByteArray toUtf8() const &
constexpr bool hasMinorVersion() const
Returns true if the minor version is known, otherwise false.
constexpr bool hasMajorVersion() const
Returns true if the major version is known, otherwise false.
constexpr quint8 minorVersion() const
Returns the minor version encoded in the revision.
constexpr quint8 majorVersion() const
Returns the major version encoded in the revision.
~QUrl()
Destructor; called immediately before the object is deleted.
QQmlPropertyCache::ConstPtr rootPropertyCache() const
QCache< int, Employee > cache
[0]
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLenum GLsizei count
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLsizei GLenum GLsizei GLsizei GLuint memory
GLsizei const GLchar *const * path
QQmlPrivate::QQmlAttachedPropertiesFunc< QObject > QQmlAttachedPropertiesFunc
static bool isPropertyRevisioned(const QMetaObject *mo, int index)
QLatin1StringView QLatin1String
obj metaObject() -> className()
\inmodule QtCore \reentrant
QVector< QQmlEnumValue > values
QList< QStringHash< int > * > scopedEnums
QStringHash< int > scopedEnumIndex
const QMetaObject * attachedPropertiesType
bool registerEnumsFromRelatedTypes
QQmlAttachedPropertiesFunc attachedPropertiesFunc
QQmlCustomParser * customParser
int propertyValueSourceCast
const QMetaObject * extMetaObject
int propertyValueInterceptorCast
bool registerEnumClassesUnscoped
QObject *(* extFunc)(QObject *)
void(* newFunc)(void *, void *)
QVariant(* createValueTypeFunc)(const QJSValue &)
QObject *(* extFunc)(QObject *)
const QMetaObject * extMetaObject
QQmlType::SingletonInstanceInfo * singletonInstanceInfo
std::function< QObject *(QQmlEngine *, QJSEngine *)> qobjectCallback
std::function< QJSValue(QQmlEngine *, QJSEngine *)> scriptCallback