xref: /aosp_15_r20/external/deqp/framework/qphelper/qpXmlWriter.h (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker #ifndef _QPXMLWRITER_H
2*35238bceSAndroid Build Coastguard Worker #define _QPXMLWRITER_H
3*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker  * drawElements Quality Program Helper Library
5*35238bceSAndroid Build Coastguard Worker  * -------------------------------------------
6*35238bceSAndroid Build Coastguard Worker  *
7*35238bceSAndroid Build Coastguard Worker  * Copyright 2014 The Android Open Source Project
8*35238bceSAndroid Build Coastguard Worker  *
9*35238bceSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
10*35238bceSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
11*35238bceSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
12*35238bceSAndroid Build Coastguard Worker  *
13*35238bceSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
14*35238bceSAndroid Build Coastguard Worker  *
15*35238bceSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
16*35238bceSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
17*35238bceSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*35238bceSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
19*35238bceSAndroid Build Coastguard Worker  * limitations under the License.
20*35238bceSAndroid Build Coastguard Worker  *
21*35238bceSAndroid Build Coastguard Worker  *//*!
22*35238bceSAndroid Build Coastguard Worker  * \file
23*35238bceSAndroid Build Coastguard Worker  * \brief Test log library
24*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
25*35238bceSAndroid Build Coastguard Worker 
26*35238bceSAndroid Build Coastguard Worker #include "deDefs.h"
27*35238bceSAndroid Build Coastguard Worker 
28*35238bceSAndroid Build Coastguard Worker #include <stdio.h>
29*35238bceSAndroid Build Coastguard Worker 
30*35238bceSAndroid Build Coastguard Worker DE_BEGIN_EXTERN_C
31*35238bceSAndroid Build Coastguard Worker 
32*35238bceSAndroid Build Coastguard Worker typedef struct qpXmlWriter_s qpXmlWriter;
33*35238bceSAndroid Build Coastguard Worker 
34*35238bceSAndroid Build Coastguard Worker typedef enum qpXmlAttributeType_e
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker     QP_XML_ATTRIBUTE_STRING = 0,
37*35238bceSAndroid Build Coastguard Worker     QP_XML_ATTRIBUTE_INT,
38*35238bceSAndroid Build Coastguard Worker     QP_XML_ATTRIBUTE_BOOL,
39*35238bceSAndroid Build Coastguard Worker 
40*35238bceSAndroid Build Coastguard Worker     QP_XML_ATTRIBUTE_LAST
41*35238bceSAndroid Build Coastguard Worker } qpXmlAttributeType;
42*35238bceSAndroid Build Coastguard Worker 
43*35238bceSAndroid Build Coastguard Worker typedef struct qpXmlAttribute_s
44*35238bceSAndroid Build Coastguard Worker {
45*35238bceSAndroid Build Coastguard Worker     const char *name;
46*35238bceSAndroid Build Coastguard Worker     qpXmlAttributeType type;
47*35238bceSAndroid Build Coastguard Worker     const char *stringValue;
48*35238bceSAndroid Build Coastguard Worker     int intValue;
49*35238bceSAndroid Build Coastguard Worker     bool boolValue;
50*35238bceSAndroid Build Coastguard Worker } qpXmlAttribute;
51*35238bceSAndroid Build Coastguard Worker 
qpSetStringAttrib(const char * name,const char * value)52*35238bceSAndroid Build Coastguard Worker DE_INLINE qpXmlAttribute qpSetStringAttrib(const char *name, const char *value)
53*35238bceSAndroid Build Coastguard Worker {
54*35238bceSAndroid Build Coastguard Worker     qpXmlAttribute attrib;
55*35238bceSAndroid Build Coastguard Worker     attrib.name        = name;
56*35238bceSAndroid Build Coastguard Worker     attrib.type        = QP_XML_ATTRIBUTE_STRING;
57*35238bceSAndroid Build Coastguard Worker     attrib.stringValue = value;
58*35238bceSAndroid Build Coastguard Worker     attrib.intValue    = -678;
59*35238bceSAndroid Build Coastguard Worker     attrib.boolValue   = (bool)0xFFFFFFFFu;
60*35238bceSAndroid Build Coastguard Worker     return attrib;
61*35238bceSAndroid Build Coastguard Worker }
62*35238bceSAndroid Build Coastguard Worker 
qpSetIntAttrib(const char * name,int value)63*35238bceSAndroid Build Coastguard Worker DE_INLINE qpXmlAttribute qpSetIntAttrib(const char *name, int value)
64*35238bceSAndroid Build Coastguard Worker {
65*35238bceSAndroid Build Coastguard Worker     qpXmlAttribute attrib;
66*35238bceSAndroid Build Coastguard Worker     attrib.name        = name;
67*35238bceSAndroid Build Coastguard Worker     attrib.type        = QP_XML_ATTRIBUTE_INT;
68*35238bceSAndroid Build Coastguard Worker     attrib.stringValue = "<intAttrib>";
69*35238bceSAndroid Build Coastguard Worker     attrib.intValue    = value;
70*35238bceSAndroid Build Coastguard Worker     attrib.boolValue   = (bool)0xFFFFFFFFu;
71*35238bceSAndroid Build Coastguard Worker     return attrib;
72*35238bceSAndroid Build Coastguard Worker }
73*35238bceSAndroid Build Coastguard Worker 
qpSetBoolAttrib(const char * name,bool value)74*35238bceSAndroid Build Coastguard Worker DE_INLINE qpXmlAttribute qpSetBoolAttrib(const char *name, bool value)
75*35238bceSAndroid Build Coastguard Worker {
76*35238bceSAndroid Build Coastguard Worker     qpXmlAttribute attrib;
77*35238bceSAndroid Build Coastguard Worker     attrib.name        = name;
78*35238bceSAndroid Build Coastguard Worker     attrib.type        = QP_XML_ATTRIBUTE_BOOL;
79*35238bceSAndroid Build Coastguard Worker     attrib.stringValue = "<boolAttrib>";
80*35238bceSAndroid Build Coastguard Worker     attrib.intValue    = -679;
81*35238bceSAndroid Build Coastguard Worker     attrib.boolValue   = value;
82*35238bceSAndroid Build Coastguard Worker     return attrib;
83*35238bceSAndroid Build Coastguard Worker }
84*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
85*35238bceSAndroid Build Coastguard Worker  * \brief Create a file based XML Writer instance
86*35238bceSAndroid Build Coastguard Worker  * \param fileName Name of the file
87*35238bceSAndroid Build Coastguard Worker  * \param useCompression Set to true to use compression, if supported by implementation
88*35238bceSAndroid Build Coastguard Worker  * \param flushAfterWrite Set to true to call fflush after writing each XML token
89*35238bceSAndroid Build Coastguard Worker  * \return qpXmlWriter instance, or DE_NULL if cannot create file
90*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
91*35238bceSAndroid Build Coastguard Worker qpXmlWriter *qpXmlWriter_createFileWriter(FILE *outFile, bool useCompression, bool flushAfterWrite);
92*35238bceSAndroid Build Coastguard Worker 
93*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
94*35238bceSAndroid Build Coastguard Worker  * \brief XML Writer instance
95*35238bceSAndroid Build Coastguard Worker  * \param a    qpXmlWriter instance
96*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
97*35238bceSAndroid Build Coastguard Worker void qpXmlWriter_destroy(qpXmlWriter *writer);
98*35238bceSAndroid Build Coastguard Worker 
99*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
100*35238bceSAndroid Build Coastguard Worker  * \brief XML Writer instance
101*35238bceSAndroid Build Coastguard Worker  * \param a    qpXmlWriter instance
102*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
103*35238bceSAndroid Build Coastguard Worker void qpXmlWriter_flush(qpXmlWriter *writer);
104*35238bceSAndroid Build Coastguard Worker 
105*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
106*35238bceSAndroid Build Coastguard Worker  * \brief Start XML document
107*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
108*35238bceSAndroid Build Coastguard Worker  * \param writeXmlHeader whether to write the <xml.. header
109*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
110*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
111*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_startDocument(qpXmlWriter *writer, bool writeXmlHeader);
112*35238bceSAndroid Build Coastguard Worker 
113*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
114*35238bceSAndroid Build Coastguard Worker  * \brief End XML document
115*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
116*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
117*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
118*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_endDocument(qpXmlWriter *writer);
119*35238bceSAndroid Build Coastguard Worker 
120*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
121*35238bceSAndroid Build Coastguard Worker  * \brief Start XML element
122*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
123*35238bceSAndroid Build Coastguard Worker  * \param elementName Name of the element
124*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
125*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
126*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_startElement(qpXmlWriter *writer, const char *elementName, int numAttribs,
127*35238bceSAndroid Build Coastguard Worker                               const qpXmlAttribute *attribs);
128*35238bceSAndroid Build Coastguard Worker 
129*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
130*35238bceSAndroid Build Coastguard Worker  * \brief End XML element
131*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
132*35238bceSAndroid Build Coastguard Worker  * \param elementName Name of the element
133*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
134*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
135*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_endElement(qpXmlWriter *writer, const char *elementName);
136*35238bceSAndroid Build Coastguard Worker 
137*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
138*35238bceSAndroid Build Coastguard Worker  * \brief Write raw string into XML document
139*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
140*35238bceSAndroid Build Coastguard Worker  * \param content String to be written
141*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
142*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
143*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_writeString(qpXmlWriter *writer, const char *content);
144*35238bceSAndroid Build Coastguard Worker 
145*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
146*35238bceSAndroid Build Coastguard Worker  * \brief Write base64 encoded data into XML document
147*35238bceSAndroid Build Coastguard Worker  * \param writer    qpXmlWriter instance
148*35238bceSAndroid Build Coastguard Worker  * \param data        Pointer to data to be written
149*35238bceSAndroid Build Coastguard Worker  * \param numBytes    Length of data in bytes
150*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
151*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
152*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_writeBase64(qpXmlWriter *writer, const uint8_t *data, size_t numBytes);
153*35238bceSAndroid Build Coastguard Worker 
154*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
155*35238bceSAndroid Build Coastguard Worker  * \brief Convenience function for writing XML element
156*35238bceSAndroid Build Coastguard Worker  * \param writer qpXmlWriter instance
157*35238bceSAndroid Build Coastguard Worker  * \param elementName Name of the element
158*35238bceSAndroid Build Coastguard Worker  * \param elementContent Contents of the element
159*35238bceSAndroid Build Coastguard Worker  * \return true on success, false on error
160*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
161*35238bceSAndroid Build Coastguard Worker bool qpXmlWriter_writeStringElement(qpXmlWriter *writer, const char *elementName, const char *elementContent);
162*35238bceSAndroid Build Coastguard Worker 
163*35238bceSAndroid Build Coastguard Worker DE_END_EXTERN_C
164*35238bceSAndroid Build Coastguard Worker 
165*35238bceSAndroid Build Coastguard Worker #endif /* _QPXMLWRITER_H */
166