// Copyright 2017 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef CORE_FXCRT_XML_CFX_XMLDOC_H_
#define CORE_FXCRT_XML_CFX_XMLDOC_H_

#include <memory>

#include "core/fxcrt/cfx_seekablestreamproxy.h"
#include "core/fxcrt/retain_ptr.h"
#include "core/fxcrt/xml/cfx_xmlnode.h"
#include "core/fxcrt/xml/cfx_xmlparser.h"

class CFX_XMLDoc {
 public:
  CFX_XMLDoc();
  ~CFX_XMLDoc();

  bool LoadXML(std::unique_ptr<CFX_XMLParser> pXMLParser);
  int32_t DoLoad();
  void CloseXML();

  CFX_XMLNode* GetRoot() const { return m_pRoot.get(); }

 private:
  int32_t m_iStatus;
  std::unique_ptr<CFX_XMLNode> m_pRoot;
  std::unique_ptr<CFX_XMLParser> m_pXMLParser;
  RetainPtr<CFX_SeekableStreamProxy> m_pStream;
};

#endif  // CORE_FXCRT_XML_CFX_XMLDOC_H_
