Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fgas / include / fx_sax.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FX_SAX_\r
8 #define _FX_SAX_\r
9 class IFX_SAXReaderHandler;\r
10 class IFX_SAXReader;\r
11 #define FX_SAXPARSEMODE_NotConvert_amp          0x0001\r
12 #define FX_SAXPARSEMODE_NotConvert_lt           0x0002\r
13 #define FX_SAXPARSEMODE_NotConvert_gt           0x0004\r
14 #define FX_SAXPARSEMODE_NotConvert_apos         0x0008\r
15 #define FX_SAXPARSEMODE_NotConvert_quot         0x0010\r
16 #define FX_SAXPARSEMODE_NotConvert_sharp        0x0020\r
17 #define FX_SAXPARSEMODE_NotSkipSpace            0x0100\r
18 enum FX_SAXNODE {\r
19     FX_SAXNODE_Unknown = 0,\r
20     FX_SAXNODE_Instruction,\r
21     FX_SAXNODE_Declaration,\r
22     FX_SAXNODE_Comment,\r
23     FX_SAXNODE_Tag,\r
24     FX_SAXNODE_Text,\r
25     FX_SAXNODE_CharData,\r
26 };\r
27 class IFX_SAXReaderHandler\r
28 {\r
29 public:\r
30     virtual FX_LPVOID   OnTagEnter(FX_BSTR bsTagName, FX_SAXNODE eType, FX_DWORD dwStartPos) = 0;\r
31     virtual void                OnTagAttribute(FX_LPVOID pTag, FX_BSTR bsAttri, FX_BSTR bsValue) = 0;\r
32     virtual void                OnTagBreak(FX_LPVOID pTag) = 0;\r
33     virtual void                OnTagData(FX_LPVOID pTag, FX_SAXNODE eType, FX_BSTR bsData, FX_DWORD dwStartPos) = 0;\r
34     virtual void                OnTagClose(FX_LPVOID pTag, FX_DWORD dwEndPos) = 0;\r
35     virtual void                OnTagEnd(FX_LPVOID pTag, FX_BSTR bsTagName, FX_DWORD dwEndPos) = 0;\r
36     virtual void                OnTargetData(FX_LPVOID pTag, FX_SAXNODE eType, FX_BSTR bsData, FX_DWORD dwStartPos) = 0;\r
37 };\r
38 class IFX_SAXReader\r
39 {\r
40 public:\r
41     virtual void                Release() = 0;\r
42     virtual FX_INT32    StartParse(IFX_FileRead *pFile, FX_DWORD dwStart = 0, FX_DWORD dwLen = -1, FX_DWORD dwParseMode = 0) = 0;\r
43     virtual FX_INT32    ContinueParse(IFX_Pause *pPause = NULL) = 0;\r
44     virtual void                SkipCurrentNode() = 0;\r
45     virtual void                SetHandler(IFX_SAXReaderHandler *pHandler) = 0;\r
46 };\r
47 IFX_SAXReader*  FX_SAXReader_Create();\r
48 #endif\r