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

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

Issue 1990003002: Move fgas_sax into individual files in fde. (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
OLDNEW
(Empty)
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 XFA_FGAS_XML_FGAS_SAX_H_
8 #define XFA_FGAS_XML_FGAS_SAX_H_
9
10 #include "core/fxcrt/include/fx_basic.h"
11
12 #define FX_SAXPARSEMODE_NotConvert_amp 0x0001
13 #define FX_SAXPARSEMODE_NotConvert_lt 0x0002
14 #define FX_SAXPARSEMODE_NotConvert_gt 0x0004
15 #define FX_SAXPARSEMODE_NotConvert_apos 0x0008
16 #define FX_SAXPARSEMODE_NotConvert_quot 0x0010
17 #define FX_SAXPARSEMODE_NotConvert_sharp 0x0020
18 #define FX_SAXPARSEMODE_NotSkipSpace 0x0100
19
20 enum FX_SAXNODE {
21 FX_SAXNODE_Unknown = 0,
22 FX_SAXNODE_Instruction,
23 FX_SAXNODE_Declaration,
24 FX_SAXNODE_Comment,
25 FX_SAXNODE_Tag,
26 FX_SAXNODE_Text,
27 FX_SAXNODE_CharData,
28 };
29
30 enum FX_SAXMODE {
31 FX_SAXMODE_Text = 0,
32 FX_SAXMODE_NodeStart,
33 FX_SAXMODE_DeclOrComment,
34 FX_SAXMODE_DeclNode,
35 FX_SAXMODE_Comment,
36 FX_SAXMODE_CommentContent,
37 FX_SAXMODE_TagName,
38 FX_SAXMODE_TagAttributeName,
39 FX_SAXMODE_TagAttributeEqual,
40 FX_SAXMODE_TagAttributeValue,
41 FX_SAXMODE_TagMaybeClose,
42 FX_SAXMODE_TagClose,
43 FX_SAXMODE_TagEnd,
44 FX_SAXMODE_TargetData,
45 FX_SAXMODE_MAX,
46 };
47
48 class CXFA_SAXReaderHandler;
49
50 class CFX_SAXFile {
51 public:
52 CFX_SAXFile();
53 FX_BOOL StartFile(IFX_FileRead* pFile, uint32_t dwStart, uint32_t dwLen);
54 FX_BOOL ReadNextBlock();
55 void Reset();
56 IFX_FileRead* m_pFile;
57 uint32_t m_dwStart;
58 uint32_t m_dwEnd;
59 uint32_t m_dwCur;
60 uint8_t* m_pBuf;
61 uint32_t m_dwBufSize;
62 uint32_t m_dwBufIndex;
63 };
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 };
162
163 #endif // XFA_FGAS_XML_FGAS_SAX_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698