9#include "private/qv4engine_p.h"
10#include "private/qv4mm_p.h"
11#include "private/qv4errorobject_p.h"
12#include "private/qv4globalobject_p.h"
13#include "private/qv4script_p.h"
14#include "private/qv4runtime_p.h"
15#include <private/qv4dateobject_p.h>
16#include <private/qqmlbuiltinfunctions_p.h>
17#include <private/qqmldebugconnector_p.h>
18#include <private/qv4qobjectwrapper_p.h>
19#include <private/qv4qmetaobjectwrapper_p.h>
20#include <private/qv4stackframe_p.h>
21#include <private/qv4module_p.h>
22#include <private/qv4symbol_p.h>
24#include <QtCore/qdatetime.h>
25#include <QtCore/qmetaobject.h>
26#include <QtCore/qstringlist.h>
27#include <QtCore/qvariant.h>
28#include <QtCore/qdatetime.h>
30#include <QtCore/qcoreapplication.h>
31#include <QtCore/qdir.h>
32#include <QtCore/qfile.h>
33#include <QtCore/qfileinfo.h>
34#include <QtCore/qpluginloader.h>
38#include <private/qqmlglobal_p.h>
327 qFatal(
"QJSEngine: Must construct a QCoreApplication before a QJSEngine");
359 , m_v4Engine(new
QV4::ExecutionEngine(
this))
423 if (otherEngine && otherEngine != m_v4Engine) {
424 qWarning(
"QJSEngine: Trying to install extensions from a different engine");
449 m_v4Engine->isInterrupted.storeRelaxed(interrupted);
460 return m_v4Engine->isInterrupted.loadRelaxed();
532 if (exceptionStackTrace)
533 exceptionStackTrace->clear();
537 if (exceptionStackTrace) {
547 if (v4->isInterrupted.loadRelaxed())
578 const auto module = m_v4Engine->loadModule(url);
583 if (
const auto compiled = module.compiled) {
587 compiled->evaluate();
588 if (!m_v4Engine->isInterrupted.loadRelaxed())
749 if (!ddata || !ddata->explicitIndestructibleSet)
831 switch (
value.type()) {
846 Q_UNREACHABLE_RETURN(
false);
862 if (metaType == QMetaType::fromType<bool>()) {
863 *
reinterpret_cast<bool*
>(
ptr) =
string.
size() != 0;
866 if (metaType == QMetaType::fromType<QString>()) {
870 if (metaType == QMetaType::fromType<QUrl>()) {
876 switch (metaType.
id()) {
880 case QMetaType::UInt:
883 case QMetaType::Long:
886 case QMetaType::ULong:
889 case QMetaType::LongLong:
892 case QMetaType::ULongLong:
895 case QMetaType::Double:
896 *
reinterpret_cast<double*
>(
ptr) =
d;
898 case QMetaType::Float:
899 *
reinterpret_cast<float*
>(
ptr) =
d;
901 case QMetaType::Short:
904 case QMetaType::UShort:
907 case QMetaType::Char:
910 case QMetaType::UChar:
913 case QMetaType::QChar:
916 case QMetaType::Char16:
931 return convertString(*
string, metaType,
ptr);
946bool QJSEngine::convertMetaType(
QMetaType fromType,
const void *from,
QMetaType toType,
void *to)
1218 return d->uiLanguage;
1264 if (!
data ||
data->jsWrapper.isNullOrUndefined())
1266 return data->jsWrapper.engine()->jsEngine();
1323 ddata->indestructible = (ownership ==
CppOwnership)?
true:
false;
1324 ddata->explicitIndestructibleSet =
true;
1346#include "moc_qjsengine.cpp"
static QCoreApplication * instance() noexcept
Returns a pointer to the application's QCoreApplication (or QGuiApplication/QApplication) instance.
\inmodule QtCore\reentrant
\inmodule QtCore \reentrant
~QJSEnginePrivate() override
static QJSEnginePrivate * get(QJSEngine *e)
static void addToDebugServer(QJSEngine *q)
static void removeFromDebugServer(QJSEngine *q)
The QJSEngine class provides an environment for evaluating JavaScript code.
QV4::ExecutionEngine * handle() const
static ObjectOwnership objectOwnership(QObject *)
Returns the ownership of object.
void throwError(const QString &message)
Throws a run-time error (exception) with the given message.
QJSValue globalObject() const
Returns this engine's Global Object.
bool hasError() const
Returns true if the last JavaScript execution resulted in an exception or if throwError() was called.
QJSValue newObject()
Creates a JavaScript object of class Object.
QJSValue newQObject(QObject *object)
Creates a JavaScript object that wraps the given QObject object, using JavaScriptOwnership.
QJSValue newArray(uint length=0)
Creates a JavaScript object of class Array with the given length.
void setInterrupted(bool interrupted)
bool registerModule(const QString &moduleName, const QJSValue &value)
Registers a QJSValue to serve as a module.
QJSValue catchError()
If an exception is currently pending, catches it and returns it as a QJSValue.
QJSValue evaluate(const QString &program, const QString &fileName=QString(), int lineNumber=1, QStringList *exceptionStackTrace=nullptr)
Evaluates program, using lineNumber as the base line number, and returns the result of the evaluation...
QJSValue newErrorObject(QJSValue::ErrorType errorType, const QString &message=QString())
QJSValue importModule(const QString &fileName)
Imports the module located at fileName and returns a module namespace object that contains all export...
void installExtensions(Extensions extensions, const QJSValue &object=QJSValue())
~QJSEngine() override
Destroys this QJSEngine.
bool isInterrupted() const
void setUiLanguage(const QString &language)
static void setObjectOwnership(QObject *, ObjectOwnership)
Sets the ownership of object.
void collectGarbage()
Runs the garbage collector.
QJSValue newQMetaObject()
QJSValue newSymbol(const QString &name)
QString uiLanguage
the language to be used for translating user interface strings
ObjectOwnership
ObjectOwnership controls whether or not the JavaScript memory manager automatically destroys the QObj...
QJSEngine * qjsEngine(const QObject *object)
QJSEngine()
Constructs a QJSEngine object.
The QJSPrimitiveValue class operates on primitive types in JavaScript semantics.
static QJSValue fromReturnedValue(QV4::ReturnedValue d)
static QV4::ExecutionEngine * engine(const QJSValue *jsval)
static QV4::ReturnedValue asReturnedValue(const QJSValue *jsval)
static const QString * asQString(const QJSValue *jsval)
The QJSValue class acts as a container for Qt/JavaScript data types.
QString arg(Args &&...args) const
static QQmlData * get(QObjectPrivate *priv, bool create)
static QQmlDebugConnector * instance()
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
static QUrl fromLocalFile(const QString &localfile)
Returns a QUrl representation of localFile, interpreted as a local file.
void setScheme(const QString &scheme)
Sets the scheme of the URL to scheme.
void setPath(const QString &path, ParsingMode mode=DecodedMode)
Sets the path of the URL to path.
static QUrl urlForFileName(const QString &fileName)
static QT_BEGIN_NAMESPACE void checkForApplicationInstance()
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 return DBusPendingCall DBusPendingCall return DBusPendingCall return dbus_int32_t return DBusServer * server
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
static ControlElement< T > * ptr(QWidget *widget)
constexpr T qAbs(const T &t)
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLsizei const GLchar * message
GLdouble GLdouble GLdouble GLdouble q
QLatin1StringView QLatin1String
#define QStringLiteral(str)
QUrl url("example.com")
[constructor-url-reference]
obj metaObject() -> className()
char * toString(const MyType &t)
[31]
\inmodule QtCore \reentrant
static QDate dateTimeToDate(const QDateTime &dateTime)
static QString dateTimeToString(const QDateTime &dateTime, ExecutionEngine *engine)
static double dateTimeToNumber(const QDateTime &dateTime)
MemoryManager * memoryManager
CppStackFrame * currentStackFrame
static bool metaTypeFromJS(const Value &value, QMetaType type, void *data)
ExecutionContext * rootContext() const
Heap::Object * newURIErrorObject(const QString &message)
ReturnedValue throwError(const Value &value)
Heap::Object * newSyntaxErrorObject(const QString &message, const QString &fileName, int line, int column)
Heap::Object * newEvalErrorObject(const QString &message)
Heap::Object * newObject()
QV4::ReturnedValue metaTypeToJS(QMetaType type, const void *data)
QJSEngine * jsEngine() const
static QJSPrimitiveValue createPrimitive(const Value &v)
Heap::Object * newReferenceErrorObject(const QString &message)
Heap::Object * newRangeErrorObject(const QString &message)
Heap::ArrayObject * newArrayObject(int count=0)
Heap::Object * newTypeErrorObject(const QString &message)
QV4::Value * registerNativeModule(const QUrl &url, const QV4::Value &module)
ReturnedValue catchException(StackTrace *trace=nullptr)
Heap::Object * newErrorObject(const Value &value)
static void init(Object *globalObject, QJSEngine::Extensions extensions)
static QString objectToString(ExecutionEngine *engine, const QMetaObject *metaObject, QObject *object)
static ReturnedValue wrap(ExecutionEngine *engine, QObject *object)
static double stringToNumber(const QString &s)
bool hasException() const
ReturnedValue run(const QV4::Value *thisObject=nullptr)
static V4_NEEDS_DESTROY Heap::Symbol * create(ExecutionEngine *e, const QString &s)
static constexpr Value fromInt32(int i)
unsigned int toUInt32() const
static constexpr Value fromBoolean(bool b)
static constexpr Value undefinedValue()
static Value fromDouble(double d)
static constexpr Value nullValue()