Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qv4arraybuffer_p.h
Go to the documentation of this file.
1
// Copyright (C) 2018 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant
4
#
ifndef
QV4ARRAYBUFFER_H
5
#
define
QV4ARRAYBUFFER_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
"qv4object_p.h"
19
#
include
"qv4functionobject_p.h"
20
#
include
<
QtCore
/
qarraydatapointer
.
h
>
21
22
QT_BEGIN_NAMESPACE
23
24
namespace
QV4
{
25
26
namespace
Heap
{
27
28
struct
SharedArrayBufferCtor
:
FunctionObject
{
29
void
init
(
QV4
::ExecutionEngine *engine);
30
};
31
32
struct
ArrayBufferCtor
:
SharedArrayBufferCtor
{
33
void
init
(
QV4
::ExecutionEngine *engine);
34
};
35
36
struct
Q_QML_EXPORT
SharedArrayBuffer
:
Object
{
37
void
init
(
size_t
length
);
38
void
init
(
const
QByteArray
&
array
);
39
void
destroy
();
40
41
void
setSharedArrayBuffer
(
bool
shared
)
noexcept
{
isShared
=
shared
; }
42
bool
isSharedArrayBuffer
()
const
noexcept
{
return
isShared
; }
43
44
char
*
arrayData
()
noexcept
{
return
arrayDataPointer
().
data
(); }
45
const
char
*
constArrayData
()
const
noexcept
{
return
constArrayDataPointer
().
data
(); }
46
uint
arrayDataLength
()
const
noexcept
{
return
constArrayDataPointer
().
size
; }
47
48
bool
hasSharedArrayData
()
const
noexcept
{
return
constArrayDataPointer
().
isShared
(); }
49
bool
hasDetachedArrayData
()
const
noexcept
{
return
constArrayDataPointer
().
isNull
(); }
50
void
detachArrayData
()
noexcept
{
arrayDataPointer
().
clear
(); }
51
52
bool
arrayDataNeedsDetach
()
const
noexcept
{
return
constArrayDataPointer
().
needsDetach
(); }
53
54
private
:
55
const
QArrayDataPointer
<
const
char
> &
constArrayDataPointer
()
const
noexcept
56
{
57
return
*
reinterpret_cast
<
const
QArrayDataPointer
<
const
char
> *>(&
arrayDataPointerStorage
);
58
}
59
QArrayDataPointer
<
char
> &
arrayDataPointer
()
noexcept
60
{
61
return
*
reinterpret_cast
<
QArrayDataPointer
<
char
> *>(&
arrayDataPointerStorage
);
62
}
63
64
template
<
typename
T
>
65
struct
storage_t
{
alignas
(
T
)
unsigned
char
data
[
sizeof
(
T
)]; };
66
67
storage_t
<
QArrayDataPointer
<
char
>>
68
arrayDataPointerStorage
;
69
bool
isShared
;
70
};
71
72
struct
Q_QML_EXPORT
ArrayBuffer
:
SharedArrayBuffer
{
73
void
init
(
size_t
length
) {
74
SharedArrayBuffer
::
init
(
length
);
75
setSharedArrayBuffer
(
false
);
76
}
77
void
init
(
const
QByteArray
&
array
) {
78
SharedArrayBuffer
::
init
(
array
);
79
setSharedArrayBuffer
(
false
);
80
}
81
};
82
83
}
84
85
struct
SharedArrayBufferCtor
:
FunctionObject
86
{
87
V4_OBJECT2(
SharedArrayBufferCtor
, FunctionObject)
88
89
static
ReturnedValue
virtualCallAsConstructor
(
const
FunctionObject *f,
const
Value *argv,
int
argc,
const
Value *);
90
static
ReturnedValue
virtualCall
(
const
FunctionObject *f,
const
Value *thisObject,
const
Value *argv,
int
argc);
91
};
92
93
struct
ArrayBufferCtor
:
SharedArrayBufferCtor
94
{
95
V4_OBJECT2(
ArrayBufferCtor
,
SharedArrayBufferCtor
)
96
97
static
ReturnedValue
virtualCallAsConstructor
(
const
FunctionObject *f,
const
Value *argv,
int
argc,
const
Value *);
98
99
static
ReturnedValue
method_isView
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
100
};
101
102
struct
Q_QML_EXPORT
SharedArrayBuffer
:
Object
103
{
104
V4_OBJECT2
(
SharedArrayBuffer
,
Object
)
105
V4_NEEDS_DESTROY
106
V4_PROTOTYPE
(
sharedArrayBufferPrototype
)
107
108
QByteArray
asByteArray
()
const
;
109
110
uint
arrayDataLength
()
const
{
return
d
()->
arrayDataLength
(); }
111
char
*
arrayData
() {
return
d
()->
arrayData
(); }
112
const
char
*
constArrayData
()
const
{
return
d
()->
constArrayData
(); }
113
114
bool
hasSharedArrayData
() {
return
d
()->
hasSharedArrayData
(); }
115
bool
hasDetachedArrayData
()
const
{
return
d
()->
hasDetachedArrayData
(); }
116
bool
isSharedArrayBuffer
()
const
{
return
d
()->
isSharedArrayBuffer
(); }
117
};
118
119
struct
Q_QML_EXPORT
ArrayBuffer
:
SharedArrayBuffer
120
{
121
V4_OBJECT2
(
ArrayBuffer
,
SharedArrayBuffer
)
122
V4_NEEDS_DESTROY
123
V4_PROTOTYPE
(
arrayBufferPrototype
)
124
125
QByteArray
asByteArray
()
const
;
126
uint
arrayDataLength
()
const
{
return
d
()->
arrayDataLength
(); }
127
char
*
dataData
() {
if
(
d
()->
arrayDataNeedsDetach
())
detach
();
return
d
()->
arrayData
(); }
128
// ### is that detach needed?
129
const
char
*
constArrayData
()
const
{
return
d
()->
constArrayData
(); }
130
bool
hasSharedArrayData
() {
return
d
()->
hasSharedArrayData
(); }
131
void
detachArrayData
() {
d
()->
detachArrayData
(); }
132
133
void
detach
();
134
};
135
136
struct
SharedArrayBufferPrototype
:
Object
137
{
138
void
init
(ExecutionEngine *engine, Object *ctor);
139
140
static
ReturnedValue
method_get_byteLength
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
141
static
ReturnedValue
method_slice
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
142
143
static
ReturnedValue
slice
(
const
FunctionObject *b,
const
Value *thisObject,
const
Value *argv,
int
argc,
bool
shared);
144
};
145
146
struct
ArrayBufferPrototype
:
SharedArrayBufferPrototype
147
{
148
void
init
(ExecutionEngine *engine, Object *ctor);
149
150
static
ReturnedValue
method_get_byteLength
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
151
static
ReturnedValue
method_slice
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
152
static
ReturnedValue
method_toString
(
const
FunctionObject *,
const
Value *thisObject,
const
Value *argv,
int
argc);
153
};
154
155
156
}
// namespace QV4
157
158
QT_END_NAMESPACE
159
160
#
endif
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QV4::Heap
Definition
qv4compileddata_p.h:76
QV4
Definition
qjsvalue.h:24
DEFINE_OBJECT_VTABLE
DEFINE_OBJECT_VTABLE(SharedArrayBufferCtor)
DEFINE_OBJECT_VTABLE
DEFINE_OBJECT_VTABLE(ArrayBufferCtor)
DEFINE_OBJECT_VTABLE
DEFINE_OBJECT_VTABLE(ArrayBuffer)
DEFINE_OBJECT_VTABLE
DEFINE_OBJECT_VTABLE(SharedArrayBuffer)
V4_NEEDS_DESTROY
#define V4_NEEDS_DESTROY
Definition
qv4managed_p.h:40
RETURN_UNDEFINED
#define RETURN_UNDEFINED()
Definition
qv4scopedvalue_p.h:48
QV4::ArrayBufferCtor
Definition
qv4arraybuffer_p.h:94
QV4::ArrayBufferCtor::virtualCallAsConstructor
static ReturnedValue virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *)
Definition
qv4arraybuffer.cpp:56
QV4::ArrayBufferCtor::method_isView
static ReturnedValue method_isView(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:82
QV4::ArrayBufferPrototype
Definition
qv4arraybuffer_p.h:147
QV4::ArrayBufferPrototype::method_get_byteLength
static ReturnedValue method_get_byteLength(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:222
QV4::ArrayBufferPrototype::method_toString
static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:239
QV4::ArrayBufferPrototype::method_slice
static ReturnedValue method_slice(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:234
QV4::ArrayBufferPrototype::init
void init(ExecutionEngine *engine, Object *ctor)
Definition
qv4arraybuffer.cpp:205
QV4::Heap::ArrayBufferCtor
Definition
qv4arraybuffer_p.h:32
QV4::Heap::ArrayBufferCtor::init
void init(QV4::ExecutionEngine *engine)
Definition
qv4arraybuffer.cpp:25
QV4::Heap::SharedArrayBufferCtor
Definition
qv4arraybuffer_p.h:28
QV4::Heap::SharedArrayBufferCtor::init
void init(QV4::ExecutionEngine *engine)
Definition
qv4arraybuffer.cpp:20
QV4::SharedArrayBufferCtor
Definition
qv4arraybuffer_p.h:86
QV4::SharedArrayBufferCtor::virtualCall
static ReturnedValue virtualCall(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:50
QV4::SharedArrayBufferCtor::virtualCallAsConstructor
static ReturnedValue virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *)
Definition
qv4arraybuffer.cpp:30
QV4::SharedArrayBufferPrototype
Definition
qv4arraybuffer_p.h:137
QV4::SharedArrayBufferPrototype::init
void init(ExecutionEngine *engine, Object *ctor)
Definition
qv4arraybuffer.cpp:141
QV4::SharedArrayBufferPrototype::method_get_byteLength
static ReturnedValue method_get_byteLength(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:156
QV4::SharedArrayBufferPrototype::method_slice
static ReturnedValue method_slice(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
Definition
qv4arraybuffer.cpp:165
QV4::SharedArrayBufferPrototype::slice
static ReturnedValue slice(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc, bool shared)
Definition
qv4arraybuffer.cpp:170
qtdeclarative
src
qml
jsruntime
qv4arraybuffer_p.h
Generated on
for Qt by
1.18.0