4#ifndef QQMLJSREGISTERCONTENT_P_H
5#define QQMLJSREGISTERCONTENT_P_H
18#include <QtCore/qhash.h>
19#include <QtCore/qstring.h>
64 enum { InvalidLookupIndex = -1 };
67 bool isValid()
const {
return !m_storedType.isNull(); }
69 QString descriptiveName()
const;
73 return a.m_storedType ==
b.m_storedType &&
a.m_variant ==
b.m_variant
74 &&
a.m_scope ==
b.m_scope &&
a.m_content ==
b.m_content;
82 bool isType()
const {
return m_content.index() ==
Type; }
83 bool isProperty()
const {
return m_content.index() == Property; }
87 bool isConversion()
const {
return m_content.index() == Conversion; }
90 bool isWritable()
const;
97 return std::get<std::pair<QQmlJSScope::ConstPtr, int>>(m_content).
first;
101 return std::get<PropertyLookup>(m_content).property;
105 return std::get<PropertyLookup>(m_content).baseLookupIndex;
109 switch (m_content.index()) {
111 return std::get<std::pair<QQmlJSScope::ConstPtr, int>>(m_content).second;
113 return std::get<PropertyLookup>(m_content).resultLookupIndex;
115 return InvalidLookupIndex;
120 return std::get<std::pair<QQmlJSMetaEnum, QString>>(m_content).
first;
124 return std::get<std::pair<QQmlJSMetaEnum, QString>>(m_content).second;
126 QList<QQmlJSMetaMethod>
method()
const {
return std::get<QList<QQmlJSMetaMethod>>(m_content); }
131 return std::get<ConvertedTypes>(m_content).result;
136 return std::get<ConvertedTypes>(m_content).resultScope;
141 return std::get<ConvertedTypes>(m_content).origins;
148 seed =
qHashMulti(
seed, registerContent.m_storedType, registerContent.m_content.index(),
149 registerContent.m_scope, registerContent.m_variant);
150 switch (registerContent.m_content.index()) {
152 return qHash(std::get<std::pair<QQmlJSScope::ConstPtr, int>>(registerContent.m_content),
155 return qHash(std::get<PropertyLookup>(registerContent.m_content),
seed);
157 return qHash(std::get<std::pair<QQmlJSMetaEnum, QString>>(registerContent.m_content),
160 return qHash(std::get<QList<QQmlJSMetaMethod>>(registerContent.m_content),
seed);
161 case ImportNamespace:
162 return qHash(std::get<uint>(registerContent.m_content),
seed);
164 return qHash(std::get<ConvertedTypes>(registerContent.m_content),
seed);
167 Q_UNREACHABLE_RETURN(
seed);
172 int resultLookupIndex, ContentVariant
variant,
177 int baseLookupIndex,
int resultLookupIndex,
187 const QList<QQmlJSMetaMethod> &
methods,
192 uint importNamespaceStringId, ContentVariant
variant,
196 const QList<QQmlJSScope::ConstPtr> &
origins,
205 result.m_storedType = newStoredType;
213 result.m_content = std::make_pair(newContainedType,
result.resultLookupIndex());
218 enum ContentKind {
Type, Property,
Enum,
Method, ImportNamespace, Conversion };
220 struct ConvertedTypes
222 QList<QQmlJSScope::ConstPtr>
origins;
231 friend bool operator==(
const ConvertedTypes &
a,
const ConvertedTypes &
b)
233 return a.origins ==
b.origins &&
a.result ==
b.result &&
a.resultScope ==
b.resultScope;
236 friend bool operator!=(
const ConvertedTypes &
a,
const ConvertedTypes &
b)
242 struct PropertyLookup
245 int baseLookupIndex = InvalidLookupIndex;
246 int resultLookupIndex = InvalidLookupIndex;
254 friend bool operator==(
const PropertyLookup &
a,
const PropertyLookup &
b)
256 return a.baseLookupIndex ==
b.baseLookupIndex
257 &&
a.resultLookupIndex ==
b.resultLookupIndex
258 &&
a.property ==
b.property;
261 friend bool operator!=(
const PropertyLookup &
a,
const PropertyLookup &
b)
267 using Content = std::variant<
268 std::pair<QQmlJSScope::ConstPtr, int>,
270 std::pair<QQmlJSMetaEnum, QString>,
271 QList<QQmlJSMetaMethod>,
278 : m_storedType(storedType), m_scope(scope), m_variant(
variant)
285 ContentVariant m_variant =
Unknown;
static JNINativeMethod methods[]
QQmlJSRegisterContent storedIn(const QQmlJSScope::ConstPtr &newStoredType) const
QQmlJSRegisterContent()=default
QQmlJSScope::ConstPtr conversionResult() const
QQmlJSMetaProperty property() const
QQmlJSScope::ConstPtr scopeType() const
QQmlJSScope::ConstPtr conversionResultScope() const
uint importNamespace() const
bool isConversion() const
QList< QQmlJSScope::ConstPtr > conversionOrigins() const
bool isImportNamespace() const
ContentVariant variant() const
friend size_t qHash(const QQmlJSRegisterContent ®isterContent, size_t seed=0)
QQmlJSScope::ConstPtr type() const
QQmlJSScope::ConstPtr storedType() const
friend bool operator!=(const QQmlJSRegisterContent &a, const QQmlJSRegisterContent &b)
QQmlJSMetaEnum enumeration() const
int baseLookupIndex() const
QQmlJSRegisterContent castTo(const QQmlJSScope::ConstPtr &newContainedType) const
friend bool operator==(const QQmlJSRegisterContent &a, const QQmlJSRegisterContent &b)
@ JavaScriptScopeProperty
@ ExtensionObjectProperty
int resultLookupIndex() const
QString enumMember() const
bool isEnumeration() const
QList< QQmlJSMetaMethod > method() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
constexpr bool operator!=(const timespec &t1, const timespec &t2)
static const QCssKnownValue origins[NumKnownOrigins - 1]
size_t qHash(const QFileSystemWatcherPathKey &key, size_t seed=0)
constexpr QtPrivate::QHashMultiReturnType< T... > qHashMulti(size_t seed, const T &... args) noexcept(std::conjunction_v< QtPrivate::QNothrowHashable< T >... >)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLsizei GLenum GLenum * types
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)