1// Copyright (C) 2016 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#ifndef QV4ECMAOBJECTS_P_H
4#define QV4ECMAOBJECTS_P_H
5
6//
7// W A R N I N G
8// -------------
9//
10// This file is not part of the Qt API. It exists purely as an
11// implementation detail. This header file may change from version to
12// version without notice, or even be removed.
13//
14// We mean it.
15//
16
17#include "qv4object_p.h"
18#include "qv4functionobject_p.h"
19#include <QtCore/qnumeric.h>
20
21QT_BEGIN_NAMESPACE
22
23namespace QV4 {
24
25namespace Heap {
26
27struct ObjectCtor : FunctionObject {
28 void init(QV4::ExecutionContext *scope);
29};
30
31}
32
33struct ObjectCtor: FunctionObject
34{
35 V4_OBJECT2(ObjectCtor, FunctionObject)
36
37 static ReturnedValue virtualCallAsConstructor(const FunctionObject *f, const Value *argv, int argc, const Value *);
38 static ReturnedValue virtualCall(const FunctionObject *m, const Value *thisObject, const Value *argv, int argc);
39};
40
41struct Q_QML_PRIVATE_EXPORT ObjectPrototype: Object
42{
43 void init(ExecutionEngine *engine, Object *ctor);
44
45 static ReturnedValue method_assign(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
46 static ReturnedValue method_create(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
47 static ReturnedValue method_defineProperties(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
48 static ReturnedValue method_defineProperty(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
49 static ReturnedValue method_entries(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
50 static ReturnedValue method_freeze(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
51 static ReturnedValue method_getOwnPropertyDescriptor(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
52 static ReturnedValue method_getOwnPropertyDescriptors(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
53 static ReturnedValue method_getOwnPropertyNames(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
54 static ReturnedValue method_getOwnPropertySymbols(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
55 static ReturnedValue method_getPrototypeOf(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
56 static ReturnedValue method_is(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
57 static ReturnedValue method_isExtensible(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
58 static ReturnedValue method_isFrozen(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
59 static ReturnedValue method_isSealed(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
60 static ReturnedValue method_keys(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
61 static ReturnedValue method_preventExtensions(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
62 static ReturnedValue method_seal(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
63 static ReturnedValue method_setPrototypeOf(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
64 static ReturnedValue method_values(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
65
66 static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
67 static ReturnedValue method_toLocaleString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
68 static ReturnedValue method_valueOf(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
69 static ReturnedValue method_hasOwnProperty(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
70 static ReturnedValue method_isPrototypeOf(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
71 static ReturnedValue method_propertyIsEnumerable(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
72
73 static ReturnedValue method_defineGetter(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
74 static ReturnedValue method_defineSetter(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
75
76 static ReturnedValue method_get_proto(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
77 static ReturnedValue method_set_proto(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
78
79 static void toPropertyDescriptor(ExecutionEngine *engine, const Value &v, Property *desc, PropertyAttributes *attrs);
80 static ReturnedValue fromPropertyDescriptor(ExecutionEngine *engine, const Property *desc, PropertyAttributes attrs);
81
82 static Heap::ArrayObject *getOwnPropertyNames(ExecutionEngine *v4, const Value &o);
83};
84
85
86}
87
88QT_END_NAMESPACE
89
90#endif // QV4ECMAOBJECTS_P_H
91

source code of qtdeclarative/src/qml/jsruntime/qv4objectproto_p.h