3#ifndef QQMLIRBUILDER_P_H
4#define QQMLIRBUILDER_P_H
17#include <private/qqmljsast_p.h>
18#include <private/qqmljsengine_p.h>
19#include <private/qv4compiler_p.h>
20#include <private/qv4compileddata_p.h>
21#include <private/qqmljsmemorypool_p.h>
22#include <private/qqmljsfixedpoolarray_p.h>
23#include <private/qv4codegen_p.h>
24#include <private/qv4compiler_p.h>
26#include <QCoreApplication>
69 template <
typename Sortable,
typename Base, Sortable Base::*sortMember>
72 T *insertPos =
nullptr;
75 if (!(
it->*sortMember <= item->*sortMember))
84 if (!insertionPoint) {
86 }
else if (insertionPoint ==
last) {
89 item->next = insertionPoint->next;
90 insertionPoint->next =
item;
96 T *
const newNext =
item->next;
99 before->next = newNext;
171 operator T *() {
return ptr; }
172 operator const T *()
const {
return ptr; }
206 template<
typename IdGenerator>
221 return initType(
type, typeId, idGenerator(typeId), Flag::NoFlag);
224 return initType(
type, typeArgument, idGenerator(typeArgument), Flag::List);
227 return initType(
type, annotationString, idGenerator(annotationString), Flag::NoFlag);
340 void simplifyRequiredProperties();
391 friend struct ::QQmlIRLoader;
477 return pragma->type == Pragma::Singleton;
497 void pragmaLibrary()
override;
498 void importFile(
const QString &jsfile,
const QString &module,
int lineNumber,
int column)
override;
510 static QString signalNameFromSignalPropertyName(
const QString &signalPropertyName);
512 using QQmlJS::AST::Visitor::visit;
513 using QQmlJS::AST::Visitor::endVisit;
537 QStringLiteral(
"Maximum statement or expression depth exceeded"));
543 bool defineQMLObject(
550 Object *declarationsOverride =
nullptr)
553 return defineQMLObject(
555 { location.startLine, location.startColumn }, node->
initializer,
556 declarationsOverride);
579 int objectIndex,
bool isListItem =
false,
bool isOnAssignment =
false);
583 Object *bindingsTarget()
const;
594 template <
typename _Tp> _Tp *
New() {
return pool->New<_Tp>(); }
621 bool insideInlineComponent =
false;
629 typedef bool (
Binding::*BindingFilter)()
const;
630 char *writeBindings(
char *bindingPtr,
const Object *
o, BindingFilter
filter)
const;
638 bool storeSourceLocations =
false);
664 typename RegisterMainString,
665 typename RegisterCommentString,
666 typename RegisterContextString,
667 typename FinalizeTranslationData>
669 RegisterMainString registerMainString,
670 RegisterCommentString registerCommentString,
671 RegisterContextString registerContextString,
672 FinalizeTranslationData finalizeTranslationData
677 translationData.
number = -1;
686 translation =
arg1->value;
691 translationData.
stringIndex = registerMainString(translation);
718 translationData.
number = -1;
731 translationData.
stringIndex = registerMainString(
id);
764 translationData.
number = registerMainString(
str);
786 fakeTranslationData.
number = registerMainString(
str);
790 translationData.
number = -1;
798 = QQmlJS::AST::cast<QQmlJS::AST::StringLiteral *>(
args->expression)) {
799 translation =
arg1->value;
804 translationData.
contextIndex = registerContextString(translation);
810 = QQmlJS::AST::cast<QQmlJS::AST::StringLiteral *>(
args->expression);
818 = QQmlJS::AST::cast<QQmlJS::AST::StringLiteral *>(
args->expression);
826 = QQmlJS::AST::cast<QQmlJS::AST::NumericLiteral *>(
args->expression)) {
827 translationData.
number = int(arg4->value);
qsizetype size() const noexcept
const_reference at(qsizetype i) const noexcept
const_iterator constBegin() const noexcept
const_iterator constEnd() const noexcept
UiQualifiedId * typeArgument
UiQualifiedId * qualifiedTypeNameId
UiObjectInitializer * initializer
SourceLocation firstSourceLocation() const override
constexpr QStringView mid(qsizetype pos, qsizetype n=-1) const noexcept
Returns the substring of length length starting at position start in this object.
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QSet< QString >::iterator it
Combined button and popup list for selecting options.
std::function< QByteArray()> DependentTypesHasher
CodegenWarningInterface * defaultCodegenWarningInterface()
void tryGeneratingTranslationBindingBase(QStringView base, QQmlJS::AST::ArgumentList *args, RegisterMainString registerMainString, RegisterCommentString registerCommentString, RegisterContextString registerContextString, FinalizeTranslationData finalizeTranslationData)
#define Q_DECLARE_TR_FUNCTIONS(context)
static const QCssKnownValue properties[NumProperties - 1]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLboolean GLboolean GLboolean b
GLenum GLenum GLsizei count
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLenum GLenum GLsizei void GLsizei void * column
GLuint GLuint GLuint GLuint arg1
GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg3
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
static bool isSignalPropertyName(const QString &signalName)
QLatin1StringView QLatin1String
#define QStringLiteral(str)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_QML_COMPILER_PRIVATE_EXPORT
QT_BEGIN_NAMESPACE typedef uchar * output
QUrl url("example.com")
[constructor-url-reference]
QString stringForIndex(int index) const
int registerString(const QString &str)
CompiledFunctionOrExpression()
Object * objectAt(int i) const
QQmlJS::AST::UiProgram * program
QVector< Object * > objects
QString stringAt(int index) const
QV4::Compiler::Module jsModule
QV4::CompiledData::CompilationUnit javaScriptCompilationUnit
QV4::Compiler::JSUnitGenerator jsGenerator
int registerString(const QString &str)
QList< Pragma * > pragmas
QList< const QV4::CompiledData::Import * > imports
QQmlJS::Engine jsParserEngine
QV4::CompiledData::Location location
PoolList< EnumValue >::Iterator enumValuesEnd() const
PoolList< EnumValue > * enumValues
int enumValueCount() const
PoolList< EnumValue >::Iterator enumValuesBegin() const
QV4::CompiledData::Location location
const Parameter * formalsBegin() const
QV4::CompiledData::ParameterType returnType
QQmlJS::FixedPoolArray< Parameter > formals
const Parameter * formalsEnd() const
QVector< Object * > _objects
QList< const QV4::CompiledData::Import * > _imports
QList< Pragma * > _pragmas
bool defineQMLObject(int *objectIndex, QQmlJS::AST::UiObjectDefinition *node, Object *declarationsOverride=nullptr)
void throwRecursionDepthError() override
QString stringAt(int index) const
QQmlJS::MemoryPool * pool
QV4::CompiledData::TypeReferenceMap _typeReferences
Property * _propertyDeclaration
QList< QQmlJS::DiagnosticMessage > errors
QV4::Compiler::JSUnitGenerator * jsGenerator
quint32 registerString(const QString &str) const
QSet< QString > inlineComponentsNames
QSet< QString > illegalNames
QStringView textRefAt(const QQmlJS::SourceLocation &loc) const
bool hasFlag(QV4::CompiledData::Object::Flag flag) const
int indexOfDefaultPropertyOrAlias
PoolList< Property >::Iterator propertiesEnd() const
PoolList< Property >::Iterator propertiesBegin() const
int requiredPropertyExtraDataCount() const
PoolList< Signal >::Iterator signalsEnd() const
int inlineComponentCount() const
const quint32 * namedObjectsInComponentTable() const
PoolList< RequiredPropertyExtraData >::Iterator requiredPropertyExtraDataEnd() const
PoolList< Binding >::Iterator bindingsEnd() const
PoolList< Function >::Iterator functionsBegin() const
QV4::CompiledData::Location location
bool defaultPropertyIsAlias
Alias * firstAlias() const
PoolList< Function >::Iterator functionsEnd() const
PoolList< Alias >::Iterator aliasesBegin() const
PoolList< RequiredPropertyExtraData >::Iterator requiredPropertyExtraDataBegin() const
PoolList< Enum >::Iterator enumsEnd() const
Binding * firstBinding() const
const Property * firstProperty() const
const Enum * firstEnum() const
Object * declarationsOverride
int functionCount() const
PoolList< Enum >::Iterator enumsBegin() const
PoolList< CompiledFunctionOrExpression > * functionsAndExpressions
Binding * unlinkBinding(Binding *before, Binding *binding)
const RequiredPropertyExtraData * requiredPropertyExtraData() const
bool hasAliasAsDefaultProperty() const
PoolList< InlineComponent >::Iterator inlineComponentsEnd() const
PoolList< Signal >::Iterator signalsBegin() const
const Function * firstFunction() const
quint32 inheritedTypeNameIndex
PoolList< Binding >::Iterator bindingsBegin() const
PoolList< InlineComponent >::Iterator inlineComponentsBegin() const
const InlineComponent * inlineComponent() const
QQmlJS::FixedPoolArray< int > runtimeFunctionIndices
const Signal * firstSignal() const
QV4::CompiledData::Location locationOfIdProperty
QQmlJS::FixedPoolArray< quint32 > namedObjectsInComponent
int propertyCount() const
int namedObjectsInComponentCount() const
PoolList< Alias >::Iterator aliasesEnd() const
static bool initType(QV4::CompiledData::ParameterType *type, const IdGenerator &idGenerator, const QQmlJS::AST::Type *annotation)
static QV4::CompiledData::CommonType stringToBuiltinType(const QString &typeName)
std::forward_iterator_tag iterator_category
bool operator!=(const Iterator &rhs) const
ptrdiff_t difference_type
const T * operator->() const
bool operator==(const Iterator &rhs) const
const T & operator*() const
T * findSortedInsertionPoint(T *item) const
T * unlink(T *before, T *item)
T * slowAt(int index) const
void insertAfter(T *insertionPoint, T *item)
NativeMethodBehaviorValue nativeMethodBehavior
ComponentBehaviorValue componentBehavior
ValueTypeBehaviorValues::Int valueTypeBehavior
ListPropertyAssignBehaviorValue
Q_DECLARE_FLAGS(ValueTypeBehaviorValues, ValueTypeBehaviorValue)
QV4::CompiledData::Location location
FunctionSignatureBehaviorValue functionSignatureBehavior
ListPropertyAssignBehaviorValue listPropertyAssignBehavior
NativeMethodBehaviorValue
FunctionSignatureBehaviorValue
@ FunctionSignatureBehavior
@ ListPropertyAssignBehavior
int parameterCount() const
PoolList< Parameter > * parameters
PoolList< Parameter >::Iterator parametersEnd() const
QStringList parameterStringList(const QV4::Compiler::StringTableGenerator *stringPool) const
PoolList< Parameter >::Iterator parametersBegin() const
QV4::CompiledData::Location location