1// qxmlstream.sip generated by MetaSIP
2//
3// This file is part of the QtCore Python extension module.
4//
5// Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
6//
7// This file is part of PyQt5.
8//
9// This file may be used under the terms of the GNU General Public License
10// version 3.0 as published by the Free Software Foundation and appearing in
11// the file LICENSE included in the packaging of this file.  Please review the
12// following information to ensure the GNU General Public License version 3.0
13// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
14//
15// If you do not wish to use this file under the terms of the GPL version 3.0
16// then you may purchase a commercial license.  For more information contact
17// info@riverbankcomputing.com.
18//
19// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
20// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21
22
23class QXmlStreamAttribute
24{
25%TypeHeaderCode
26#include <qxmlstream.h>
27%End
28
29public:
30    QXmlStreamAttribute();
31    QXmlStreamAttribute(const QString &qualifiedName, const QString &value);
32    QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value);
33    QXmlStreamAttribute(const QXmlStreamAttribute &);
34    ~QXmlStreamAttribute();
35    QStringRef namespaceUri() const;
36    QStringRef name() const;
37    QStringRef qualifiedName() const;
38    QStringRef prefix() const;
39    QStringRef value() const;
40    bool isDefault() const;
41    bool operator==(const QXmlStreamAttribute &other) const;
42    bool operator!=(const QXmlStreamAttribute &other) const;
43};
44
45class QXmlStreamAttributes
46{
47%TypeHeaderCode
48#include <qxmlstream.h>
49%End
50
51public:
52    QXmlStreamAttributes();
53    QStringRef value(const QString &namespaceUri, const QString &name) const;
54    QStringRef value(const QString &qualifiedName) const;
55    void append(const QString &namespaceUri, const QString &name, const QString &value);
56    void append(const QString &qualifiedName, const QString &value);
57    void append(const QXmlStreamAttribute &attribute);
58    bool hasAttribute(const QString &qualifiedName) const;
59    bool hasAttribute(const QString &namespaceUri, const QString &name) const;
60// Methods inherited from QVector<QXmlStreamAttribute> and Python special methods.
61// Keep in sync with QPolygon and QPolygonF.
62
63// This is picked up with "using" by QXmlStreamAttributes.
64//void append(const QXmlStreamAttribute &value);
65
66const QXmlStreamAttribute &at(int i) const;
67void clear();
68bool contains(const QXmlStreamAttribute &value) const;
69int count(const QXmlStreamAttribute &value) const;
70int count() const /__len__/;
71void *data();
72
73// Note the Qt return value is discarded as it would require handwritten code
74// and seems pretty useless.
75void fill(const QXmlStreamAttribute &value, int size = -1);
76
77QXmlStreamAttribute &first();
78int indexOf(const QXmlStreamAttribute &value, int from = 0) const;
79void insert(int i, const QXmlStreamAttribute &value);
80bool isEmpty() const;
81QXmlStreamAttribute &last();
82int lastIndexOf(const QXmlStreamAttribute &value, int from = -1) const;
83
84// Note the Qt return type is QVector<QXmlStreamAttribute>.  We can't do the
85// usual trick because there is no QXmlStreamAttributes ctor that takes a
86// QVector<QXmlStreamAttribute> argument.  We could use handwritten code but we
87// don't bother.
88//QXmlStreamAttributes mid(int pos, int length = -1) const;
89
90void prepend(const QXmlStreamAttribute &value);
91void remove(int i);
92void remove(int i, int count);
93void replace(int i, const QXmlStreamAttribute &value);
94int size() const;
95
96// These are hidden by other implementations in QXmlStreamAttributes.
97//QXmlStreamAttribute value(int i) const;
98//QXmlStreamAttribute value(int i, const QXmlStreamAttribute &defaultValue) const;
99
100bool operator!=(const QXmlStreamAttributes &other) const;
101
102// Note the Qt return type is QVector<QXmlStreamAttribute>.  We can't do the
103// usual trick because there is no QXmlStreamAttributes ctor that takes a
104// QVector<QXmlStreamAttribute> argument.  We could use handwritten code but we
105// don't bother.
106//QXmlStreamAttributes operator+(const QXmlStreamAttributes &other) const;
107
108QXmlStreamAttributes &operator+=(const QXmlStreamAttributes &other);
109QXmlStreamAttributes &operator+=(const QXmlStreamAttribute &value);
110
111bool operator==(const QXmlStreamAttributes &other) const;
112
113QXmlStreamAttribute &operator[](int i);
114%MethodCode
115Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count());
116
117if (idx < 0)
118    sipIsErr = 1;
119else
120    sipRes = &sipCpp->operator[]((int)idx);
121%End
122
123// Some additional Python special methods.
124
125void __setitem__(int i, const QXmlStreamAttribute &value);
126%MethodCode
127int len;
128
129len = sipCpp->count();
130
131if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0)
132    sipIsErr = 1;
133else
134    (*sipCpp)[a0] = *a1;
135%End
136
137void __setitem__(SIP_PYSLICE slice, const QXmlStreamAttributes &list);
138%MethodCode
139Py_ssize_t start, stop, step, slicelength;
140
141if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0)
142{
143    sipIsErr = 1;
144}
145else
146{
147    int vlen = a1->count();
148
149    if (vlen != slicelength)
150    {
151        sipBadLengthForSlice(vlen, slicelength);
152        sipIsErr = 1;
153    }
154    else
155    {
156        QVector<QXmlStreamAttribute>::const_iterator it = a1->begin();
157
158        for (Py_ssize_t i = 0; i < slicelength; ++i)
159        {
160            (*sipCpp)[start] = *it;
161            start += step;
162            ++it;
163        }
164    }
165}
166%End
167
168void __delitem__(int i);
169%MethodCode
170if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0)
171    sipIsErr = 1;
172else
173    sipCpp->remove(a0);
174%End
175
176void __delitem__(SIP_PYSLICE slice);
177%MethodCode
178Py_ssize_t start, stop, step, slicelength;
179
180if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0)
181{
182    sipIsErr = 1;
183}
184else
185{
186    for (Py_ssize_t i = 0; i < slicelength; ++i)
187    {
188        sipCpp->remove(start);
189        start += step - 1;
190    }
191}
192%End
193
194QXmlStreamAttributes operator[](SIP_PYSLICE slice);
195%MethodCode
196Py_ssize_t start, stop, step, slicelength;
197
198if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0)
199{
200    sipIsErr = 1;
201}
202else
203{
204    sipRes = new QXmlStreamAttributes();
205
206    for (Py_ssize_t i = 0; i < slicelength; ++i)
207    {
208        (*sipRes) += (*sipCpp)[start];
209        start += step;
210    }
211}
212%End
213
214int __contains__(const QXmlStreamAttribute &value);
215%MethodCode
216// It looks like you can't assign QBool to int.
217sipRes = bool(sipCpp->contains(*a0));
218%End
219};
220
221class QXmlStreamNamespaceDeclaration
222{
223%TypeHeaderCode
224#include <qxmlstream.h>
225%End
226
227public:
228    QXmlStreamNamespaceDeclaration();
229    QXmlStreamNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &);
230    QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri);
231    ~QXmlStreamNamespaceDeclaration();
232    QStringRef prefix() const;
233    QStringRef namespaceUri() const;
234    bool operator==(const QXmlStreamNamespaceDeclaration &other) const;
235    bool operator!=(const QXmlStreamNamespaceDeclaration &other) const;
236};
237
238typedef QVector<QXmlStreamNamespaceDeclaration> QXmlStreamNamespaceDeclarations;
239
240class QXmlStreamNotationDeclaration
241{
242%TypeHeaderCode
243#include <qxmlstream.h>
244%End
245
246public:
247    QXmlStreamNotationDeclaration();
248    QXmlStreamNotationDeclaration(const QXmlStreamNotationDeclaration &);
249    ~QXmlStreamNotationDeclaration();
250    QStringRef name() const;
251    QStringRef systemId() const;
252    QStringRef publicId() const;
253    bool operator==(const QXmlStreamNotationDeclaration &other) const;
254    bool operator!=(const QXmlStreamNotationDeclaration &other) const;
255};
256
257typedef QVector<QXmlStreamNotationDeclaration> QXmlStreamNotationDeclarations;
258
259class QXmlStreamEntityDeclaration
260{
261%TypeHeaderCode
262#include <qxmlstream.h>
263%End
264
265public:
266    QXmlStreamEntityDeclaration();
267    QXmlStreamEntityDeclaration(const QXmlStreamEntityDeclaration &);
268    ~QXmlStreamEntityDeclaration();
269    QStringRef name() const;
270    QStringRef notationName() const;
271    QStringRef systemId() const;
272    QStringRef publicId() const;
273    QStringRef value() const;
274    bool operator==(const QXmlStreamEntityDeclaration &other) const;
275    bool operator!=(const QXmlStreamEntityDeclaration &other) const;
276};
277
278typedef QVector<QXmlStreamEntityDeclaration> QXmlStreamEntityDeclarations;
279
280class QXmlStreamEntityResolver
281{
282%TypeHeaderCode
283#include <qxmlstream.h>
284%End
285
286public:
287    virtual ~QXmlStreamEntityResolver();
288    virtual QString resolveUndeclaredEntity(const QString &name);
289};
290
291class QXmlStreamReader
292{
293%TypeHeaderCode
294#include <qxmlstream.h>
295%End
296
297public:
298    enum TokenType
299    {
300        NoToken,
301        Invalid,
302        StartDocument,
303        EndDocument,
304        StartElement,
305        EndElement,
306        Characters,
307        Comment,
308        DTD,
309        EntityReference,
310        ProcessingInstruction,
311    };
312
313    QXmlStreamReader();
314    explicit QXmlStreamReader(QIODevice *device);
315    explicit QXmlStreamReader(const QByteArray &data);
316    explicit QXmlStreamReader(const QString &data);
317    ~QXmlStreamReader();
318    void setDevice(QIODevice *device);
319    QIODevice *device() const;
320    void addData(const QByteArray &data);
321    void addData(const QString &data);
322    void clear();
323    bool atEnd() const;
324    QXmlStreamReader::TokenType readNext();
325    QXmlStreamReader::TokenType tokenType() const;
326    QString tokenString() const;
327    void setNamespaceProcessing(bool);
328    bool namespaceProcessing() const;
329    bool isStartDocument() const;
330    bool isEndDocument() const;
331    bool isStartElement() const;
332    bool isEndElement() const;
333    bool isCharacters() const;
334    bool isWhitespace() const;
335    bool isCDATA() const;
336    bool isComment() const;
337    bool isDTD() const;
338    bool isEntityReference() const;
339    bool isProcessingInstruction() const;
340    bool isStandaloneDocument() const;
341    QStringRef documentVersion() const;
342    QStringRef documentEncoding() const;
343    qint64 lineNumber() const;
344    qint64 columnNumber() const;
345    qint64 characterOffset() const;
346    QXmlStreamAttributes attributes() const;
347
348    enum ReadElementTextBehaviour
349    {
350        ErrorOnUnexpectedElement,
351        IncludeChildElements,
352        SkipChildElements,
353    };
354
355    QString readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = QXmlStreamReader::ErrorOnUnexpectedElement);
356    QStringRef name() const;
357    QStringRef namespaceUri() const;
358    QStringRef qualifiedName() const;
359    QStringRef prefix() const;
360    QStringRef processingInstructionTarget() const;
361    QStringRef processingInstructionData() const;
362    QStringRef text() const;
363    QXmlStreamNamespaceDeclarations namespaceDeclarations() const;
364    void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction);
365    void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions);
366    QXmlStreamNotationDeclarations notationDeclarations() const;
367    QXmlStreamEntityDeclarations entityDeclarations() const;
368    QStringRef dtdName() const;
369    QStringRef dtdPublicId() const;
370    QStringRef dtdSystemId() const;
371
372    enum Error
373    {
374        NoError,
375        UnexpectedElementError,
376        CustomError,
377        NotWellFormedError,
378        PrematureEndOfDocumentError,
379    };
380
381    void raiseError(const QString &message = QString());
382    QString errorString() const;
383    QXmlStreamReader::Error error() const;
384    bool hasError() const;
385    void setEntityResolver(QXmlStreamEntityResolver *resolver /KeepReference/);
386    QXmlStreamEntityResolver *entityResolver() const;
387    bool readNextStartElement();
388    void skipCurrentElement();
389%If (Qt_5_15_0 -)
390    int entityExpansionLimit() const;
391%End
392%If (Qt_5_15_0 -)
393    void setEntityExpansionLimit(int limit);
394%End
395
396private:
397    QXmlStreamReader(const QXmlStreamReader &);
398};
399
400class QXmlStreamWriter
401{
402%TypeHeaderCode
403#include <qxmlstream.h>
404%End
405
406public:
407    QXmlStreamWriter();
408    explicit QXmlStreamWriter(QIODevice *device);
409    explicit QXmlStreamWriter(QByteArray *array);
410    ~QXmlStreamWriter();
411    void setDevice(QIODevice *device);
412    QIODevice *device() const;
413    void setCodec(QTextCodec *codec /KeepReference/);
414    void setCodec(const char *codecName);
415    QTextCodec *codec() const;
416    void setAutoFormatting(bool);
417    bool autoFormatting() const;
418    void setAutoFormattingIndent(int spaces);
419    int autoFormattingIndent() const;
420    void writeAttribute(const QString &qualifiedName, const QString &value);
421    void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value);
422    void writeAttribute(const QXmlStreamAttribute &attribute);
423    void writeAttributes(const QXmlStreamAttributes &attributes);
424    void writeCDATA(const QString &text);
425    void writeCharacters(const QString &text);
426    void writeComment(const QString &text);
427    void writeDTD(const QString &dtd);
428    void writeEmptyElement(const QString &qualifiedName);
429    void writeEmptyElement(const QString &namespaceUri, const QString &name);
430    void writeTextElement(const QString &qualifiedName, const QString &text);
431    void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text);
432    void writeEndDocument();
433    void writeEndElement();
434    void writeEntityReference(const QString &name);
435    void writeNamespace(const QString &namespaceUri, const QString &prefix = QString());
436    void writeDefaultNamespace(const QString &namespaceUri);
437    void writeProcessingInstruction(const QString &target, const QString &data = QString());
438    void writeStartDocument();
439    void writeStartDocument(const QString &version);
440    void writeStartDocument(const QString &version, bool standalone);
441    void writeStartElement(const QString &qualifiedName);
442    void writeStartElement(const QString &namespaceUri, const QString &name);
443    void writeCurrentToken(const QXmlStreamReader &reader);
444    bool hasError() const;
445
446private:
447    QXmlStreamWriter(const QXmlStreamWriter &);
448};
449