diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-04-12 13:29:37 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-04-12 17:52:56 +0000 |
commit | 51114964fdb2a98f763318ce9affca906ed079e3 (patch) | |
tree | 0b5499f30ab34cd1f4f37b5368a766e57eca678a /xfa/fxfa/parser | |
parent | 661fcc0156b78fd40937c0844034605f430b94c6 (diff) | |
download | pdfium-51114964fdb2a98f763318ce9affca906ed079e3.tar.xz |
Fold CXFA_WideTextRead into IFGAS_Stream
This Cl moves CXFA_WideTextRead to be in the anonymous namespace of
IFGAS_Stream and adds a IFGAS_Stream::CreateWideStringReadStream()
method.
This is done so we have all the implementations of IFGAS_Stream
centralized.
Change-Id: I9fbbf0a493fc2dd05fcd544e344268214a75d8a1
Reviewed-on: https://pdfium-review.googlesource.com/4052
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser')
-rw-r--r-- | xfa/fxfa/parser/cxfa_simple_parser.cpp | 5 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widetextread.cpp | 96 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widetextread.h | 44 |
3 files changed, 3 insertions, 142 deletions
diff --git a/xfa/fxfa/parser/cxfa_simple_parser.cpp b/xfa/fxfa/parser/cxfa_simple_parser.cpp index d423bba56d..cce4b68a27 100644 --- a/xfa/fxfa/parser/cxfa_simple_parser.cpp +++ b/xfa/fxfa/parser/cxfa_simple_parser.cpp @@ -20,10 +20,10 @@ #include "xfa/fde/xml/cfde_xmlparser.h" #include "xfa/fde/xml/cfde_xmltext.h" #include "xfa/fgas/crt/fgas_codepage.h" +#include "xfa/fgas/crt/ifgas_stream.h" #include "xfa/fxfa/fxfa.h" #include "xfa/fxfa/parser/cxfa_document.h" #include "xfa/fxfa/parser/cxfa_node.h" -#include "xfa/fxfa/parser/cxfa_widetextread.h" #include "xfa/fxfa/parser/xfa_basic_data.h" #include "xfa/fxfa/parser/xfa_utils.h" @@ -323,7 +323,8 @@ int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, CloseParser(); pXMLNode = nullptr; m_pXMLDoc = pdfium::MakeUnique<CFDE_XMLDoc>(); - auto pStream = pdfium::MakeRetain<CXFA_WideTextRead>(wsXML); + CFX_RetainPtr<IFGAS_Stream> pStream = + IFGAS_Stream::CreateWideStringReadStream(wsXML); auto pParser = pdfium::MakeUnique<CFDE_XMLParser>(m_pXMLDoc->GetRoot(), pStream); pParser->m_dwCheckStatus = 0x03; diff --git a/xfa/fxfa/parser/cxfa_widetextread.cpp b/xfa/fxfa/parser/cxfa_widetextread.cpp deleted file mode 100644 index dc210d1828..0000000000 --- a/xfa/fxfa/parser/cxfa_widetextread.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2016 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 - -#include "xfa/fxfa/parser/cxfa_widetextread.h" - -#include <algorithm> - -#include "core/fxcrt/fx_ext.h" -#include "third_party/base/stl_util.h" -#include "xfa/fgas/crt/fgas_codepage.h" - -CXFA_WideTextRead::CXFA_WideTextRead(const CFX_WideString& wsBuffer) - : m_wsBuffer(wsBuffer), m_iPosition(0) {} - -CXFA_WideTextRead::~CXFA_WideTextRead() {} - -uint32_t CXFA_WideTextRead::GetAccessModes() const { - return 0; -} - -int32_t CXFA_WideTextRead::GetLength() const { - return m_wsBuffer.GetLength() * sizeof(wchar_t); -} - -int32_t CXFA_WideTextRead::Seek(FX_STREAMSEEK eSeek, int32_t iOffset) { - switch (eSeek) { - case FX_STREAMSEEK_Begin: - m_iPosition = iOffset; - break; - case FX_STREAMSEEK_Current: - m_iPosition += iOffset; - break; - case FX_STREAMSEEK_End: - m_iPosition = m_wsBuffer.GetLength() + iOffset; - break; - } - m_iPosition = pdfium::clamp(0, m_iPosition, m_wsBuffer.GetLength()); - return GetPosition(); -} - -int32_t CXFA_WideTextRead::GetPosition() { - return m_iPosition * sizeof(wchar_t); -} - -bool CXFA_WideTextRead::IsEOF() const { - return m_iPosition >= m_wsBuffer.GetLength(); -} - -int32_t CXFA_WideTextRead::ReadData(uint8_t* pBuffer, int32_t iBufferSize) { - return 0; -} - -int32_t CXFA_WideTextRead::ReadString(wchar_t* pStr, - int32_t iMaxLength, - bool& bEOS) { - iMaxLength = std::min(iMaxLength, m_wsBuffer.GetLength() - m_iPosition); - if (iMaxLength == 0) - return 0; - - FXSYS_wcsncpy(pStr, m_wsBuffer.c_str() + m_iPosition, iMaxLength); - m_iPosition += iMaxLength; - bEOS = IsEOF(); - return iMaxLength; -} - -int32_t CXFA_WideTextRead::WriteData(const uint8_t* pBuffer, - int32_t iBufferSize) { - return 0; -} - -int32_t CXFA_WideTextRead::WriteString(const wchar_t* pStr, int32_t iLength) { - return 0; -} - -bool CXFA_WideTextRead::SetLength(int32_t iLength) { - return false; -} - -int32_t CXFA_WideTextRead::GetBOM(uint8_t bom[4]) const { - return 0; -} - -uint16_t CXFA_WideTextRead::GetCodePage() const { - return (sizeof(wchar_t) == 2) ? FX_CODEPAGE_UTF16LE : FX_CODEPAGE_UTF32LE; -} - -uint16_t CXFA_WideTextRead::SetCodePage(uint16_t wCodePage) { - return GetCodePage(); -} - -CFX_WideString CXFA_WideTextRead::GetSrcText() const { - return m_wsBuffer; -} diff --git a/xfa/fxfa/parser/cxfa_widetextread.h b/xfa/fxfa/parser/cxfa_widetextread.h deleted file mode 100644 index 648e14ed0d..0000000000 --- a/xfa/fxfa/parser/cxfa_widetextread.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2016 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 XFA_FXFA_PARSER_CXFA_WIDETEXTREAD_H_ -#define XFA_FXFA_PARSER_CXFA_WIDETEXTREAD_H_ - -#include "core/fxcrt/cfx_retain_ptr.h" -#include "xfa/fgas/crt/ifgas_stream.h" - -class CXFA_WideTextRead : public IFGAS_Stream { - public: - template <typename T, typename... Args> - friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args); - - // IFGAS_Stream - uint32_t GetAccessModes() const override; - int32_t GetLength() const override; - int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) override; - int32_t GetPosition() override; - bool IsEOF() const override; - int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override; - int32_t ReadString(wchar_t* pStr, int32_t iMaxLength, bool& bEOS) override; - int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override; - int32_t WriteString(const wchar_t* pStr, int32_t iLength) override; - void Flush() override {} - bool SetLength(int32_t iLength) override; - int32_t GetBOM(uint8_t bom[4]) const override; - uint16_t GetCodePage() const override; - uint16_t SetCodePage(uint16_t wCodePage) override; - - CFX_WideString GetSrcText() const; - - private: - explicit CXFA_WideTextRead(const CFX_WideString& wsBuffer); - ~CXFA_WideTextRead() override; - - CFX_WideString m_wsBuffer; - int32_t m_iPosition; -}; - -#endif // XFA_FXFA_PARSER_CXFA_WIDETEXTREAD_H_ |