| #ifndef _QPXMLWRITER_H |
| #define _QPXMLWRITER_H |
| /*------------------------------------------------------------------------- |
| * drawElements Quality Program Helper Library |
| * ------------------------------------------- |
| * |
| * Copyright 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief Test log library |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "deDefs.h" |
| |
| #include <stdio.h> |
| |
| DE_BEGIN_EXTERN_C |
| |
| typedef struct qpXmlWriter_s qpXmlWriter; |
| |
| typedef enum qpXmlAttributeType_e |
| { |
| QP_XML_ATTRIBUTE_STRING = 0, |
| QP_XML_ATTRIBUTE_INT, |
| QP_XML_ATTRIBUTE_BOOL, |
| |
| QP_XML_ATTRIBUTE_LAST |
| } qpXmlAttributeType; |
| |
| typedef struct qpXmlAttribute_s |
| { |
| const char* name; |
| qpXmlAttributeType type; |
| const char* stringValue; |
| int intValue; |
| deBool boolValue; |
| } qpXmlAttribute; |
| |
| DE_INLINE qpXmlAttribute qpSetStringAttrib (const char* name, const char* value) |
| { |
| qpXmlAttribute attrib; |
| attrib.name = name; |
| attrib.type = QP_XML_ATTRIBUTE_STRING; |
| attrib.stringValue = value; |
| attrib.intValue = -678; |
| attrib.boolValue = (deBool)0xFFFFFFFFu; |
| return attrib; |
| } |
| |
| DE_INLINE qpXmlAttribute qpSetIntAttrib (const char* name, int value) |
| { |
| qpXmlAttribute attrib; |
| attrib.name = name; |
| attrib.type = QP_XML_ATTRIBUTE_INT; |
| attrib.stringValue = "<intAttrib>"; |
| attrib.intValue = value; |
| attrib.boolValue = (deBool)0xFFFFFFFFu; |
| return attrib; |
| } |
| |
| DE_INLINE qpXmlAttribute qpSetBoolAttrib (const char* name, deBool value) |
| { |
| qpXmlAttribute attrib; |
| attrib.name = name; |
| attrib.type = QP_XML_ATTRIBUTE_BOOL; |
| attrib.stringValue = "<boolAttrib>"; |
| attrib.intValue = -679; |
| attrib.boolValue = value; |
| return attrib; |
| } |
| /*--------------------------------------------------------------------*//*! |
| * \brief Create a file based XML Writer instance |
| * \param fileName Name of the file |
| * \param useCompression Set to DE_TRUE to use compression, if supported by implementation |
| * \param flushAfterWrite Set to DE_TRUE to call fflush after writing each XML token |
| * \return qpXmlWriter instance, or DE_NULL if cannot create file |
| *//*--------------------------------------------------------------------*/ |
| qpXmlWriter* qpXmlWriter_createFileWriter (FILE* outFile, deBool useCompression, deBool flushAfterWrite); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief XML Writer instance |
| * \param a qpXmlWriter instance |
| *//*--------------------------------------------------------------------*/ |
| void qpXmlWriter_destroy (qpXmlWriter* writer); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief XML Writer instance |
| * \param a qpXmlWriter instance |
| *//*--------------------------------------------------------------------*/ |
| void qpXmlWriter_flush (qpXmlWriter* writer); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Start XML document |
| * \param writer qpXmlWriter instance |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_startDocument (qpXmlWriter* writer); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief End XML document |
| * \param writer qpXmlWriter instance |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_endDocument (qpXmlWriter* writer); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Start XML element |
| * \param writer qpXmlWriter instance |
| * \param elementName Name of the element |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_startElement (qpXmlWriter* writer, const char* elementName, int numAttribs, const qpXmlAttribute* attribs); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief End XML element |
| * \param writer qpXmlWriter instance |
| * \param elementName Name of the element |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_endElement (qpXmlWriter* writer, const char* elementName); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Write raw string into XML document |
| * \param writer qpXmlWriter instance |
| * \param content String to be written |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_writeString (qpXmlWriter* writer, const char* content); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Write base64 encoded data into XML document |
| * \param writer qpXmlWriter instance |
| * \param data Pointer to data to be written |
| * \param numBytes Length of data in bytes |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_writeBase64 (qpXmlWriter* writer, const deUint8* data, size_t numBytes); |
| |
| /*--------------------------------------------------------------------*//*! |
| * \brief Convenience function for writing XML element |
| * \param writer qpXmlWriter instance |
| * \param elementName Name of the element |
| * \param elementContent Contents of the element |
| * \return true on success, false on error |
| *//*--------------------------------------------------------------------*/ |
| deBool qpXmlWriter_writeStringElement (qpXmlWriter* writer, const char* elementName, const char* elementContent); |
| |
| DE_END_EXTERN_C |
| |
| #endif /* _QPXMLWRITER_H */ |