3#ifndef QV4COMPILEDDATA_P_H
4#define QV4COMPILEDDATA_P_H
19#include <QtCore/qcryptographichash.h>
20#include <QtCore/qhash.h>
21#include <QtCore/qhashfunctions.h>
22#include <QtCore/qlocale.h>
23#include <QtCore/qscopeguard.h>
24#include <QtCore/qstring.h>
25#include <QtCore/qstringlist.h>
26#include <QtCore/qurl.h>
27#include <QtCore/qvector.h>
28#include <QtCore/qversionnumber.h>
30#if QT_CONFIG(temporaryfile)
31#include <QtCore/qsavefile.h>
34#include <private/qendian_p.h>
35#include <private/qqmlnullablevalue_p.h>
36#include <private/qqmlpropertycachevector_p.h>
37#include <private/qqmlrefcount_p.h>
38#include <private/qqmltype_p.h>
39#include <private/qv4compilationunitmapper_p.h>
40#include <private/qv4staticvalue_p.h>
54#define QV4_DATA_STRUCTURE_VERSION 0x42
82namespace CompiledData {
99template <
typename ItemType,
typename Container, const ItemType *(Container::*IndexedGetter)(
int index) const>
118 m_data.set<LineField>(l);
119 m_data.set<ColumnField>(
c);
120 Q_ASSERT(m_data.get<LineField>() == l);
121 Q_ASSERT(m_data.get<ColumnField>() ==
c);
125 return m_data.get<LineField>() <
other.m_data.get<LineField>()
126 || (m_data.get<LineField>() ==
other.m_data.get<LineField>()
127 && m_data.get<ColumnField>() <
other.m_data.get<ColumnField>());
137 return a.m_data.data()==
b.m_data.data();
142 m_data.set<LineField>(
line);
143 m_data.set<ColumnField>(
column);
150 using LineField = quint32_le_bitfield_member<0, 20>;
151 using ColumnField = quint32_le_bitfield_member<20, 12>;
153 quint32_le_bitfield_union<LineField, ColumnField> m_data;
155static_assert(
sizeof(Location) == 4,
"Location structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
171 m_data.set<FlagsField>(
flags);
179 using FlagsField = quint32_le_bitfield_member<0, 5>;
180 using StringIndexField = quint32_le_bitfield_member<5, 27>;
181 quint32_le_bitfield_union<FlagsField, StringIndexField> m_data;
183static_assert(
sizeof(
RegExp) == 4,
"RegExp structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
206 m_data.set<TypeField>(
type);
207 m_data.set<ModeField>(
mode);
212 using TypeField = quint32_le_bitfield_member<0, 2>;
213 using ModeField = quint32_le_bitfield_member<2, 1>;
215 using NameIndexField = quint32_le_bitfield_member<4, 28>;
216 quint32_le_bitfield_union<TypeField, ModeField, NameIndexField> m_data;
218static_assert(
sizeof(
Lookup) == 4,
"Lookup structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
227 m_data.set<IsAccessorField>(
isAccessor ? 1 : 0);
231 bool isAccessor()
const {
return m_data.get<IsAccessorField>() != 0; }
234 using NameOffsetField = quint32_le_bitfield_member<0, 31>;
235 using IsAccessorField = quint32_le_bitfield_member<31, 1>;
236 quint32_le_bitfield_union<NameOffsetField, IsAccessorField> m_data;
238static_assert(
sizeof(JSClassMember) == 4,
"JSClassMember structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
247static_assert(
sizeof(JSClass) == 4,
"JSClass structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
260static_assert (
sizeof (
String) == 4,
"String structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
267static_assert(
sizeof(
CodeOffsetToLineAndStatement) == 12,
"CodeOffsetToLineAndStatement structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
286 return (
a + 7) & ~size_t(7);
289static_assert(
sizeof(
Block) == 12,
"Block structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
325 m_data.set<IsListField>(
flags.testFlag(List) ? 1 : 0);
326 m_data.set<IndexIsCommonTypeField>(
flags.testFlag(
Common) ? 1 : 0);
332 return m_data.get<IndexIsCommonTypeField>() != 0;
337 return m_data.get<IsListField>() != 0;
342 return m_data.get<TypeNameIndexOrCommonTypeField>();
346 using IndexIsCommonTypeField = quint32_le_bitfield_member<0, 1>;
347 using IsListField = quint32_le_bitfield_member<1, 1>;
348 using TypeNameIndexOrCommonTypeField = quint32_le_bitfield_member<2, 30>;
349 quint32_le_bitfield_union<IndexIsCommonTypeField, IsListField, TypeNameIndexOrCommonTypeField> m_data;
351static_assert(
sizeof(ParameterType) == 4,
"ParameterType structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
358static_assert(
sizeof(
Parameter) == 8,
"Parameter structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
408 return reinterpret_cast<const Parameter *
>(
429 const char *
code()
const {
return reinterpret_cast<const char *
>(
this) +
codeOffset; }
432 int nFormals,
int nLocals,
int nLinesAndStatements,
int nInnerfunctions,
444 return (
a + 7) & ~size_t(7);
447static_assert(
sizeof(
Function) == 56,
"Function structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
460static_assert(
sizeof(
Method) == 12,
"Method structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
481 return (
a + 7) & ~size_t(7);
484static_assert(
sizeof(Class) == 24,
"Class structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
498 return (
a + 7) & ~size_t(7);
502 return reinterpret_cast<const quint32_le *
>(
reinterpret_cast<const char *
>(
this + 1));
512static_assert(
sizeof(TemplateObject) == 4,
"Template object structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
522static_assert(
sizeof(
ExportEntry) == 20,
"ExportEntry structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
531static_assert(
sizeof(
ImportEntry) == 16,
"ImportEntry structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
543static_assert(
sizeof(
TranslationData) == 16,
"TranslationData structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
664 for (
int i = 0;
i <
string.size(); ++
i) {
666 switch (
c.unicode()) {
720static_assert(
sizeof(
Binding) == 24,
"Binding structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
729static_assert(
sizeof(
InlineComponent) == 12,
"InlineComponent structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
737static_assert(
sizeof(
EnumValue) == 12,
"EnumValue structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
746 return reinterpret_cast<const EnumValue*
>(
this + 1) + idx;
761static_assert(
sizeof(
Enum) == 12,
"Enum structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
771 return reinterpret_cast<const Parameter*
>(
this + 1) + idx;
786static_assert(
sizeof(Signal) == 12,
"Signal structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
791 using CommonTypeOrTypeNameIndexField = quint32_le_bitfield_member<0, 28>;
792 using IsRequiredField = quint32_le_bitfield_member<28, 1>;
793 using IsCommonTypeField = quint32_le_bitfield_member<29, 1>;
794 using IsListField = quint32_le_bitfield_member<30, 1>;
795 using IsReadOnlyField = quint32_le_bitfield_member<31, 1>;
800 CommonTypeOrTypeNameIndexField,
809 data.set<CommonTypeOrTypeNameIndexField>(
static_cast<quint32>(
t));
810 data.set<IsCommonTypeField>(
true);
814 if (
data.get<IsCommonTypeField>() != 0)
822 data.set<IsCommonTypeField>(
false);
827 return data.get<IsCommonTypeField>() ? -1 :
data.get<CommonTypeOrTypeNameIndexField>();
842static_assert(
sizeof(
Property) == 12,
"Property structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
848static_assert (
sizeof(
RequiredPropertyExtraData) == 4,
"RequiredPropertyExtraData structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
852 using NameIndexField = quint32_le_bitfield_member<0, 29>;
853 using FlagsField = quint32_le_bitfield_member<29, 3>;
856 using TargetObjectIdField = quint32_le_bitfield_member<0, 31>;
857 using AliasToLocalAliasField = quint32_le_bitfield_member<31, 1>;
858 using IdIndexField = quint32_le_bitfield_member<0, 32>;
943static_assert(
sizeof(
Alias) == 20,
"Alias structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
948 using FlagsField = quint32_le_bitfield_member<0, 15>;
949 using DefaultPropertyIsAliasField = quint32_le_bitfield_member<15, 1>;
950 using IdField = quint32_le_bitfield_member<16, 16, qint32>;
967 quint32_le_bitfield_union<FlagsField, DefaultPropertyIsAliasField, IdField>
1079 return reinterpret_cast<const Enum*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1086 return reinterpret_cast<const Signal*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1150static_assert(
sizeof(
Object) == 84,
"Object structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1174static_assert(
sizeof(Import) == 20,
"Import structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1190 return reinterpret_cast<const Object*
>(
reinterpret_cast<const char*
>(
this) +
offset);
1193static_assert(
sizeof(QmlUnit) == 16,
"QmlUnit structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1213 enum :
unsigned int {
1291#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
1314 return reinterpret_cast<const Function*
>(
reinterpret_cast<const char *
>(
this) +
offset);
1320 return reinterpret_cast<const Class *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1326 return reinterpret_cast<const TemplateObject *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1332 return reinterpret_cast<const Block *
>(
reinterpret_cast<const char *
>(
this) +
offset);
1346 const char *
ptr =
reinterpret_cast<const char *
>(
this) +
offset;
1359 return reinterpret_cast<const quint32_le*
>((
reinterpret_cast<const char *
>(
this))
1366 return reinterpret_cast<quint32_le*
>((
reinterpret_cast<char *
>(
this))
1380static_assert(
sizeof(Unit) == 248,
"Unit structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target");
1401 return *
insert(nameIndex, loc);
1404 template <
typename CompiledObject>
1407 if (
obj->inheritedTypeNameIndex != 0) {
1409 r.needsCreation =
true;
1410 r.errorWhenNotFound =
true;
1413 auto prop =
obj->propertiesBegin();
1414 auto const propEnd =
obj->propertiesEnd();
1415 for ( ; prop != propEnd; ++prop) {
1416 if (!prop->isCommonType()) {
1417 TypeReference &
r = this->
add(prop->commonTypeOrTypeNameIndex(), prop->location);
1418 r.errorWhenNotFound =
true;
1422 auto binding =
obj->bindingsBegin();
1423 auto const bindingEnd =
obj->bindingsEnd();
1424 for ( ; binding != bindingEnd; ++binding) {
1426 this->
add(binding->propertyNameIndex, binding->location);
1429 auto ic =
obj->inlineComponentsBegin();
1430 auto const icEnd =
obj->inlineComponentsEnd();
1431 for (; ic != icEnd; ++ic) {
1432 this->
add(ic->nameIndex, ic->location);
1436 template <
typename Iterator>
1540#if Q_BYTE_ORDER == Q_BIG_ENDIAN
1545 m_finalUrlString.
clear();
1551#if Q_BYTE_ORDER == Q_BIG_ENDIAN
1554 for (
uint i = 0;
i <
data->constantTableSize; ++
i)
1567 if (index < data->stringTableSize)
1580 using namespace CompiledData;
1581 switch (binding->
type()) {
1595 return stringAt(
data->translations()[binding->
value.translationDataIndex].stringIndex);
1666 for (
auto it =
object->inlineComponentsBegin(),
end =
object->inlineComponentsEnd();
1668 if (
stringAt(
it->nameIndex) == inlineComponentName)
1669 return it->objectIndex;
1759 mutable QQmlNullableValue<QUrl> m_url;
1760 mutable QQmlNullableValue<QUrl> m_finalUrl;
1769 temporaryFlags(temporaryFlags)
1775 template<
typename Char>
1779 auto cleanup =
qScopeGuard([
this, oldFlags]() { mutableFlags() = oldFlags; });
1780 mutableFlags() |= temporaryFlags;
1781 return writer(data<Char>(),
size());
1787#if QT_CONFIG(temporaryfile)
1788 QSaveFile cacheFile(outputFileName);
1791 || !cacheFile.commit()) {
1792 *errorString = cacheFile.errorString();
1796 errorString->clear();
1800 *errorString =
QStringLiteral(
"features.temporaryfile is disabled.");
1814 template<
typename Char>
1818 const Char *dataPtr;
1819 memcpy(&dataPtr, &unit,
sizeof(dataPtr));
\inmodule QtCore\reentrant
iterator find(const int &key)
Returns an iterator pointing to the item with the key in the hash.
iterator Iterator
Qt-style synonym for QHash::iterator.
T value(const Key &key) const noexcept
iterator end() noexcept
Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item after the last ...
iterator insert(const int &key, const TypeReference &value)
Inserts a new item with the key and a value of value.
\inmodule QtCore \reentrant
The QQmlEngine class provides an environment for instantiating QML components.
QQmlPropertyCache::ConstPtr at(int index) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isEmpty() const noexcept
Returns true if the string has no characters; otherwise returns false.
void clear()
Clears the contents of the string and makes it null.
qsizetype size() const noexcept
Returns the number of characters in this string.
static QString fromRawData(const QChar *, qsizetype size)
Constructs a QString that uses the first size Unicode characters in the array unicode.
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static constexpr QTypeRevision zero()
Produces a QTypeRevision with major and minor version {0}.
~SaveableUnitPointer()=default
static bool writeDataToFile(const QString &outputFileName, const char *data, quint32 size, QString *errorString)
bool saveToDisk(const std::function< bool(const Char *, quint32)> &writer) const
SaveableUnitPointer(const Unit *unit, quint32 temporaryFlags=Unit::StaticData)
QHash< int, QWidget * > hash
[35multi]
QSet< QString >::iterator it
Combined button and popup list for selecting options.
QVector< const QQmlPropertyData * > BindingPropertyData
std::function< QByteArray()> DependentTypesHasher
static const char magic_str[]
constexpr Initialization Uninitialized
#define Q_STATIC_ASSERT(Condition)
typedef QByteArray(EGLAPIENTRYP PFNQGSGETDISPLAYSPROC)()
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
QLEInteger< quint32 > quint32_le
QLEInteger< quint64 > quint64_le
QLEIntegerBitfieldUnion< uint, Accessors... > quint32_le_bitfield_union
constexpr QSpecialIntegerBitfieldInitializer QSpecialIntegerBitfieldZero
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
static ControlElement< T > * ptr(QWidget *widget)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLenum GLenum GLsizei void GLsizei void * column
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
QScopeGuard< typename std::decay< F >::type > qScopeGuard(F &&f)
[qScopeGuard]
QLatin1StringView QLatin1String
#define QStringLiteral(str)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
QList< QChar > characters
\inmodule QtCore \reentrant
Location referenceLocation
quint32_le propertyNameIndex
@ AliasPointsToPointerObject
qint32_le encodedMetaPropertyIndex
void setIsAliasToLocalAlias(bool isAliasToLocalAlias)
void setTargetObjectId(quint32 targetObjectId)
quint32_le_bitfield_union< NameIndexField, FlagsField > nameIndexAndFlags
quint32 targetObjectId() const
bool isObjectAlias() const
bool hasFlag(Flag flag) const
quint32_le_bitfield_union< IdIndexField, TargetObjectIdField, AliasToLocalAliasField > idIndexAndTargetObjectIdAndAliasToLocalAlias
void setNameIndex(quint32 nameIndex)
void setIdIndex(quint32 idIndex)
bool isAliasToLocalAlias() const
quint32 nameIndex() const
quint32_le localAliasIndex
quint32_le propertyNameIndex
bool isNumberBinding() const
bool isSignalHandler() const
quint32_le_bitfield_member< 16, 16 > TypeField
bool isFunctionExpression() const
bool hasSignalHandlerBindingFlag() const
bool evaluatesToString() const
bool isAttachedProperty() const
quint32_le_bitfield_union< FlagsField, TypeField > flagsAndType
quint32_le_bitfield_member< 0, 16 > FlagsField
bool hasFlag(Flag flag) const
bool isGroupProperty() const
bool isValueBindingNoAlias() const
bool isTranslationBinding() const
bool valueAsBoolean() const
union QV4::CompiledData::Binding::@545 value
static QString escapedString(const QString &string)
bool isValueBinding() const
quint32_le translationDataIndex
quint32_le constantValueIndex
bool isValueBindingToAlias() const
Q_DECLARE_FLAGS(Flags, Flag)
@ InitializerForReadOnlyDeclaration
@ IsSignalHandlerExpression
quint32_le compiledScriptIndex
const quint32_le * localsTable() const
quint16_le sizeOfLocalTemporalDeadZone
static size_t align(size_t a)
static int calculateSize(int nLocals)
static int calculateSize(int nStaticMethods, int nMethods)
static size_t align(size_t a)
quint32_le methodTableOffset
const Method * methodTable() const
quint32_le nStaticMethods
quint32_le constructorFunction
const CompiledObject * object
const CompiledData::Unit * unit
bool operator!=(const FunctionIterator &rhs) const
bool operator==(const FunctionIterator &rhs) const
FunctionIterator(const CompiledData::Unit *unit, const CompiledObject *object, int index)
const CompiledFunction * operator->() const
QString stringAt(uint index) const
std::unique_ptr< CompilationUnitMapper > backingFile
QString bindingValueAsScriptString(const CompiledData::Binding *binding) const
QHash< QString, InlineComponentData > inlineComponentData
Q_QML_EXPORT ~CompilationUnit()
void setUnitData(const Unit *unitData, const QmlUnit *qmlUnit=nullptr, const QString &fileName=QString(), const QString &finalUrlString=QString())
int inlineComponentId(const QString &inlineComponentName) const
QMetaType metaType() const
double bindingValueAsNumber(const CompiledData::Binding *binding) const
std::unique_ptr< QString > icRootName
Q_QML_EXPORT bool saveToDisk(const QUrl &unitUrl, QString *errorString)
ResolvedTypeReference * resolvedType(int id) const
const QQmlPrivate::AOTCompiledFunction * aotCompiledFunctions
CompilationUnit(const Unit *unitData, const QQmlPrivate::AOTCompiledFunction *aotCompiledFunctions, const QString &fileName=QString(), const QString &finalUrlString=QString())
QVector< QQmlRefPointer< QQmlScriptData > > dependentScripts
ResolvedTypeReferenceMap resolvedTypes
bool isSharedLibrary() const
bool componentsAreBound() const
bool verifyChecksum(const CompiledData::DependentTypesHasher &dependencyHasher) const
Q_QML_EXPORT QStringList moduleRequests() const
QVector< BindingPropertyData > bindingPropertyDataPerObject
QQmlType qmlTypeForComponent(const QString &inlineComponentName=QString()) const
FunctionIterator objectFunctionsBegin(const CompiledObject *object) const
QString finalUrlString() const
QQmlRefPointer< QQmlTypeNameCache > typeNameCache
void finalizeCompositeType(const QQmlType &type)
FunctionIterator objectFunctionsEnd(const CompiledObject *object) const
bool nativeMethodsAcceptThisObjects() const
ListPropertyAssignBehavior listPropertyAssignBehavior() const
const Unit * unitData() const
ListPropertyAssignBehavior
const CompiledObject * objectAt(int index) const
bool valueTypesAreAddressable() const
int totalParserStatusCount() const
bool ignoresFunctionSignature() const
bool valueTypesAreCopied() const
int totalObjectCount() const
const CompiledData::Import * importAt(int index) const
QQmlPropertyCacheVector propertyCaches
int totalBindingsCount() const
static Q_QML_EXPORT QString localCacheFilePath(const QUrl &url)
QStringList dynamicStrings
Q_QML_EXPORT bool loadFromDisk(const QUrl &url, const QDateTime &sourceTimeStamp, QString *errorString)
QString bindingValueAsString(const CompiledData::Binding *binding) const
int m_totalParserStatusCount
QQmlPropertyCache::ConstPtr rootPropertyCache() const
const StaticValue * constants
const EnumValue * enumValueAt(int idx) const
const EnumValue * enumValuesEnd() const
const EnumValue * enumValuesBegin() const
static int calculateSize(int nEnumValues)
int enumValueCount() const
quint32_le nestedFunctionIndex
quint16_le firstTemporalDeadZoneRegister
size_t labelInfosOffset() const
const quint32_le * localsTable() const
static size_t align(size_t a)
const CodeOffsetToLineAndStatement * lineAndStatementNumberTable() const
quint16_le sizeOfRegisterTemporalDeadZone
quint16_le sizeOfLocalTemporalDeadZone
const char * code() const
static int calculateSize(int nFormals, int nLocals, int nLinesAndStatements, int nInnerfunctions, int labelInfoSize, int codeSize)
size_t lineAndStatementNumberOffset() const
const Parameter * formalsTable() const
const Parameter * formalsEnd() const
const Parameter * formalsBegin() const
const quint32_le * labelInfoTable() const
quint16_le nLineAndStatementNumbers
quint32_le qualifierIndex
InlineComponentData(const QQmlType &qmlType, int objectIndex, int nameIndex, int totalObjectCount, int totalBindingCount, int totalParserStatusCount)
int totalParserStatusCount
InlineComponentData()=default
void set(quint32 nameOffset, bool isAccessor)
quint32 nameOffset() const
static int calculateSize(int nMembers)
Location(quint32 l, quint32 c)
void set(quint32 line, quint32 column)
friend size_t qHash(const Location &location, size_t seed=0)
bool operator<(const Location &other) const
friend bool operator==(const Location &a, const Location &b)
Lookup(Type type, Mode mode, quint32 nameIndex)
quint32 nameIndex() const
@ Type_QmlContextPropertyGetter
void setFlags(Flags flags)
quint32_le offsetToBindings
TableIterator< Enum, Object, &Object::enumAt > EnumIterator
EnumIterator enumsBegin() const
Q_DECLARE_FLAGS(Flags, Flag)
quint32_le offsetToAliases
quint32_le offsetToProperties
int propertyCount() const
quint32_le offsetToSignals
const RequiredPropertyExtraData * requiredPropertyExtraDataAt(int idx) const
EnumIterator enumsEnd() const
const Enum * enumAt(int idx) const
RequiredPropertyExtraDataIterator requiredPropertyExtraDataEnd() const
bool hasAliasAsDefaultProperty() const
quint32_le offsetToInlineComponents
const RequiredPropertyExtraData * requiredPropertyExtraDataTable() const
TableIterator< Signal, Object, &Object::signalAt > SignalIterator
const Binding * bindingsEnd() const
quint32_le inheritedTypeNameIndex
bool hasFlag(Flag flag) const
const Property * propertyTable() const
@ HasCustomParserBindings
@ IsPartOfInlineComponent
SignalIterator signalsBegin() const
quint32_le_bitfield_union< FlagsField, DefaultPropertyIsAliasField, IdField > flagsAndDefaultPropertyIsAliasAndId
quint32_le offsetToNamedObjectsInComponent
int namedObjectsInComponentCount() const
InlineComponentIterator inlineComponentsEnd() const
qint32_le indexOfDefaultPropertyOrAlias
int functionCount() const
const Alias * aliasTable() const
quint16_le nInlineComponents
void setObjectId(qint32 id)
quint32_le offsetToRequiredPropertyExtraData
const InlineComponent * inlineComponentAt(int idx) const
const Property * propertiesEnd() const
quint32_le nNamedObjectsInComponent
const Binding * bindingTable() const
quint16_le nRequiredPropertyExtraData
const Signal * signalAt(int idx) const
const Property * propertiesBegin() const
Location locationOfIdProperty
const quint32_le * functionOffsetTable() const
static int calculateSizeExcludingSignalsAndEnums(int nFunctions, int nProperties, int nAliases, int nEnums, int nSignals, int nBindings, int nNamedObjectsInComponent, int nInlineComponents, int nRequiredPropertyExtraData)
TableIterator< InlineComponent, Object, &Object::inlineComponentAt > InlineComponentIterator
const InlineComponent * inlineComponentTable() const
InlineComponentIterator inlineComponentsBegin() const
TableIterator< RequiredPropertyExtraData, Object, &Object::requiredPropertyExtraDataAt > RequiredPropertyExtraDataIterator
SignalIterator signalsEnd() const
const Alias * aliasesEnd() const
quint32_le offsetToFunctions
const Binding * bindingsBegin() const
RequiredPropertyExtraDataIterator requiredPropertyExtraDataBegin() const
void setHasAliasAsDefaultProperty(bool defaultAlias)
const Alias * aliasesBegin() const
const quint32_le * namedObjectsInComponentTable() const
quint32 typeNameIndexOrCommonType() const
void set(Flags flags, quint32 typeNameIndexOrCommonType)
bool indexIsCommonType() const
Q_DECLARE_FLAGS(Flags, Flag)
void setIsList(bool isList)
void setIsReadOnly(bool isReadOnly)
bool isCommonType() const
void setTypeNameIndex(int nameIndex)
quint32_le_bitfield_union< CommonTypeOrTypeNameIndexField, IsRequiredField, IsCommonTypeField, IsListField, IsReadOnlyField > data
uint commonTypeOrTypeNameIndex() const
int typeNameIndex() const
void setIsRequired(bool isRequired)
void setCommonType(CommonType t)
CommonType commonType() const
quint32_le offsetToObjects
const Object * objectAt(int idx) const
const Import * importAt(int idx) const
quint32_le offsetToImports
quint32 stringIndex() const
RegExp(quint32 flags, quint32 stringIndex)
bool addToHash(QCryptographicHash *hash, QHash< quintptr, QByteArray > *checksums) const
int parameterCount() const
const Parameter * parametersBegin() const
static int calculateSize(int nParameters)
const Parameter * parametersEnd() const
const Parameter * parameterAt(int idx) const
static int calculateSize(const QString &str)
bool operator==(const TableIterator &rhs) const
const Container * container
const ItemType * operator->()
bool operator!=(const TableIterator &rhs) const
TableIterator(const Container *container, int index)
static int calculateSize(int size)
uint stringIndexAt(uint i) const
static size_t align(size_t a)
uint rawStringIndexAt(uint i) const
const quint32_le * stringTable() const
void collectFromObject(const CompiledObject *obj)
TypeReference & add(int nameIndex, const Location &loc)
void collectFromObjects(Iterator it, Iterator end)
TypeReference(const Location &loc)
quint32_le offsetToLookupTable
quint32_le offsetToIndirectExportEntryTable
quint32_le offsetToJSClassTable
quint32_le jsClassTableSize
quint32_le * translationContextIndex()
quint32_le offsetToTemplateObjectTable
quint32_le functionTableSize
const TranslationData * translations() const
quint32_le offsetToRegexpTable
quint32_le importEntryTableSize
const ExportEntry * indirectExportEntryTable() const
const quint64_le * constants() const
quint32_le starExportEntryTableSize
quint32_le lookupTableSize
qint32_le indexOfRootFunction
QString stringAtInternal(uint idx) const
quint32_le offsetToLocalExportEntryTable
const quint32_le * functionOffsetTable() const
bool verifyHeader(QDateTime expectedSourceTimeStamp, QString *errorString) const
quint32_le offsetToClassTable
quint32_le classTableSize
quint32_le offsetToStringTable
@ ListPropertyAssignReplace
@ FunctionSignaturesIgnored
@ ListPropertyAssignReplaceIfDefault
@ ListPropertyAssignReplaceIfNotDefault
@ NativeMethodsAcceptThisObject
quint32_le offsetToQmlUnit
const Function * functionAt(int idx) const
const TemplateObject * templateObjectAt(int idx) const
quint32_le offsetToFunctionTable
quint32_le offsetToStarExportEntryTable
const ExportEntry * starExportEntryTable() const
const Lookup * lookupTable() const
quint32_le offsetToModuleRequestTable
quint32_le translationTableSize
const RegExp * regexpAt(int index) const
const Block * blockAt(int idx) const
const ExportEntry * localExportEntryTable() const
const quint32_le * translationContextIndex() const
const quint32_le * classOffsetTable() const
const quint32_le * moduleRequestTable() const
quint32_le sourceFileIndex
quint32_le moduleRequestTableSize
quint32_le offsetToTranslationTable
char libraryVersionHash[QmlCompileHashSpace]
quint32_le blockTableSize
quint32_le templateObjectTableSize
quint32_le localExportEntryTableSize
const Class * classAt(int idx) const
quint32_le regexpTableSize
quint32_le offsetToImportEntryTable
quint32_le stringTableSize
quint32_le constantTableSize
const ImportEntry * importEntryTable() const
qint64_le sourceTimeStamp
char dependencyMD5Checksum[16]
const QmlUnit * qmlUnit() const
quint32_le offsetToConstantTable
quint32_le offsetToBlockTable
const quint32_le * blockOffsetTable() const
quint32_le indirectExportEntryTableSize
const JSClassMember * jsClassAt(int idx, int *nMembers) const
const quint32_le * templateObjectOffsetTable() const
QV4_NEARLY_ALWAYS_INLINE double doubleValue() const
static constexpr StaticValue fromReturnedValue(ReturnedValue val)