4#ifndef QV4URLOBJECT_P_H
5#define QV4URLOBJECT_P_H
21#include <QtCore/QString>
28#define UrlObjectMembers(class, Member)
31 DECLARE_MARKOBJECTS(UrlObject)
37 void init(
const QUrl &url)
39 new (&m_url) QUrl(url);
45 std::destroy_at<QUrl>(
reinterpret_cast<QUrl *>(&m_url));
48 QUrl url()
const {
return *
reinterpret_cast<
const QUrl *>(&m_url); }
49 void setUrl(QUrl &&url) { *
reinterpret_cast<QUrl *>(&m_url) = std::move(url); }
51 static constexpr auto alignment =
alignof(QUrl);
52 alignas(alignment)
std::byte m_url[
sizeof(QUrl)];
57 void init(ExecutionEngine *engine);
61#define UrlSearchParamsObjectMembers(class, Member)
62 Member(class, Pointer, ArrayObject *, params)
63 Member(class, Pointer, ArrayObject *, keys)
64 Member(class, Pointer, ArrayObject *, values)
65 Member(class, Pointer, UrlObject *, url)
70 DECLARE_MARKOBJECTS(UrlSearchParamsObject)
71 void init() { Object::init(); }
76 void init(ExecutionEngine *engine);
85 V4_PROTOTYPE(urlPrototype)
96 const QUrl url = constD()->url();
97 const int port = url.port();
98 return port == -1 ? url.host() : (url.host() + QLatin1Char(
':') + QString::number(port));
100 bool setHost(
const QString &host);
104 const QUrl url = constD()->url();
105 return url.isValid() ? url.host() : QString();
111 return constD()->url().toString(QUrl::ComponentFormattingOption::FullyEncoded);
113 bool setHref(
const QString &href);
117 const auto resolve = [](
const QUrl &url) {
118 const QString proto = url.scheme();
119 if (proto != QLatin1String(
"http") && proto != QLatin1String(
"https")
120 && proto != QLatin1String(
"ftp")) {
124 if (
const int port = url.port(); port != -1)
125 return QLatin1String(
"%1://%2:%3").arg(proto, url.host(), QString::number(port));
127 return QLatin1String(
"%1://%2").arg(proto, url.host());
130 const QUrl url = constD()->url();
133 return url.scheme() == QLatin1String(
"blob") ? resolve(QUrl(url.path())) : resolve(url);
136 QString
password()
const {
return constD()->url().password(); }
139 QString
pathname()
const {
return constD()->url().path(); }
144 const int port = constD()->url().port();
145 return port == -1 ? QString() : QString::number(port);
147 bool setPort(
const QString &port);
149 QString
protocol()
const {
return constD()->url().scheme() + QLatin1Char(
':'); }
152 Q_QML_AUTOTEST_EXPORT QString
search()
const;
155 QString
username()
const {
return constD()->url().userName(); }
162 void setUrl(
const QUrl &url);
165 const Heap::UrlObject *constD()
const {
return d(); }
168 bool updateUrl(F &&f) {
169 QUrl url = d()->url();
174 d()->setUrl(
std::move(url));
189 V4_OBJECT2(
UrlCtor, FunctionObject)
197 V4_PROTOTYPE(objectPrototype)
202 const Value *argv,
int argc);
204 const Value *argv,
int argc);
207 const Value *argv,
int argc);
209 const Value *argv,
int argc);
212 const Value *argv,
int argc);
214 const Value *argv,
int argc);
217 const Value *argv,
int argc);
219 const Value *argv,
int argc);
222 const Value *argv,
int argc);
225 const Value *argv,
int argc);
227 const Value *argv,
int argc);
230 const Value *argv,
int argc);
232 const Value *argv,
int argc);
235 const Value *argv,
int argc);
237 const Value *argv,
int argc);
240 const Value *argv,
int argc);
242 const Value *argv,
int argc);
245 const Value *argv,
int argc);
247 const Value *argv,
int argc);
250 const Value *argv,
int argc);
252 const Value *argv,
int argc);
255 const Value *argv,
int argc);
262 V4_PROTOTYPE(urlSearchParamsPrototype)
270 void setParams(QList<QStringList> params);
276 QString
nameAt(
int index)
const;
278 QString
valueAt(
int index)
const;
283 int indexOf(QString name,
int last = -1)
const;
286 using Object::getOwnProperty;
291 QString stringAt(
int index,
int pairIndex)
const;
292 Heap::String * stringAtRaw(
int index,
int pairIndex)
const;
313 V4_PROTOTYPE(objectPrototype)
318 const Value *argv,
int argc);
320 const Value *argv,
int argc);
322 const Value *argv,
int argc);
324 const Value *argv,
int argc);
326 const Value *argv,
int argc);
328 const Value *argv,
int argc);
330 const Value *argv,
int argc);
332 const Value *argv,
int argc);
334 const Value *argv,
int argc);
336 const Value *argv,
int argc);
338 const Value *argv,
int argc);
340 const Value *argv,
int argc);
Combined button and popup list for selecting options.
DECLARE_HEAP_OBJECT(UrlSearchParamsObject, Object)
DECLARE_HEAP_OBJECT(UrlObject, Object)
Scoped< Object > ScopedObject
Scoped< ArrayObject > ScopedArrayObject
#define Q_MANAGED_TYPE(type)
DEFINE_OBJECT_VTABLE(UrlCtor)
DEFINE_OBJECT_VTABLE(UrlSearchParamsObject)
DEFINE_OBJECT_VTABLE(UrlSearchParamsCtor)
static bool checkSearchParamsType(ExecutionEngine *v4, const Scoped< UrlSearchParamsObject > &o)
static bool checkUrlObjectType(ExecutionEngine *v4, const Scoped< UrlObject > &r)
DEFINE_OBJECT_VTABLE(UrlObject)
void init(ExecutionEngine *engine)
void init(ExecutionEngine *engine)
bool setPathname(const QString &pathname)
bool setProtocol(const QString &protocol)
bool setHost(const QString &host)
void setUrl(const QUrl &url)
bool setSearch(const QString &search)
bool setHostname(const QString &hostname)
bool setHref(const QString &href)
bool setUsername(const QString &username)
bool setPort(const QString &port)
bool setPassword(const QString &password)
static ReturnedValue method_getPathname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getPort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getSearchParams(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setProtocol(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getUsername(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getProtocol(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHostname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHref(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setSearch(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHash(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHost(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getPassword(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getOrigin(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setUsername(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getSearch(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPassword(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHost(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHostname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHref(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPathname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHash(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
void setParams(QList< QStringList > params)
QString valueAt(int index) const
void initializeParams(ScopedArrayObject ¶ms)
QList< QStringList > params() const
Heap::UrlObject * urlObject() const
int indexOf(QString name, int last=-1) const
QString searchString() const
void initializeParams(QString params)
Heap::String * nameAtRaw(int index) const
void append(Heap::String *name, Heap::String *value)
Heap::String * valueAtRaw(int index) const
void setUrlObject(const UrlObject *url)
static OwnPropertyKeyIterator * virtualOwnPropertyKeys(const Object *m, Value *target)
QString nameAt(int index) const
void initializeParams(ScopedObject ¶ms)
static PropertyAttributes virtualGetOwnProperty(const Managed *m, PropertyKey id, Property *p)
static ReturnedValue method_keys(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_forEach(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_get(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_sort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_delete(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getAll(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_append(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_has(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_set(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_entries(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_values(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)