19#include <private/qtqmlglobal_p.h>
20#include <private/qv4value_p.h>
21#include <private/qv4string_p.h>
22#include <private/qv4engine_p.h>
23#include <private/qv4mm_p.h>
24#include <private/qv4persistent_p.h>
26#include <QtCore/qthread.h>
32 static constexpr quint64 s_tagBits = 3;
33 static constexpr quint64 s_tagMask = (1 << s_tagBits) - 1;
35 static constexpr quint64 s_pointerBit = 0x1;
58#if QT_POINTER_SIZE == 4
62 return reinterpret_cast<void *
>(raw >> 32);
79 return reinterpret_cast<void *
>(raw & ~s_tagMask);
112 return (uintValue <
uint(std::numeric_limits<int>::max()))
114 :
encode(
double(uintValue));
131 return static_cast<double *
>(
pointer(
v));
147 switch (qv4Value.
type()) {
154 ->memoryManager->m_persistentValues->allocate();
201 return value->as<T>();
220 switch (
tag(jsval->d)) {
251 switch (
tag(jsval->d)) {
272 jsval->d =
encode(std::move(
s));
302 return e->newString(*string)->asReturnedValue();
303 if (
const QV4::Value *
val = asManagedType<QV4::Managed>(&jsval)) {
305 return val->asReturnedValue();
307 qWarning(
"JSValue can't be reassigned to another engine.");
326 return !v4 || v4 ==
e;
331 switch (
tag(jsval->d)) {
The QJSEngine class provides an environment for evaluating JavaScript code.
static quint64 encode(bool boolValue)
static QJSValue fromReturnedValue(QV4::ReturnedValue d)
static void setString(QJSValue *jsval, QString s)
static bool boolValue(quint64 v)
static QV4::Value * qv4ValuePtr(quint64 v)
static int intValue(quint64 v)
static double * doublePtr(quint64 v)
static bool checkEngine(QV4::ExecutionEngine *e, const QJSValue &jsval)
static QV4::ExecutionEngine * engine(const QJSValue *jsval)
static quint64 encodePointer(void *pointer, Kind tag)
static QV4::Value * takeManagedValue(QJSValue *jsval)
static QV4::ReturnedValue asReturnedValue(const QJSValue *jsval)
static const QString * asQString(const QJSValue *jsval)
static quint64 encodeNull()
static constexpr quint64 s_minAlignment
static QString * qStringPtr(quint64 v)
static QV4::ReturnedValue convertToReturnedValue(QV4::ExecutionEngine *e, const QJSValue &jsval)
static quint64 encode(const QV4::Value &qv4Value)
static void adoptPersistentValue(QJSValue *jsval, QV4::Value *v)
static QV4::ReturnedValue asPrimitiveType(const QJSValue *jsval)
static void setValue(QJSValue *jsval, const QV4::Value &v)
static void manageStringOnV4Heap(QV4::ExecutionEngine *e, QJSValue *jsval)
static quint64 encode(int intValue)
static const T * asManagedType(const QJSValue *jsval)
static quint64 encode(double doubleValue)
static void * pointer(quint64 raw)
static quint64 encode(QString stringValue)
static quint64 encodeUndefined()
static quint64 encode(QLatin1String stringValue)
static void free(QJSValue *jsval)
static quint64 encode(uint uintValue)
static Kind tag(quint64 raw)
The QJSValue class acts as a container for Qt/JavaScript data types.
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QThread * currentThread()
Combined button and popup list for selecting options.
AudioChannelLayoutTag tag
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
GLsizei const void * pointer
GLsizei const GLchar *const * string
[0]
unsigned long long quint64
static constexpr ReturnedValue undefined()
static constexpr ReturnedValue null()
static ExecutionEngine * getEngine(const Value *v)
static void free(Value *v)
constexpr ReturnedValue asReturnedValue() const
QV4_NEARLY_ALWAYS_INLINE double doubleValue() const
bool booleanValue() const
static Value fromHeapObject(HeapBasePtr m)