Home | History | Annotate | Download | only in include
      1 // Copyright 2014 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 #ifndef _FX_SAX_
      8 #define _FX_SAX_
      9 class IFX_SAXReaderHandler;
     10 class IFX_SAXReader;
     11 #define FX_SAXPARSEMODE_NotConvert_amp 0x0001
     12 #define FX_SAXPARSEMODE_NotConvert_lt 0x0002
     13 #define FX_SAXPARSEMODE_NotConvert_gt 0x0004
     14 #define FX_SAXPARSEMODE_NotConvert_apos 0x0008
     15 #define FX_SAXPARSEMODE_NotConvert_quot 0x0010
     16 #define FX_SAXPARSEMODE_NotConvert_sharp 0x0020
     17 #define FX_SAXPARSEMODE_NotSkipSpace 0x0100
     18 enum FX_SAXNODE {
     19   FX_SAXNODE_Unknown = 0,
     20   FX_SAXNODE_Instruction,
     21   FX_SAXNODE_Declaration,
     22   FX_SAXNODE_Comment,
     23   FX_SAXNODE_Tag,
     24   FX_SAXNODE_Text,
     25   FX_SAXNODE_CharData,
     26 };
     27 class IFX_SAXReaderHandler {
     28  public:
     29   virtual ~IFX_SAXReaderHandler() {}
     30   virtual void* OnTagEnter(const CFX_ByteStringC& bsTagName,
     31                            FX_SAXNODE eType,
     32                            FX_DWORD dwStartPos) = 0;
     33   virtual void OnTagAttribute(void* pTag,
     34                               const CFX_ByteStringC& bsAttri,
     35                               const CFX_ByteStringC& bsValue) = 0;
     36   virtual void OnTagBreak(void* pTag) = 0;
     37   virtual void OnTagData(void* pTag,
     38                          FX_SAXNODE eType,
     39                          const CFX_ByteStringC& bsData,
     40                          FX_DWORD dwStartPos) = 0;
     41   virtual void OnTagClose(void* pTag, FX_DWORD dwEndPos) = 0;
     42   virtual void OnTagEnd(void* pTag,
     43                         const CFX_ByteStringC& bsTagName,
     44                         FX_DWORD dwEndPos) = 0;
     45   virtual void OnTargetData(void* pTag,
     46                             FX_SAXNODE eType,
     47                             const CFX_ByteStringC& bsData,
     48                             FX_DWORD dwStartPos) = 0;
     49 };
     50 class IFX_SAXReader {
     51  public:
     52   virtual ~IFX_SAXReader() {}
     53   virtual void Release() = 0;
     54   virtual int32_t StartParse(IFX_FileRead* pFile,
     55                              FX_DWORD dwStart = 0,
     56                              FX_DWORD dwLen = -1,
     57                              FX_DWORD dwParseMode = 0) = 0;
     58   virtual int32_t ContinueParse(IFX_Pause* pPause = NULL) = 0;
     59   virtual void SkipCurrentNode() = 0;
     60   virtual void SetHandler(IFX_SAXReaderHandler* pHandler) = 0;
     61 };
     62 IFX_SAXReader* FX_SAXReader_Create();
     63 #endif
     64