diff --git a/sdk/storage/azure-storage-common/inc/azure/storage/common/xml_wrapper.hpp b/sdk/storage/azure-storage-common/inc/azure/storage/common/xml_wrapper.hpp index cc59808cd..e8a7aeeae 100644 --- a/sdk/storage/azure-storage-common/inc/azure/storage/common/xml_wrapper.hpp +++ b/sdk/storage/azure-storage-common/inc/azure/storage/common/xml_wrapper.hpp @@ -6,10 +6,6 @@ #include #include -struct _xmlTextReader; -struct _xmlTextWriter; -struct _xmlBuffer; - namespace Azure { namespace Storage { namespace Details { enum class XmlNodeType @@ -41,7 +37,7 @@ namespace Azure { namespace Storage { namespace Details { XmlNode Read(); private: - _xmlTextReader* m_reader = nullptr; + void* m_reader = nullptr; bool m_readingAttributes = false; }; @@ -55,8 +51,8 @@ namespace Azure { namespace Storage { namespace Details { std::string GetDocument(); private: - _xmlBuffer* m_buffer = nullptr; - _xmlTextWriter* m_writer = nullptr; + void* m_buffer = nullptr; + void* m_writer = nullptr; }; }}} // namespace Azure::Storage::Details diff --git a/sdk/storage/azure-storage-common/src/xml_wrapper.cpp b/sdk/storage/azure-storage-common/src/xml_wrapper.cpp index 7c4365bb8..a4ccf3c40 100644 --- a/sdk/storage/azure-storage-common/src/xml_wrapper.cpp +++ b/sdk/storage/azure-storage-common/src/xml_wrapper.cpp @@ -35,17 +35,18 @@ namespace Azure { namespace Storage { namespace Details { } } - XmlReader::~XmlReader() { xmlFreeTextReader(m_reader); } + XmlReader::~XmlReader() { xmlFreeTextReader(static_cast(m_reader)); } XmlNode XmlReader::Read() { + xmlTextReaderPtr reader = static_cast(m_reader); if (m_readingAttributes) { - int ret = xmlTextReaderMoveToNextAttribute(m_reader); + int ret = xmlTextReaderMoveToNextAttribute(reader); if (ret == 1) { - const char* name = reinterpret_cast(xmlTextReaderName(m_reader)); - const char* value = reinterpret_cast(xmlTextReaderValue(m_reader)); + const char* name = reinterpret_cast(xmlTextReaderName(reader)); + const char* value = reinterpret_cast(xmlTextReaderValue(reader)); return XmlNode{XmlNodeType::Attribute, name, value}; } else if (ret == 0) @@ -58,7 +59,7 @@ namespace Azure { namespace Storage { namespace Details { } } - int ret = xmlTextReaderRead(m_reader); + int ret = xmlTextReaderRead(reader); if (ret == 0) { return XmlNode{XmlNodeType::End}; @@ -68,13 +69,13 @@ namespace Azure { namespace Storage { namespace Details { throw std::runtime_error("failed to parse xml"); } - int type = xmlTextReaderNodeType(m_reader); - bool is_empty = xmlTextReaderIsEmptyElement(m_reader) == 1; - bool has_value = xmlTextReaderHasValue(m_reader) == 1; - bool has_attributes = xmlTextReaderHasAttributes(m_reader) == 1; + int type = xmlTextReaderNodeType(reader); + bool is_empty = xmlTextReaderIsEmptyElement(reader) == 1; + bool has_value = xmlTextReaderHasValue(reader) == 1; + bool has_attributes = xmlTextReaderHasAttributes(reader) == 1; - const char* name = reinterpret_cast(xmlTextReaderName(m_reader)); - const char* value = reinterpret_cast(xmlTextReaderValue(m_reader)); + const char* name = reinterpret_cast(xmlTextReaderName(reader)); + const char* value = reinterpret_cast(xmlTextReaderValue(reader)); if (has_attributes) { @@ -116,49 +117,50 @@ namespace Azure { namespace Storage { namespace Details { { XmlGlobalInitialize(); m_buffer = xmlBufferCreate(); - m_writer = xmlNewTextWriterMemory(m_buffer, 0); - xmlTextWriterStartDocument(m_writer, nullptr, nullptr, nullptr); + m_writer = xmlNewTextWriterMemory(static_cast(m_buffer), 0); + xmlTextWriterStartDocument(static_cast(m_writer), nullptr, nullptr, nullptr); } XmlWriter::~XmlWriter() { - xmlFreeTextWriter(m_writer); - xmlBufferFree(m_buffer); + xmlFreeTextWriter(static_cast(m_writer)); + xmlBufferFree(static_cast(m_buffer)); } void XmlWriter::Write(XmlNode node) { + xmlTextWriterPtr writer = static_cast(m_writer); if (node.Type == XmlNodeType::StartTag) { if (!node.Value) { - xmlTextWriterStartElement(m_writer, BAD_CAST(node.Name)); + xmlTextWriterStartElement(writer, BAD_CAST(node.Name)); } else { - xmlTextWriterWriteElement(m_writer, BAD_CAST(node.Name), BAD_CAST(node.Value)); + xmlTextWriterWriteElement(writer, BAD_CAST(node.Name), BAD_CAST(node.Value)); } } else if (node.Type == XmlNodeType::EndTag) { - xmlTextWriterEndElement(m_writer); + xmlTextWriterEndElement(writer); } else if (node.Type == XmlNodeType::SelfClosingTag) { - xmlTextWriterStartElement(m_writer, BAD_CAST(node.Name)); - xmlTextWriterEndElement(m_writer); + xmlTextWriterStartElement(writer, BAD_CAST(node.Name)); + xmlTextWriterEndElement(writer); } else if (node.Type == XmlNodeType::Text) { - xmlTextWriterWriteString(m_writer, BAD_CAST(node.Value)); + xmlTextWriterWriteString(writer, BAD_CAST(node.Value)); } else if (node.Type == XmlNodeType::Attribute) { - xmlTextWriterWriteAttribute(m_writer, BAD_CAST(node.Name), BAD_CAST(node.Value)); + xmlTextWriterWriteAttribute(writer, BAD_CAST(node.Name), BAD_CAST(node.Value)); } else if (node.Type == XmlNodeType::End) { - xmlTextWriterEndDocument(m_writer); + xmlTextWriterEndDocument(writer); } else { @@ -170,8 +172,10 @@ namespace Azure { namespace Storage { namespace Details { std::string XmlWriter::GetDocument() { - xmlTextWriterFlush(m_writer); - return std::string(reinterpret_cast(m_buffer->content), m_buffer->use); + xmlTextWriterPtr writer = static_cast(m_writer); + xmlBufferPtr buffer = static_cast(m_buffer); + xmlTextWriterFlush(writer); + return std::string(reinterpret_cast(buffer->content), buffer->use); } }}} // namespace Azure::Storage::Details