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