Home | History | Annotate | Download | only in qphelper
      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 */
    164