blob: daf5221489af3268f7e11fb482186dc3a6718f40 [file] [log] [blame]
dsinclair34f86b02016-07-11 08:42:33 -07001// Copyright 2016 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#include "xfa/fxfa/parser/cxfa_document_parser.h"
8
9#include "xfa/fxfa/include/fxfa.h"
dsinclair16280242016-07-21 12:03:47 -070010#include "xfa/fxfa/parser/cxfa_document.h"
dsinclair34f86b02016-07-11 08:42:33 -070011
12CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify)
13 : m_nodeParser(nullptr, TRUE), m_pNotify(pNotify) {}
14
15CXFA_DocumentParser::~CXFA_DocumentParser() {
dsinclair34f86b02016-07-11 08:42:33 -070016}
17
18int32_t CXFA_DocumentParser::StartParse(IFX_FileRead* pStream,
19 XFA_XDPPACKET ePacketID) {
dsinclairbb95c502016-07-11 08:55:08 -070020 m_pDocument.reset();
21 m_nodeParser.CloseParser();
22
dsinclair34f86b02016-07-11 08:42:33 -070023 int32_t nRetStatus = m_nodeParser.StartParse(pStream, ePacketID);
24 if (nRetStatus == XFA_PARSESTATUS_Ready) {
25 m_pDocument.reset(new CXFA_Document(this));
26 m_nodeParser.SetFactory(m_pDocument.get());
27 }
28 return nRetStatus;
29}
30
31int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) {
32 int32_t nRetStatus = m_nodeParser.DoParse(pPause);
33 if (nRetStatus >= XFA_PARSESTATUS_Done) {
34 ASSERT(m_pDocument);
35 m_pDocument->SetRoot(m_nodeParser.GetRootNode());
36 }
37 return nRetStatus;
38}
39
40CFDE_XMLDoc* CXFA_DocumentParser::GetXMLDoc() const {
41 return m_nodeParser.GetXMLDoc();
42}
43
44CXFA_FFNotify* CXFA_DocumentParser::GetNotify() const {
45 return m_pNotify;
46}
47
48CXFA_Document* CXFA_DocumentParser::GetDocument() const {
49 return m_pDocument.get();
50}