Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Side by Side Diff: xfa/fgas/xml/fgas_sax.h

Issue 1930533002: More IFX_ interface cleanup. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fgas/font/fgas_stdfontmgr.cpp ('k') | xfa/fgas/xml/fgas_sax.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef XFA_FGAS_XML_FGAS_SAX_H_ 7 #ifndef XFA_FGAS_XML_FGAS_SAX_H_
8 #define XFA_FGAS_XML_FGAS_SAX_H_ 8 #define XFA_FGAS_XML_FGAS_SAX_H_
9 9
10 #include "core/fxcrt/include/fx_basic.h" 10 #include "core/fxcrt/include/fx_basic.h"
11 11
12 #define FX_SAXPARSEMODE_NotConvert_amp 0x0001 12 #define FX_SAXPARSEMODE_NotConvert_amp 0x0001
13 #define FX_SAXPARSEMODE_NotConvert_lt 0x0002 13 #define FX_SAXPARSEMODE_NotConvert_lt 0x0002
14 #define FX_SAXPARSEMODE_NotConvert_gt 0x0004 14 #define FX_SAXPARSEMODE_NotConvert_gt 0x0004
15 #define FX_SAXPARSEMODE_NotConvert_apos 0x0008 15 #define FX_SAXPARSEMODE_NotConvert_apos 0x0008
16 #define FX_SAXPARSEMODE_NotConvert_quot 0x0010 16 #define FX_SAXPARSEMODE_NotConvert_quot 0x0010
17 #define FX_SAXPARSEMODE_NotConvert_sharp 0x0020 17 #define FX_SAXPARSEMODE_NotConvert_sharp 0x0020
18 #define FX_SAXPARSEMODE_NotSkipSpace 0x0100 18 #define FX_SAXPARSEMODE_NotSkipSpace 0x0100
19 19
20 enum FX_SAXNODE { 20 enum FX_SAXNODE {
21 FX_SAXNODE_Unknown = 0, 21 FX_SAXNODE_Unknown = 0,
22 FX_SAXNODE_Instruction, 22 FX_SAXNODE_Instruction,
23 FX_SAXNODE_Declaration, 23 FX_SAXNODE_Declaration,
24 FX_SAXNODE_Comment, 24 FX_SAXNODE_Comment,
25 FX_SAXNODE_Tag, 25 FX_SAXNODE_Tag,
26 FX_SAXNODE_Text, 26 FX_SAXNODE_Text,
27 FX_SAXNODE_CharData, 27 FX_SAXNODE_CharData,
28 }; 28 };
29 29
30 class IFX_SAXReaderHandler { 30 enum FX_SAXMODE {
31 public: 31 FX_SAXMODE_Text = 0,
32 virtual ~IFX_SAXReaderHandler() {} 32 FX_SAXMODE_NodeStart,
33 virtual void* OnTagEnter(const CFX_ByteStringC& bsTagName, 33 FX_SAXMODE_DeclOrComment,
34 FX_SAXNODE eType, 34 FX_SAXMODE_DeclNode,
35 uint32_t dwStartPos) = 0; 35 FX_SAXMODE_Comment,
36 virtual void OnTagAttribute(void* pTag, 36 FX_SAXMODE_CommentContent,
37 const CFX_ByteStringC& bsAttri, 37 FX_SAXMODE_TagName,
38 const CFX_ByteStringC& bsValue) = 0; 38 FX_SAXMODE_TagAttributeName,
39 virtual void OnTagBreak(void* pTag) = 0; 39 FX_SAXMODE_TagAttributeEqual,
40 virtual void OnTagData(void* pTag, 40 FX_SAXMODE_TagAttributeValue,
41 FX_SAXNODE eType, 41 FX_SAXMODE_TagMaybeClose,
42 const CFX_ByteStringC& bsData, 42 FX_SAXMODE_TagClose,
43 uint32_t dwStartPos) = 0; 43 FX_SAXMODE_TagEnd,
44 virtual void OnTagClose(void* pTag, uint32_t dwEndPos) = 0; 44 FX_SAXMODE_TargetData,
45 virtual void OnTagEnd(void* pTag, 45 FX_SAXMODE_MAX,
46 const CFX_ByteStringC& bsTagName,
47 uint32_t dwEndPos) = 0;
48 virtual void OnTargetData(void* pTag,
49 FX_SAXNODE eType,
50 const CFX_ByteStringC& bsData,
51 uint32_t dwStartPos) = 0;
52 }; 46 };
53 47
54 class IFX_SAXReader { 48 class CXFA_SAXReaderHandler;
49
50 class CFX_SAXFile {
55 public: 51 public:
56 virtual ~IFX_SAXReader() {} 52 CFX_SAXFile();
57 virtual void Release() = 0; 53 FX_BOOL StartFile(IFX_FileRead* pFile, uint32_t dwStart, uint32_t dwLen);
58 virtual int32_t StartParse(IFX_FileRead* pFile, 54 FX_BOOL ReadNextBlock();
59 uint32_t dwStart = 0, 55 void Reset();
60 uint32_t dwLen = -1, 56 IFX_FileRead* m_pFile;
61 uint32_t dwParseMode = 0) = 0; 57 uint32_t m_dwStart;
62 virtual int32_t ContinueParse(IFX_Pause* pPause = NULL) = 0; 58 uint32_t m_dwEnd;
63 virtual void SkipCurrentNode() = 0; 59 uint32_t m_dwCur;
64 virtual void SetHandler(IFX_SAXReaderHandler* pHandler) = 0; 60 uint8_t* m_pBuf;
61 uint32_t m_dwBufSize;
62 uint32_t m_dwBufIndex;
65 }; 63 };
66 IFX_SAXReader* FX_SAXReader_Create(); 64
65 class CFX_SAXItem {
66 public:
67 CFX_SAXItem()
68 : m_pNode(NULL),
69 m_eNode(FX_SAXNODE_Unknown),
70 m_dwID(0),
71 m_bSkip(FALSE),
72 m_pPrev(NULL),
73 m_pNext(NULL) {}
74 void* m_pNode;
75 FX_SAXNODE m_eNode;
76 uint32_t m_dwID;
77 FX_BOOL m_bSkip;
78 CFX_SAXItem* m_pPrev;
79 CFX_SAXItem* m_pNext;
80 };
81
82 class CFX_SAXCommentContext {
83 public:
84 CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
85 int32_t m_iHeaderCount;
86 int32_t m_iTailCount;
87 };
88
89 class CFX_SAXReader {
90 public:
91 CFX_SAXReader();
92 ~CFX_SAXReader();
93
94 void Release() { delete this; }
95 int32_t StartParse(IFX_FileRead* pFile,
96 uint32_t dwStart = 0,
97 uint32_t dwLen = -1,
98 uint32_t dwParseMode = 0);
99 int32_t ContinueParse(IFX_Pause* pPause = NULL);
100 void SkipCurrentNode();
101 void SetHandler(CXFA_SAXReaderHandler* pHandler);
102 void AppendData(uint8_t ch);
103 void AppendName(uint8_t ch);
104 void ParseText();
105 void ParseNodeStart();
106 void ParseInstruction();
107 void ParseDeclOrComment();
108 void ParseDeclNode();
109 void ParseComment();
110 void ParseCommentContent();
111 void ParseTagName();
112 void ParseTagAttributeName();
113 void ParseTagAttributeEqual();
114 void ParseTagAttributeValue();
115 void ParseMaybeClose();
116 void ParseTagClose();
117 void ParseTagEnd();
118 void ParseTargetData();
119
120 protected:
121 void Reset();
122 void Push();
123 void Pop();
124 FX_BOOL SkipSpace(uint8_t ch);
125 void SkipNode();
126 void NotifyData();
127 void NotifyEnter();
128 void NotifyAttribute();
129 void NotifyBreak();
130 void NotifyClose();
131 void NotifyEnd();
132 void NotifyTargetData();
133 void ReallocDataBuffer();
134 void ReallocNameBuffer();
135 void ParseChar(uint8_t ch);
136
137 CFX_SAXFile m_File;
138 CXFA_SAXReaderHandler* m_pHandler;
139 int32_t m_iState;
140 CFX_SAXItem* m_pRoot;
141 CFX_SAXItem* m_pCurItem;
142 uint32_t m_dwItemID;
143 FX_SAXMODE m_eMode;
144 FX_SAXMODE m_ePrevMode;
145 FX_BOOL m_bCharData;
146 uint8_t m_CurByte;
147 uint32_t m_dwDataOffset;
148 CFX_ByteArray m_SkipStack;
149 uint8_t m_SkipChar;
150 uint32_t m_dwNodePos;
151 uint8_t* m_pszData;
152 int32_t m_iDataSize;
153 int32_t m_iDataLength;
154 int32_t m_iEntityStart;
155 int32_t m_iDataPos;
156 uint8_t* m_pszName;
157 int32_t m_iNameSize;
158 int32_t m_iNameLength;
159 uint32_t m_dwParseMode;
160 CFX_SAXCommentContext* m_pCommentContext;
161 };
67 162
68 #endif // XFA_FGAS_XML_FGAS_SAX_H_ 163 #endif // XFA_FGAS_XML_FGAS_SAX_H_
OLDNEW
« no previous file with comments | « xfa/fgas/font/fgas_stdfontmgr.cpp ('k') | xfa/fgas/xml/fgas_sax.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698