7#include <QtCore/QBuffer>
8#include <QtCore/QStringList>
23 buffer.replace(
'\\',
"\\\\").replace(
'"',
"\\\"");
31 return string.visit([](
auto data) {
40 , m_pendingLineLength(0)
41 , m_maybeOneline(
false)
58 m_stream->
write(
"import ");
65 m_stream->
write(
" as ");
68 m_stream->
write(
"\n");
73 flushPotentialLinesWithNewlines();
76 m_stream->
write(
" {");
78 m_maybeOneline =
true;
85 for (
int i = 0;
i < m_pendingLines.
size(); ++
i) {
88 if (
i != m_pendingLines.
size() - 1)
93 m_stream->
write(
" }\n");
95 m_stream->
write(
"}\n");
97 m_pendingLines.
clear();
98 m_pendingLineLength = 0;
99 m_maybeOneline =
false;
101 flushPotentialLinesWithNewlines();
104 m_stream->
write(
"}\n");
115 writePotentialLine(
buffer);
133template<
typename String,
typename ElementHandler>
134void QQmlJSStreamWriter::doWriteArrayBinding(
137 flushPotentialLinesWithNewlines();
145 singleLine += handler(element);
151 if (singleLine.size() + m_indentDepth * 4 < 80) {
152 m_stream->
write(singleLine);
158 m_stream->
write(
": [\n");
163 const auto handled = handler(element);
164 m_stream->write(handled.data(), handled.length());
167 m_stream->
write(
",\n");
169 m_stream->
write(
"\n");
174 m_stream->
write(
"]\n");
190 flushPotentialLinesWithNewlines();
197 flushPotentialLinesWithNewlines();
200 m_stream->
write(
": {\n");
202 for (
int i = 0,
end = keyValue.size();
i !=
end; ++
i) {
204 const auto &
entry = keyValue[
i];
206 m_stream->
write(
": ");
209 m_stream->
write(
",\n");
211 m_stream->
write(
"\n");
215 m_stream->
write(
"}\n");
218void QQmlJSStreamWriter::writeIndent()
220 for (
int i = 0;
i < m_indentDepth; ++
i)
221 m_stream->
write(
" ");
224void QQmlJSStreamWriter::writePotentialLine(
const QByteArray &
line)
228 if (m_pendingLineLength >= 80) {
229 flushPotentialLinesWithNewlines();
233void QQmlJSStreamWriter::flushPotentialLinesWithNewlines()
236 m_stream->
write(
"\n");
240 m_stream->
write(
"\n");
242 m_pendingLines.
clear();
243 m_pendingLineLength = 0;
244 m_maybeOneline =
false;
\inmodule QtCore \reentrant
constexpr qsizetype length() const noexcept
constexpr bool isEmpty() const noexcept
constexpr const_pointer data() const noexcept
QByteArray trimmed() const &
qsizetype length() const noexcept
Same as size().
static QByteArray number(int, int base=10)
Returns a byte-array representing the whole number n as text.
virtual bool open(QIODeviceBase::OpenMode mode)
Opens the device and sets its OpenMode to mode.
qint64 write(const char *data, qint64 len)
Writes at most maxSize bytes of data from data to the device.
qsizetype size() const noexcept
bool isEmpty() const noexcept
const_reference at(qsizetype i) const noexcept
void append(parameter_type t)
void writeStringListBinding(QByteArrayView name, const QList< QAnyStringView > &elements)
void write(QByteArrayView data)
void writeEnumObjectLiteralBinding(QByteArrayView name, const QList< QPair< QAnyStringView, int > > &keyValue)
void writeLibraryImport(QByteArrayView uri, int majorVersion, int minorVersion, QByteArrayView as={})
void writeArrayBinding(QByteArrayView name, const QByteArrayList &elements)
QQmlJSStreamWriter(QByteArray *array)
void writeScriptBinding(QByteArrayView name, QByteArrayView rhs)
void writeStartDocument()
void writeStartObject(QByteArrayView component)
void writeBooleanBinding(QByteArrayView name, bool value)
void writeStringBinding(QByteArrayView name, QAnyStringView value)
void writeNumberBinding(QByteArrayView name, qint64 value)
qsizetype size() const
Returns the number of characters in this string.
auto processAsUtf8(StringView string, Handler &&handler)
Combined button and popup list for selecting options.
std::pair< T1, T2 > QPair
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLuint GLenum GLsizei length
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
static qreal component(const QPointF &point, unsigned int i)
static QT_BEGIN_NAMESPACE QByteArray enquoteByteArray(QByteArrayView string)
static QByteArray enquoteAnyString(QAnyStringView string)
static const QTextHtmlElement elements[Html_NumElements]