6#include <private/qqmlengine_p.h>
7#include <private/qqmlcontext_p.h>
8#include <private/qqmlmetaobject_p.h>
9#include <private/qqmltypedata_p.h>
10#include <private/qqmlvaluetypewrapper_p.h>
12#include <private/qjsvalue_p.h>
13#include <private/qv4functionobject_p.h>
14#include <private/qv4objectproto_p.h>
15#include <private/qv4qobjectwrapper_p.h>
16#include <private/qv4identifiertable_p.h>
17#include <private/qv4lookup_p.h>
36 typePrivate =
nullptr;
38 typeNamespace->release();
50 return d()->type().isSingleton();
59 if (
type.isSingleton())
60 return type.metaObject();
72 if (
type.isSingleton())
86 return e->singletonInstance<
QObject*>(
d()->type());
96 d()->
object,
type.attachedPropertiesFunction(
e)));
99 if (
type.isQJSValueSingleton())
100 return QVariant::fromValue<QJSValue>(
e->singletonInstance<
QJSValue>(
type));
102 return QVariant::fromValue<QObject*>(
e->singletonInstance<
QObject*>(
type));
114 w->d()->mode =
mode;
w->d()->object =
o;
115 w->d()->typePrivate =
t.priv();
117 return w.asReturnedValue();
132 return w.asReturnedValue();
146 for (
int ii =
metaObject->enumeratorCount() - 1; ii >= 0; --ii) {
178 if (
type.isValid()) {
181 if (
type.isSingleton()) {
184 if (
type.isQObjectSingleton() ||
type.isCompositeSingleton()) {
188 if (includeEnums &&
name->startsWithUpper()) {
197 enumWrapper->d()->typePrivate =
type.priv();
199 enumWrapper->d()->scopeEnumIndex =
value;
214 }
else if (
type.isQJSValueSingleton()) {
228 if (
name->startsWithUpper()) {
237 enumWrapper->d()->typePrivate =
type.priv();
239 enumWrapper->d()->scopeEnumIndex =
value;
245 }
else if (
w->d()->object) {
262 }
else if (
w->d()->typeNamespace) {
267 if (
r.type.isValid()) {
269 }
else if (
r.scriptIndex != -1) {
271 return scripts->get(
r.scriptIndex);
272 }
else if (
r.importNamespace) {
311 if (
type.isValid() && !
type.isSingleton() &&
w->d()->object) {
320 }
else if (
type.isSingleton()) {
322 if (
type.isQObjectSingleton() ||
type.isCompositeSingleton()) {
365 return qmlTypeWrapperA->
toVariant() == qmlTypeWrapperB->toVariant();
378 return engine->throwTypeError();
380 const QMetaType myTypeId = typeWrapper->d()->
type().typeId();
403 const QMetaObject *theirType = wrapperObject->metaObject();
420 valueTypeMetaObject));
446 if (
type.isValid()) {
448 if (
type.isSingleton()) {
450 if (
type.isQObjectSingleton() ||
type.isCompositeSingleton()) {
453 if (!includeEnums || !
name->startsWithUpper()) {
461 lookup, ddata,
property,
val->objectValue(),
nullptr);
465 lookup, ddata,
property,
val->objectValue(), This);
481 if (
name->startsWithUpper()) {
496 enumWrapper->d()->typePrivate =
type.priv();
498 enumWrapper->d()->scopeEnumIndex =
value;
502 =
static_cast<Heap::Object*
>(enumWrapper->heapObject());
523 if (
QObject *
object = typeWrapper->object()) {
553 Heap::Object *
o =
static_cast<Heap::Object *
>(
object.heapObject());
565 return revertLookup();
571 return revertLookup();
573 if (!
type.isQObjectSingleton() && !
type.isCompositeSingleton())
574 return revertLookup();
600 return revertLookup();
604 return revertLookup();
606 if (!
type.isQObjectSingleton() && !
type.isCompositeSingleton())
607 return revertLookup();
622 auto *
o =
static_cast<Heap::Object *
>(
base.heapObject());
637 auto *
o =
static_cast<Heap::Object *
>(
base.heapObject());
651 typePrivate =
nullptr;
672 int index = resource->d()->scopeEnumIndex;
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
static QV4::ReturnedValue asReturnedValue(const QJSValue *jsval)
The QJSValue class acts as a container for Qt/JavaScript data types.
bool isUndefined() const
Returns true if this QJSValue is of the primitive type Undefined or if the managed value has been cle...
QQmlRefPointer< QV4::ExecutableCompilationUnit > compilationUnit
QQmlPropertyCache::ConstPtr propertyCache
static QQmlData * get(QObjectPrivate *priv, bool create)
QQmlTypeLoader typeLoader
static QQmlEnginePrivate * get(QQmlEngine *e)
The QQmlEngine class provides an environment for instantiating QML components.
T singletonInstance(int qmlTypeId)
\qmlproperty string Qt::uiLanguage
QQmlRefPointer< QQmlTypeData > getType(const QUrl &unNormalizedUrl, Mode mode=PreferSynchronous)
Returns a QQmlTypeData for the specified url.
static void refHandle(const QQmlTypePrivate *priv)
static void derefHandle(const QQmlTypePrivate *priv)
\macro QT_RESTRICTED_CAST_FROM_ASCII
ObjectType::Data * allocate(Args &&... args)
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
Combined button and popup list for selecting options.
\qmltype Particle \inqmlmodule QtQuick.Particles
void setupQObjectLookup(Lookup *lookup, const QQmlData *ddata, const QQmlPropertyData *propertyData)
void setupQObjectMethodLookup(Lookup *lookup, const QQmlData *ddata, const QQmlPropertyData *propertyData, const Object *self, Heap::QObjectMethod *method)
bool qualifiesForMethodLookup(const QQmlPropertyData *propertyData)
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLboolean GLboolean GLboolean b
GLfloat GLfloat GLfloat w
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
QQmlEngine * qmlEngine(const QObject *obj)
QQmlContext * qmlContext(const QObject *obj)
QObject * qmlAttachedPropertiesObject(QObject *object, QQmlAttachedPropertiesFunc func, bool create)
static ReturnedValue instanceOfQObject(const QV4::QQmlTypeWrapper *typeWrapper, const QObjectWrapper *objectWrapper)
static int enumForSingleton(QV4::ExecutionEngine *v4, String *name, QObject *qobjectSingleton, const QQmlType &type, bool *ok)
QLatin1StringView QLatin1String
#define DEFINE_OBJECT_VTABLE(classname)
obj metaObject() -> className()
\inmodule QtCore \reentrant
Heap::String ** runtimeStrings
static constexpr ReturnedValue undefined()
IdentifierTable * identifierTable
MemoryManager * memoryManager
CppStackFrame * currentStackFrame
QQmlRefPointer< QQmlContextData > callingQmlContext() const
ReturnedValue throwError(const Value &value)
QQmlEngine * qmlEngine() const
CompiledData::CompilationUnitBase * compilationUnit
const QQmlImportRef * importNamespace
QV4QPointer< QObject > object
PropertyKey asPropertyKey(const Heap::String *str)
struct QV4::Lookup::@576::@611 qmlEnumValueLookup
struct QV4::Lookup::@576::@601 qobjectLookup
ReturnedValue encodedEnumValue
ReturnedValue(* getter)(Lookup *l, ExecutionEngine *engine, const Value &object)
static ReturnedValue getterGeneric(Lookup *l, ExecutionEngine *engine, const Value &object)
Heap::InternalClass * qmlTypeIc
struct QV4::Lookup::@576::@602 qobjectMethodLookup
const QQmlPropertyCache * propertyCache
Heap::Object * qmlScopedEnumWrapper
struct QV4::Lookup::@576::@612 qmlScopedEnumWrapperLookup
Heap::InternalClass * internalClass() const
ExecutionEngine * engine() const
bool hasProperty(PropertyKey id) const
ReturnedValue get(StringOrSymbol *name, bool *hasProperty=nullptr, const Value *receiver=nullptr) const
static bool setQmlProperty(ExecutionEngine *engine, const QQmlRefPointer< QQmlContextData > &qmlContext, QObject *object, String *name, Flags flags, const Value &value)
ReturnedValue getQmlProperty(const QQmlRefPointer< QQmlContextData > &qmlContext, String *name, Flags flags, bool *hasProperty=nullptr) const
static ReturnedValue lookupPropertyGetterImpl(Lookup *l, ExecutionEngine *engine, const Value &object, Flags flags, ReversalFunctor revert)
static ReturnedValue wrap(ExecutionEngine *engine, QObject *object)
static ReturnedValue lookupMethodGetterImpl(Lookup *l, ExecutionEngine *engine, const Value &object, Flags flags, ReversalFunctor revert)
static ReturnedValue lookupScopedEnum(Lookup *l, ExecutionEngine *engine, const Value &base)
static ReturnedValue lookupSingletonMethod(Lookup *l, ExecutionEngine *engine, const Value &base)
static ReturnedValue create(ExecutionEngine *, QObject *, const QQmlType &, Heap::QQmlTypeWrapper::TypeNameMode=Heap::QQmlTypeWrapper::IncludeEnums)
V4_NEEDS_DESTROY bool isSingleton() const
QObject * singletonObject() const
const QMetaObject * metaObject() const
QVariant toVariant() const
static ReturnedValue lookupEnumValue(Lookup *l, ExecutionEngine *engine, const Value &base)
static ReturnedValue lookupSingletonProperty(Lookup *l, ExecutionEngine *engine, const Value &base)
bool hasException() const
QML_NEARLY_ALWAYS_INLINE ReturnedValue asReturnedValue() const
constexpr ReturnedValue asReturnedValue() const
QV4_NEARLY_ALWAYS_INLINE constexpr quint32 value() const
static constexpr VTable::OwnPropertyKeys virtualOwnPropertyKeys
static constexpr VTable::GetOwnProperty virtualGetOwnProperty
static constexpr VTable::Get virtualGet
static constexpr VTable::Metacall virtualMetacall
static constexpr VTable::InstanceOf virtualInstanceOf
static constexpr VTable::Put virtualPut
static constexpr VTable::IsEqualTo virtualIsEqualTo
static constexpr VTable::ResolveLookupGetter virtualResolveLookupGetter
static constexpr VTable::ResolveLookupSetter virtualResolveLookupSetter
static constexpr Value fromInt32(int i)
static constexpr Value fromReturnedValue(ReturnedValue val)